【发布时间】:2020-08-18 19:49:36
【问题描述】:
我正在尝试在 Python 中创建一个要求用户输入的脚本,它应该会在响应“请输入名字”时出错,然后将用户返回到初始输入问题提示。
这不起作用,而是在询问名字和姓氏之后,如果没有为两者提供名字,我会陷入第一个错误的无限循环。
# User input for first name
first_name = input('Enter FIRST name here: ')
# User input for last name
last_name = input('Enter LAST name here: ')
def print_name():
# store user input in separate variable
fname = first_name
lname= last_name
while True:
# throw error if user enters no first name
if len(fname) == 0:
# error msg
print('No FIRST name entered...')
# loop back to prompt asking for first name
continue
else:
# if first name given move on to prompting for last name
# break loop
break
# loop into prompting user for last name
while True:
# throw error if user enters no last name
if len(lname) == 0:
print('No LAST name entered...')
# loop back to prompt asking for last name
continue
else:
# if last name given move on to running print command
# break loop
break
return fname, lname
print(f'your name is {fname} {lname}')
print_name()
请有人帮我理解这里出了什么问题吗?它应该只在没有给出任何内容时循环回询问名字(或姓氏),否则它应该将用户名打印到控制台。两个名字也应该给出,如果没有给出名字,那么 id 期望在第一个 while 循环中出错,同样如果没有给出姓氏。
还有更好的方法吗?使用 2 个 while 循环似乎是错误的?
【问题讨论】:
-
你进入了一个无限循环,因为
len(fname)永远不会改变。您需要再次请求输入,这次将其存储为fname。 -
你写一个函数如何循环,直到它从用户那里得到一个非空字符串,然后返回它?然后你可以调用它两次来得到这两个名字。
标签: python python-3.x while-loop infinite-loop