Я нахожусь в середине очень сложного задания для школы. Я пробовал несколько дней, и я думаю, что я, наконец, почти закончил, но ... Я снова застрял и не знаю почему.A while цикл в моей программе имеет несколько ifs, но никогда не достигает нижней?
Я должен позволить пользователю заполнить номер invoer (Dutch)/input. Это число должно быть меньше или равно 50. Это число определяет, сколько еще вводимых данных пользователь может сделать - эти новые входы являются тестовыми примерами. Каждый тестовый пример должен быть числом больше 0, но равным или ниже 100. Не требуется углубляться в работу с плохим вводом, поэтому для этого я использую только базовую обработку.
Тогда то, что должно быть проверено для каждого тестового примера, является наименьшим числом, которое делится на тестовый пример, но сумма отдельных цифр этого наименьшего числа должна равняться самому тестовому случаю. Таким образом, в примере они указывают: input = 1 (что означает 1 тестовый пример, но они не утверждают, что), вход 2 = 10 (это означает, что ваш единственный тестовый пример - это номер 10, но они не указывают это). То, что он отправляет, - это номер 190 (это потому, что 190/10 = 19, так что это правильный результат, но 1 + 9 + 0 = 10, так что он проходит второй тест, но опять же, они этого не говорят. Я должен был все это выяснить, поэтому ассимиляция берет меня так долго ... сам вопрос находится на голландском языке и почти не дает вам никакой информации вообще).
Так что моя программа проверяет, если я вводю номер 25 в качестве тестового примера, например, 25/25 = 1, поэтому действительный и 2 + 5 = 7. Однако после вычисления этого числа 7 он никогда не кажется проверьте второе условие. Сумма цифр должна быть 25, а не 7. Теперь программа запускается в бесконечный цикл, и я не вижу, что не так.
Я отправлю свой код ниже. Я прошу прощения за имена переменных и печатный текст, так как они находятся на голландском языке. Надеюсь, я достаточно четко объяснил смысл всего этого.
import sys
invoer = int(input('Vul het aantal testgevallen in: '))
if invoer <= 50:
invoer = invoer
else:
print('Het getal moet groter kleiner dan of gelijk aan 50 zijn!!')
sys.exit()
t = 0
testgevallen = []
while t < invoer:
invoer2 = int(input('Vul een testgeval in groter dan 0 en kleiner of gelijk aan 100: '))
if 0 < invoer2 <= 100:
print('Testgeval ', t + 1, 'is: ', invoer2)
testgevallen.append(invoer2)
t += 1
print('Array is ', testgevallen)
else:
print('Het getal moet groter zijn dan 0 en kleiner of gelijk aan 100!!')
sys.exit()
t = 0
while t < invoer:
print('Opgegeven nummer ', t + 1, ' is ', testgevallen[t])
vermenigvuldiging = 1
doorgaan = True
while doorgaan == True:
getal = testgevallen[t] * vermenigvuldiging
if testgevallen[t] % getal == 0:
print(getal, ' - Dit getal is deelbaar door ', testgevallen[t])
som = sum(map(int, str(getal)))
print(som)
if som == testgevallen[t]:
print('Output moet zijn: ', som)
doorgaan = False
else:
doorgaan = True
else:
doorgaan = True
vermenigvuldiging += 1
t += 1
doorgaan = doorgaan
Надеюсь, вы, ребята, можете мне помочь. Большое спасибо за ваше время заранее, я знаю, что это довольно стена текста.
Пожалуйста, укажите проблему ясно. При необходимости используйте номера. Затем укажите пример ввода и ожидаемую комбинацию вывода! Помогает! – Ehsan
Я думаю, что вы забыли прирастить t ниже <"if som == testgevallen [t]: print ('Output moet zijn:', som) doorgaan = False> –
Более питонический способ сделать первый' while t
CAB