python在while循环中检查用户输入的数字

时间:2014-03-17 08:56:51

标签: python python-3.x

我有一个下面的函数是我的主要函数的一部分,我希望这个函数做的是每当调用时,我希望函数检查用户输入是否是 一个数字与否。如果是数字,它将返回数字并中断。 但如果它不是一个数字,我希望它一次又一次地循环。当我尝试时 运行它,它给了我意想不到的错误:

unexpected eof while parsing 

任何人都能帮我解决我错过的问题或者我应该如何重新安排我的代码?谢谢!

def getnumber():
    keepgoing==True
    while keepgoing:
        number = input("input number: ") 
        result1 = number.isdigit()

        if result1 == 1:
            return number
            break
        elif keepgoing==True:

4 个答案:

答案 0 :(得分:1)

更整洁,更清楚你要做的事情:

def getnumber():
    while True:
        number = input("Input number: ")
        if number.isdigit():
            return number

这就是你所需要的,额外的变量是多余的,最后的elif是没有意义的。您无需使用== True== 1检查布尔值,只需执行if condition:即可。 return之后没有任何事情发生,您的break永远不会到达。

答案 1 :(得分:0)

您不需要最后一行:

elif keepgoing==True:

它正在:之后等待文件的其余部分。

旁注,第一部分应该是单=,也可以更简单。

def getnumber():
    while True:
        number = input("input number: ")
        result1 = number.isdigit()
        if result1:
            return number

由于你在while循环中,它会继续执行。使用return将结束while循环,break将退出程序。不过,它每次都会等待input

答案 2 :(得分:0)

在分配您使用keepgoing == True时,我认为它应该是keepgoing=True

答案 3 :(得分:0)

以下解决方案适用于我的计算机,但我运行Python 2.7

def get_num():
    while True: #Loop forever
        number_str = raw_input("> Input a number: ") #Get the user input
        if number_str.isdigit(): #They entered a number!
            return int(number_str) #Cast the string to an integer and return it

我使用raw_input而不是input,因为raw_input为您提供了用户输入的确切字符串,而不是像input那样尝试评估文字。 (如果您将12传递给input,您将获得数字12,但如果您通过"12",则会获得字符串'12'。如果如果你通过了my_var,那么你将获得my_var中的任何价值。

无论如何,您还应该知道isdigit()返回字符串中是否只有数字和至少一个字符 - isNumber相同()的。例如,"123".isdigit()为True,但"123.0".isdigit()为False。我还简化了你的循环逻辑。