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

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

Если пользователь вводит любое число, которое не соответствует условию, он должен снова получить подсказку независимо от счетчика (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()
Другие вопросы по тегам