如果我试图提示用户输入街道名称并输入#符号,我想返回错误并循环回到顶部,直到他们输入有效名称。
代码:
def streetname():
while True:
try:
nameinput = str(input("Please enter a street name: "))
except Exception: # want to print error == if nameinput.find('#') > -1:
print("Error: name contains #, please try again")
continue
break
return nameinput
代码目标:我想提示用户输入街道名称,直到他们输入有效名称。如果它包含'#',则打印错误并重试。如果它有效,则返回nameinput。
我不太确定如何使用try和if if语句
答案 0 :(得分:2)
您可能不应该使用try...except
进行如此简单的输入检查,如果单独检查就可以轻松完成。
def streetname():
while True:
nameinput = input("Please enter a street name: ")
if "#" in nameinput:
print("Error: name contains #, please try again")
continue
return nameinput
如果你发现了#'#'在字符串中只需重新启动循环,否则只需返回函数名称。
此外input
已在Python 3中返回str
,因此无需转换它。在Python 2中,您应该使用raw_input
代替str
。
答案 1 :(得分:1)
首先,您正在使用python的常规异常类。一个带有井号的字符串不会触发任何python的本机异常,你必须编写自己的异常类然后调用它......或者你可以做这样的事情
if '#' in nameinput: #pound sign was found in the string
#either raise an Exception
raise('Can not use pound sign') # though this will probably break the while loop
# or
print 'can not use pound sign'
continue # to go back to the top of the while loop and prompt the user again