为啥我的程序接受用户输入的次数不超过两次?

Posted

技术标签:

【中文标题】为啥我的程序接受用户输入的次数不超过两次?【英文标题】:Why my program is not taking user's input more than twice?为什么我的程序接受用户输入的次数不超过两次? 【发布时间】:2020-06-19 02:53:25 【问题描述】:

问题是:“编写一个程序,让用户输入单词,直到输入单词“quit”。显示代表所有键入字符的数字,除了最后一个单词“quit”。

在这里,我尝试在不使用 for/while 循环的情况下编写代码。我的代码是:

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。即使我在第 9 行接受用户输入,它仍然不会一次又一次地接受用户输入,直到用户写“退出”。我可以知道为什么这是错误的吗?我可以在不使用任何循环的情况下编写这个程序吗? 非常感谢你帮助我。

【问题讨论】:

【参考方案1】:

如果你想让你的程序像一个循环一样,你需要从你的函数中调用你的函数(递归)

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

希望这会有所帮助。

【讨论】:

【参考方案2】:

if 语句不是循环,因此您的内部for 循环将执行多次:the length of the first input。 你最好的最好是一个循环。在这种情况下,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())

【讨论】:

以上是关于为啥我的程序接受用户输入的次数不超过两次?的主要内容,如果未能解决你的问题,请参考以下文章

操纵对话流的意图实体

在默认的 ASP.NET Core 项目中,为啥“忘记密码”功能会要​​求用户输入两次电子邮件?

验证用户字符串用户输入

为啥我不能在我的 pygame 文本框中输入超过 1 个字母? [复制]

接受和提示的用户输入

实现让用户不断的猜年龄,但只给最多3次机会,超过次数猜不对就退出程序。