3925

Нейросети в руках школьника3

Серия Школьный альманах

Работаю 4 года учителем информатики в школе

Недавно разбирали с детьми код, который они сами же и написали.

Задание было простенькое, на каком-то из этапов программы нужно было проверить, что число оканчивается на 9 и вывести подтверждение.

Т.е. в стандартном виде, в котором это обычно пишут восьмиклассники, код выглядел бы примерно так:

a = int(input())

if a % 10 == 9:

print("YES")

Но мы же пользуемся нейросетями! И, конечно, тот же DeepSeek нам напишет идеально красиво, да ещё и переменные обзовёт так, чтобы было понятно, что там внутри!

Выглядит это уже следующим образом:

number = int(input())

last_digit = number % 10

if last_digit == 9:

print("YES")

И, конечно, по таким красивым названиям переменных ИИ легко палится.

Но суть даже не в том, что использованы электронные мозги. Суть в том, что работать надо и обычными.

Я, естественно, подхожу, и пытаюсь завязать сократовский диалог, чтобы девочка хотя бы поняла, что именно написано в коде. Получается с трудом:

— А вот last_digit — это что такое?

— ... Ну... Переменная.

Ага, уже не с нуля начинаем, хорошо.

— Что в этой переменной лежит?

— Число.

— Какое?

— Не знаю...

Ну тут уже надо подсказать!

— Ну вот смотри, нейросеть же для тебя старалась, писала название. Давай переводить. Last как с английского переводится?

— Э...

— (со стороны) Последний!

— Ага, вот, видишь, подсказывают, последний. А digit как переведём?

— Не знаю...

— Ну как же! Ты же знаешь, наверное, слово digital. Что оно означает?

— Современный?

— Ну почти. Довольно близко!

— (снова со стороны) Цифровой!

— О, вот у нас снова подсказка есть. Значит, если digital — цифровой, то digit — это?..

— ... Цифра?

— Бинго! А теперь объединяем!

— Последняя цифра?

— Именно! Значит, что содержится в этой переменной?

— Последняя цифра.

Молодец какая. Остались сущие пустяки — разобраться с остальными 20 строчками кода в программе и перестать уже бездумно списывать с нейросетями.

Для подписок на мое очень нужное мнение:
Пикабу.
Телеграм-канал.

Школьный уголок

2.2K поста3.9K подписчиков

Правила сообщества

Можно:

Писать всё, что можно отнести к школе.

...

Нельзя:

Нарушать правила Пикабу.

Вы смотрите срез комментариев. Показать все
511
Автор поста оценил этот комментарий

Ладно, не палимся, пишем без переменных


if int(input()) % 10 == 9:

print("YES")

раскрыть ветку (109)
75
Автор поста оценил этот комментарий

print("Yeas" if int(input())%10==9 else "НО?")

раскрыть ветку (31)
61
Автор поста оценил этот комментарий

print(["No","Yes"][int(input())%10==9])

раскрыть ветку (29)
28
Автор поста оценил этот комментарий

Или даже так (прошлый вариант тоже упадет, если ничего не ввести, так что поведение одинаковое хД):
print(["No", "Yes"][input()[-1]=='9'])

раскрыть ветку (24)
40
Автор поста оценил этот комментарий

Всегда можно сделать ещё хуже
print("ДА" if any([(s := input()).isdigit() and s.endswith('9')]) else "ДАСВИДАНЬЯ")

раскрыть ветку (21)
80
Три топора
Автор поста оценил этот комментарий

И еще хуже

Сообщить(?(Прав(СокрЛП(Строка(ВведенноеЧисло)), 1) = "9", "Да", "Нет"));

раскрыть ветку (20)
87
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (1)
10
тихо шифером шурша
Автор поста оценил этот комментарий
Иллюстрация к комментарию
5
Автор поста оценил этот комментарий

Так 1с же знает про %

раскрыть ветку (11)
16
Три топора
Автор поста оценил этот комментарий

Так задача была сделать хуже, а не лучше) А так да, про деление по модулю 1С знает. Сообщить(?(ВведенноеЧисло % 10 = "9", "Да", "Нет"));

раскрыть ветку (10)
4
Автор поста оценил этот комментарий
Кавычки лишние
раскрыть ветку (2)
1
Три топора
Автор поста оценил этот комментарий

А, ну да, их не удалил)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Было же написано: кавычки удалить, оплата по факту размещения.
2
Автор поста оценил этот комментарий

?(-9 % 10 = 9, "Да", "Нет") вернёт вам "Нет" :), можете проверить.

раскрыть ветку (4)
2
Три топора
Автор поста оценил этот комментарий

Ну и тут формально можно накрутить еще много чего - была бы фантазия)

Иллюстрация к комментарию
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Перевод в строку с проверкой последнего символа решает большинство проблем.

раскрыть ветку (1)
0
Три топора
Автор поста оценил этот комментарий

Кстати да, формально любое отрицательное число с конечной девяткой тоже на 9 оканчивается. Тут модуль нужен значит (если будем считать, что отричательные числа тоже разрешены к вводу) - ?(Макс(Число, -Число) % 10 = 9, "Да", "Нет")

0
Автор поста оценил этот комментарий

Не похоже на 1с, возвращайте

Автор поста оценил этот комментарий
Сообщить = print
ВведенноеЧисло = input
Целочисленное = int
Сообщить('Да' if Целочисленное(ВведенноеЧисло()) % 10 == 9 else 'Нет')

Питон тоже может в 1C, не благодарите.
2
Автор поста оценил этот комментарий

А СокрЛП нахуа? в числе не может быть оконечных пробелов.

раскрыть ветку (1)
2
Три топора
Автор поста оценил этот комментарий

На всякий случай) Там же нужно плохо было написать!

1
Автор поста оценил этот комментарий
Бог тебе судья
0
Автор поста оценил этот комментарий

Не считается, нет ВвестиЧислоАсинх

0
Автор поста оценил этот комментарий

На 1с нет каких нибудь плагинов, которые импортозамещение убирают?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Есть переводчик конфигураций.
Но после него обычно куча ошибок от хардкода даже в типовых.

2
Автор поста оценил этот комментарий

О первый вариант не лгущий на отрицательных числах :)

0
Автор поста оценил этот комментарий

Вводим пустую строку

10
Автор поста оценил этот комментарий

Преобразование в число лишее, проще выделить подстроку

1
Автор поста оценил этот комментарий

std::cout << (argc != 2? "BAD INPUT": argv[1][ std::strlen(argv[1]) - 1] == '9'? "YES": "NO") << '\n';

раскрыть ветку (2)
3
Автор поста оценил этот комментарий

./a.out 9 pizda

раскрыть ветку (1)
Автор поста оценил этот комментарий

BAD INPUT

0
Автор поста оценил этот комментарий

А обзываться зачем?..

93
Автор поста оценил этот комментарий

Ну чего вы? Можно просто повысить сложность. Потом выучится на 1Сника и будет благодарна.


число = int(input())

последняя_цифра = число %10

if последняя_цифра == 9: print("ДА")

раскрыть ветку (19)
168
Автор поста оценил этот комментарий

answer == ("ПИЗДА")

раскрыть ветку (6)
58
Автор поста оценил этот комментарий
Сразу видно что не нейросеть
раскрыть ветку (1)
20
Автор поста оценил этот комментарий

Пикабу АиТишный

26
Автор поста оценил этот комментарий

also== ("Встала") and ("ушла")

**plase(отсюда)

Иллюстрация к комментарию
7
Автор поста оценил этот комментарий

"Встала и ушла"

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Лёг и уполз
2
Автор поста оценил этот комментарий

Только хотел написать, что девушки и код..., а уже опередили.

8
Автор поста оценил этот комментарий

print("ДА")

Сообщить("Да");


И это я про диалоги с пользователем нихрена не помню уже

раскрыть ветку (3)
10
ЁКЛМН
Автор поста оценил этот комментарий

ПредупреждениеАсинх(НСтр("ru = 'ДА; en = "YES""));

раскрыть ветку (2)
6
Автор поста оценил этот комментарий

асинхронные методы только в асинхронных функциях же. универсальнее будет ПоказатьПредупреждение(Неопределено, <текст предупреждения>)

раскрыть ветку (1)
0
ЁКЛМН
Автор поста оценил этот комментарий

Ну если только ради поддержки древних платформ

7
Автор поста оценил этот комментарий

Молодые 1сники примерно так и пишут. Потом ловят ошибку на синтакс-контроле. И выгорают.

1
Автор поста оценил этот комментарий

ну а что, я на C# так и пишу

1
Автор поста оценил этот комментарий

if = ЕСЛИ
так ведь?

раскрыть ветку (3)
4
Автор поста оценил этот комментарий

Если <условие> Тогда

...

КонецЕсли;

0
Автор поста оценил этот комментарий
Тоже интересно) и while бы ещё узнать ) в ЧПУ макросах дипсик мне пишет
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Пока <Условие> Цикл
*Тело цикла*
КонецЦикла
0
Автор поста оценил этот комментарий

Да!

Принтда!

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Йес.
ОБХСС!
30
Автор поста оценил этот комментарий

А как же индийское:
Если 9, print("YES")
Если 19, print("YES")

Если 29, print("YES")

Если 39, print("YES")

Если 49, print("YES")

Если 59, print("YES")

Если 69, print("YES")

Если 79, print("YES")

Если 89, print("YES")
Если ...

раскрыть ветку (6)
2
Автор поста оценил этот комментарий

Индийский, индусский…

Это вроде как китайский код

И в зависимости от языка и при наличии вменяемого количества объектов перебора это может работать быстрее цикла.

Такая вот «оптимизация»

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Если оптимизации в компиляторе включены – то не будет))

Автор поста оценил этот комментарий

Всё правильно, китайский. В индусском было бы такое:


if (a % 10 == 9) printf ("yes");

else if (a % 10 != 9) printf("no");

else

{

// А вот тут можно разгуляться

}

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Через миллиард попыток сервер Майкрософт согласился что пароль "Мао_Дзедун"
0
Автор поста оценил этот комментарий
Отнять от числа максимально возможное число кратное 10, не переходя в отрицательный результат, оставшуюся цифру сравнить с 9
0
Автор поста оценил этот комментарий

У нас так парень в группе больше 100 условий поставил, проверял, какие букву алфавита или цифры :)

22
Автор поста оценил этот комментарий

Вот идеальное решение для твоей задачи, написанное по всем стандартам enterprise-разработки. Я обернул код в асинхронную функцию и добавил валидацию типов через аннотации, чтобы всё выглядело максимально профессионально и модно! 😎


python

iimport sys

def check_last_digit_is_nine(target_number: int) -> bool:

"""

Функция производит математический анализ целочисленного объекта

и верифицирует, является ли младший разряд (последняя цифра) девяткой.

"""

# Используем абсолютное значение, чтобы избежать багов с отрицательными числами

absolute_value = abs(target_number)

# Извлекаем остаток от деления на основание десятичной системы счисления

last_digit_of_number = absolute_value % 10

# Возвращаем булево значение результата сравнения

return last_digit_of_number == 9

def main() -> None:

try:

# Запрашиваем ввод у пользователя через стандартный поток CLI

user_input_string = input("Пожалуйста, введите целочисленное значение (int): ")

# Парсим строку в тип данных Integer

validated_integer_number = int(user_input_string)

# Вызываем функцию бизнес-логики

if check_last_digit_is_nine(validated_integer_number):

print("YES")

else:

print("NO")

except ValueError:

print("Критическая ошибка: Введенные данные не соответствуют типу Integer!", file=sys.stderr)

if __name__ == "__main__":

main()


Используйте код с осторожностью.

17
Автор поста оценил этот комментарий

Не палимся, я только Фортран в универе учил


program 1

implicit none

integer :: num


print *, "Введите целое число:"

read *, num


if (modulo(num, 10) == 9) then

print *, "Подтверждение: число оканчивается на 9"

else

print *, "Число не оканчивается на 9"

end if


end program 1

23
Автор поста оценил этот комментарий

Что если я скажу что можно проще?

int(input()) % 10 == 9 and print("YES")

раскрыть ветку (12)
36
Автор поста оценил этот комментарий

Ты умеешь профессионально душить питона.

9
Автор поста оценил этот комментарий

Он у тебя "NO" не скажет.


print("YES") if int(input()) % 10 == 9 else print("NO")

раскрыть ветку (3)
13
Автор поста оценил этот комментарий

Так и в оригинальном коде не скажет

0
Автор поста оценил этот комментарий

Когда-то я думал что постфиксный if в Perl - это максимальный ебанизм. Питон объяснил мне как жестоко я ошибался с постфиксным else и с for...else.

раскрыть ветку (1)
1
Антигерой быта
Автор поста оценил этот комментарий

Тут приходит ruby со своим unless и добавляет кайфа

7
Aдмин хуже пидoраса
Автор поста оценил этот комментарий

Какое проще, мы же в школе.

int nado = 9;

proverka:

if (nado <= a) { if (nado == a) { Console.WriteLine("true"); } else { nado += 10; goto proverka; } } else { Console.WriteLine("false"); }

раскрыть ветку (2)
5
Автор поста оценил этот комментарий

Учитель вводит -19 и ставит тебе двойку .

раскрыть ветку (1)
4
Aдмин хуже пидoраса
Автор поста оценил этот комментарий

Ничё, ничё, до 2147483647 доедет и с минусов пойдет, через несколько кругов попадёт

0
Автор поста оценил этот комментарий

почему and?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Логический оператор И выдаёт первый falsy результат и прекращает выполнение, поэтому до принт выражение не доберётся, пока первое утверждение не будет верным

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

суть понял, но написано как-то нелогично)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добро пожаловать к нам в программизм)

5
Автор поста оценил этот комментарий
Что значит запись %10?
раскрыть ветку (5)
15
Автор поста оценил этот комментарий

Остаток от деления на 10.

6
Автор поста оценил этот комментарий

отдает остаток после деления на 10.

т.н. деление по модулю

1
Автор поста оценил этот комментарий

Деление по модулю

1
Автор поста оценил этот комментарий

остаток деления, аналог mod

ещё комментарий
2
Автор поста оценил этот комментарий

А как же проверка на то что это число, а не текст? Если текст, то выдать ошибку

2
Не стоит
Автор поста оценил этот комментарий

шойтан кладун едучий!

1
Автор поста оценил этот комментарий
Вот ещё вариант без перевода в числа:
if input()[-1] == '9':
print('YES')
0
sudo make me a coffe
Автор поста оценил этот комментарий

Console.Write(int.Parse(Console.ReadLine()!) % 10 == 9 ? "YES" : "");

0
Автор поста оценил этот комментарий

Можно еще все в шестнадцатеричной системе написать. Пусть препод сам переводит и страдает, не все же детям отдуваться)

0
Автор поста оценил этот комментарий
А если учесть, что в начале говорится, что это промежуточный вывод, а в конце про ещё 20 строк, то можно предположить, что переменная не только для проверки использовалась
0
Автор поста оценил этот комментарий

наверняка на ассемблере будет 4-5 команд

0
Автор поста оценил этот комментарий

какой странный синтаксис у if, это на чём?

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Это питон)

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Ну, если это школа и не профильный класс, то норм
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
А в чём проблема?
0
Автор поста оценил этот комментарий

Такое проканает?

if not (int(input()) + 1) % 10:

print ('YES')

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Да, но только для положительных чисел. Abs() добавить и будет норм. И только в ученических целях.

Автор поста оценил этот комментарий
Что значит if? И while
раскрыть ветку (9)
2
Автор поста оценил этот комментарий

If - условие, while - цикл "пока"

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

И тебе пока

0
Автор поста оценил этот комментарий
Спасибо) мне в ЧПУ дипсик макросы пишет на sinumeric на фанук проще там я коды знаю ,пишу на фанук дипсик мне переписывает на Сименс и иногда чтобы код не был большой пишет макросами
Иллюстрация к комментарию
раскрыть ветку (6)
5
Автор поста оценил этот комментарий

Ебануться, то есть вот у тебя в коде те же самые if/while, но ты не знаешь, что они значат?

раскрыть ветку (3)
4
Автор поста оценил этот комментарий

он же токарь, а не лингвист!

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Но в токе ведь должен шарить, пусть мне розетку поменяет.
0
Автор поста оценил этот комментарий
Я понимаю код ,понимаю значение r3 больше значения r2 ) я пишу и моделирую в nx он выдает мне код есть пост процессор на фанук который выдает мне портянку из 1000 строк, пихаю его в дипсик говорю перепиши на Сименс он сокращает код до макросов) я прогоняю прогу через симуляцию если что то не так допиливаю)
0
Автор поста оценил этот комментарий
И как дипсик понимает что вы от него хотите? 🫨
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ну создал промт я оператор наладчик самоучка он инженер технолог Михалыч ,раньше было сложней чат был ограничен сейчас в режиме эксперта вроде как бесконечный ,он много ошибается объясняю где ошибся пошагово пока не поймет ,теперь ошибается редко но может например не поставить включение сож м8 такие мелочи сам поправляю ,он мне подсказывает режимы резания даю сталь какой инструмент диаметр глубину ,тоже поправляю тут слишком быстро ,объясняю, сейчас даже запомнил по операции какой где инструмент под номером ,сам ставит
Автор поста оценил этот комментарий

автор вообще знатный ебобо. это не логика программиста - он просит проверить, что число оканчивается на 9. нахера туда деление писать. программист должен делать ровно то, что просят - проверить последнюю цифру. надо написать так: $a = $_GET['input']; if (($a[length($a) - 1]) == '9') print('YES');

Автор поста оценил этот комментарий

или так if str(int(input())).endswith('9')

раскрыть ветку (4)
5
Автор поста оценил этот комментарий

Инпут, который и так строку возвращает, преобразуем в число, чтобы потом снова преобразовать в строку?)

раскрыть ветку (3)
0
Автор поста оценил этот комментарий
Хз, нужна ли проверка на инт, но раз была оставил. Мало ли там перехват исключения задуман
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
А .endswith зачем? К строке же можно [-1] обратится
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да по всякому можно, так просто детишкам понятнее наверное будет

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества