Почему моя программа не принимает данные пользователя более двух раз? - PullRequest
0 голосов
/ 19 июня 2020

Вопрос: «Напишите программу, в которой пользователь будет вводить слова до тех пор, пока не будет введено слово« выход ». Отображение числа, которое представляет все набранные символы, за исключением последнего слова« выход ».

Здесь я пытаюсь написать код без использования for / while l oop. Мой код:

def num():
summ = 0
inp = input ("Enter: ")

if inp != "quit":
    for w in inp:
        summ += 1

    inp = input("Enter: ")
else:
    return (summ)

print(num())

Я использую Python 3.7. Даже я беру пользователя input в строке 9, но он все еще не принимает вводимые пользователем данные снова и снова, пока пользователь не напишет «выйти». Могу я узнать, почему это неправильно? Могу ли я написать эту программу, не используя l oop? Большое спасибо за помощь мне.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Оператор if не является al oop, поэтому ваш внутренний for l oop будет выполняться столько раз: the length of the first input. Ваш лучший лучший результат - al oop. В этом случае while кажется подходящим:

def num():
    summ = 0
    inp = input ("Enter: ")

    while inp != "quit":
        for w in inp:
            summ += 1
        inp = input("Enter: ")
    else:
        return (summ)

print(num())
0 голосов
/ 19 июня 2020

Если вы хотите, чтобы ваша программа работала как al oop, вам нужно вызывать функцию изнутри вашей функции (рекурсия)

def num(summ = 0):
    inp = input ("Enter: ")

    if inp != "quit":
        for w in inp:
            summ += 1

        return num(summ) // Call the function again to continue the program
    else:
        return summ // Return the sum

print(num())

Вам также необходимо передавать вашу переменную summ при каждом вызове .

Примечание: summ = 0 означает, что если вы не передаете аргумент, он должен по умолчанию равняться 0

Надеюсь, это поможет.

...