Предмет: Информатика, автор: gvozdb27

Всем, привет.

Помогите, пожалуйста, с задачей.

Код написан, но программа падает с ошибкой, при определённых вводимых данных.

(язык Python)

Спасибо!

def change(summ, n):
~~num_count = 0
~~temp = n

~~while temp > 0:
~~~~num_count += 1
~~~~temp = temp // 10

~~last_digit = n % 10
~~first_digit = n // 10 ** (num_count - 1)
~~between_digits = n % 10 ** (num_count - 1) // 10
~~n = last_digit * 10 ** (num_count - 1) + between_digits * 10 + first_digit
~~print('Изменённое число:', n)
~~summ += n
~~return summ
number = int(input('\nВведите первое число: '))
summa = 0
if abs(number) > 99:
~~summ = change(summa, number)
else:
~~print('В первом числе должно быть не менее трех цифр.')

n = int(input('\nВведите второе число: '))
if abs(n) > 999:
~~summ = change(summ, n)
else:
~~print('Во втором числе должно быть не менее четырех цифр.')

if abs(n) > 999 or abs(number) > 99:
~~print('\nСумма чисел:', summ)
else:
~~print('\nОшибка, попробуйте снова.')


gvozdb27: условие: Вы всё так же работаете в конторе по разработке игр и смотрите различные программы прошлого горе-программиста. В одной из игр для детей, связанной с мультяшной работой с числами, вам нужно было написать код по следующим условиям: программа получает на вход два числа. В первом числе должно быть не меньше трёх цифр, во втором числе — не меньше четырёх, иначе программа выдаёт ошибку. \
gvozdb27: Если всё нормально, то в каждом числе первая и последняя цифра меняются местами, а затем выводится их сумма. И тут вы натыкаетесь на программу, которая была написана прошлым программистом и которая как раз решает такую задачу! Однако старший программист сказал вам немного переписать этот код, чтобы он не выглядел так ужасно. Да и вам самим становится, мягко говоря, не по себе от него.
gvozdb27: Разбейте приведённую ниже программу на функции. Повторений кода должно быть как можно меньше. Также сделайте, чтобы в основной части программы был только ввод чисел, затем изменённые числа и вывод их суммы.
igorShap: У Вас в основной части программы есть переменная summa, а есть переменная summ. По логике действий, это должна быть одна переменная - но у Вас почему-то это не так
igorShap: Вероятно, в 25 строке ~~summ = change(summ, n) Вы пытаетесь передать в функцию переменную summ, которой нет в области видимости, ведь объявили Вы ее впервые в теле if . Опять же, все дело в том, что у Вас почему-то вместо одной переменной summa, которой будет присваиваться значение, возвращаемое функцией change, и которая в эту функцию и должна передаваться [что неоптимально, но речь сейчас о другом]
igorShap: переменных две
gvozdb27: не совсем понятно, можно прям в коде указать?\
igorShap: Что указать в коде? Причину, почему ошибка возникает? Так я уже указал, 25 строка ~~summ = change(summ, n), в функцию передается переменная, которой нет в области видимости.
igorShap: И первопричину указал - вместо одной переменной summa, объявленной в основной части программы, у Вас возникает, почему-то, 2: summa и summ, что приводит также и к ошибке реализации алгоритма
chegodaevnick: а скиньте, пжлст, входные данные

Ответы

Автор ответа: chegodaevnick
1

Ответ:

Объяснение:

в 27 строке неопознанное имя summ

из за этого вся ошибка

поменяйте на summa

там где summ = cange(summa, n)

Приложения:
Похожие вопросы
Предмет: Французский язык, автор: 0935050207
Предмет: Русский язык, автор: алинка168
Предмет: Английский язык, автор: jora12
Предмет: Окружающий мир, автор: katyaway18
Предмет: Английский язык, автор: 12Евгения1