“尝试和排除”以区分字符串和整数?

时间:2015-11-30 17:32:44

标签: python function

我是Python语言的初学者。在python中是否有“try and except”函数来检查输入是一个LETTER还是多个LETTERS。如果不是,请再次输入? (我做了一个你必须输入一个整数)

def validation(i):
try:
    result = int(i)
    return(result)
except ValueError:
    print("Please enter a number")

def start():
x = input("Enter Number: ")
z = validation(x)
if z != None:

    #Rest of function code
    print("Success")
else:
    start()
start()

当执行上面的代码并输入一个整数时,你会得到:

Enter Number: 1
 Success

如果输入无效值,例如输入字母或浮点数,则可以得到:

Enter Number: Hello
Please enter a number
Enter Number: 4.6
Please enter a number
Enter Number: 

正如您所看到的,它会一直循环,直到输入有效的 NUMBER 值。那么是否可以使用“try and except”功能来保持循环,直到输入字母为止?为了更清楚,我将用模糊的结构化英语解释,而不是伪代码,但只是为了让它更清晰:

print ("Hello this will calculate your lucky number")

# Note this isn't the whole program, its just the validation section.
 input (lucky number)
# English on what I want the code to do: 

    x = input (luckynumber)

所以我想要的是,如果变量“x”不是字母或多个字母,它应该重复此输入(x),直到用户输入有效的字母或多个字母即可。换句话说,如果没有输入字母,程序将不会继续,直到输入为字母。我希望这更清楚。感谢。

2 个答案:

答案 0 :(得分:2)

你可以在try / except子句中再次调用相同的函数 - 为此,你必须稍微调整一下你的逻辑:

def validate_integer():
   x = input('Please enter a number: ')
   try:
      int(x)
   except ValueError:
      print('Sorry, {} is not a valid number'.format(x))
      return validate_integer()
   return x

def start():
   x = validate_integer()
   if x:
      print('Success!')

答案 1 :(得分:0)

在简单迭代时,不要在Python中使用递归。

def validate(i):
    try:
        result = int(i)
        return result
    except ValueError:
        pass

def start():
    z = None
    while z is None:
        x = input("Please enter a number: ")
        z = validate(x)

    print("Success")

start()