尝试使用Python中的If语句除外

时间:2016-06-02 15:00:24

标签: python

如果我试图提示用户输入街道名称并输入#符号,我想返回错误并循环回到顶部,直到他们输入有效名称。

代码:

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语句

2 个答案:

答案 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