Привет всем. я хотел бы написать программу, которая предлагает пользователю ввести пять чисел и проверить условия [закрыто]
Я хотел бы написать программу, предлагающую пользователю ввести пять чисел и проверить условия.
Если пользователь вводит любое число, которое не соответствует условию, он должен снова получить подсказку независимо от счетчика (5), а затем добавить эти числа в список.
Есть идеи или предложения?
def main():
numbers = []
for num in range(5):
num = int(input())
num = checkNum(num)
numbers.append(num)
print(numbers)
def checkNum(num):
while num > 1 and num < 99:
if num % 2 == 0:
return num
else:
continue
num = int(input())
main()
2 ответа
В вашем коде, если меньше 2 или больше 98, цикл в
checkMain()
не выполняется. Но тогда функция в этом случае ничего не возвращает. Итак, вы получаете
None
. Кроме того, если это нечетное число от 1 до 99, вы получите бесконечный цикл. Это потому, что если нечетное, он продолжает цикл с начала, но
num
значение никогда не меняется.
Я думаю, что было бы лучше перенести обработку пользовательского ввода в. Так,
checkNum()
должно быть -
def checkNum():
while True:
num = int(input())
if (0 == num % 2) and (1 < num < 99):
return num
main()
должно быть как -
def main():
numbers = []
for _ in range(5):
num = checkNum()
numbers.append(num)
print(numbers)
Попробуйте этот подход (рекурсия)
def checkNum(num):
if 1 < num < 99 and num % 2 == 0:
return num
else:
return checkNum(int(input()))
def main():
numbers = []
for num in range(5):
num = int(input())
numbers.append(checkNum(num))
print(numbers)
main()
Самый элегантный способ,
def checkNum(num):
return num if 1 < num < 99 and num % 2 == 0 else checkNum(int(input()))
def main():
print([checkNum(int(input())) for _ in range(5)])
main()