为啥我的程序接受用户输入的次数不超过两次?
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 项目中,为啥“忘记密码”功能会要求用户输入两次电子邮件?