python在while循环中检查用户输入的数字
我在下面有一个函数,它是我的主要大函数的一部分,我想让这个函数做的是,无论何时调用,我想让函数检查用户输入是否正确 有没有数字。如果它是一个数字,它将返回该数字并中断。 但如果它不是一个数字,我希望它一次又一次地循环 运行它,它会给我一个意外错误:python在while循环中检查用户输入的数字,python,python-3.x,Python,Python 3.x,我在下面有一个函数,它是我的主要大函数的一部分,我想让这个函数做的是,无论何时调用,我想让函数检查用户输入是否正确 有没有数字。如果它是一个数字,它将返回该数字并中断。 但如果它不是一个数字,我希望它一次又一次地循环 运行它,它会给我一个意外错误: unexpected eof while parsing 任何人都能帮我找到我缺少的东西,或者我应该如何重新安排我的代码吗?谢谢大家! def getnumber(): keepgoing==True while keepgoin
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:
您不需要最后一行:
elif keepgoing==True:
它在:
之后等待文件的其余部分
旁注,在第一部分中,它应该是一个单独的=
,也可以编写得更简单
def getnumber():
while True:
number = input("input number: ")
result1 = number.isdigit()
if result1:
return number
由于您在while循环中,它将继续执行。使用
return
将结束while循环,break
ing并退出程序。不过,每次它都会等待输入。一个更整洁、更清晰的方法来做你已经在做的事情:
def getnumber():
while True:
number = input("Input number: ")
if number.isdigit():
return number
这就是您所需要的,额外的变量是多余的,最后的elif
没有意义。您不需要用==True
或==1
检查布尔值,只要在条件为时执行。在返回后不会发生任何事情,您的中断将永远无法到达 当您使用keepgoing==True
时,我认为应该是keepgoing=True
以下解决方案在我的机器上运行,尽管我运行的是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\u input
而不是input
,因为raw\u input
提供了用户输入的确切字符串,而不是像input
那样尝试计算文本。(如果您将12
传递给input
,您将得到数字12,但是如果您传递“12”
,您将得到字符串'12'
。如果您传递my\u var
,您将得到my\u var
中的任何值)
无论如何,您还应该知道,isdigit()
返回字符串中是否只有数字和至少一个字符-这与isNumber()不同。例如,“123”.isdigit()
为真,但“123.0”.isdigit()
为假。我还简化了您的循环逻辑 Python的哪个版本?就这些吗?当我删除最后一个时,它并没有要求我输入。