我是Python的初学者,我试图编写一个小程序,要求用户输入一个大于0的整数。该函数应该继续询问用户该数字,直到它有效。
我尝试了类似下面的内容,但是我得到了错误的结果。你能帮我理解一下我的错误吗?
num = input('please enter a number: ' )
n = int(num)
while n < 0:
num = input('please enter a number: ' )
if n >= 0:
print('Valid number')
else:
print('Invalid number')
是否可以在没有输入功能的情况下启动代码? (比如从num = int()开始)
感谢您的时间
答案 0 :(得分:1)
如果您的问题是代码未终止,请始终写Invalid number
因为您没有更新n的值。你只分配了一次。您的问题的解决方案如下:
n = -1
while n < 0:
n = int(input('please enter a number: '))
if n >= 0:
print('Valid number')
else:
print('Invalid number')
顺便说一下,如果没有输入函数,你可以摆脱启动代码。
修改强>
正如您刚才所说 - 尽管将负整数传递到命令行,您仍希望保持输入读数。这可以帮助您实现这一目标:
while True:
n = int(input('please enter a number: '))
if n >= 0:
print('Valid number')
else:
print('Invalid number')
这个循环将永远存在,直到你退出程序,然后用ctrl + C
说。 while True:
就像你看到一个永远在进行的循环,因为True
参数永远不会是假的。
答案 1 :(得分:1)
您的代码背后的逻辑存在错误。
您首先要求用户输入一个数字,如果他输入的数字大于或等于0,则while循环将永远不会启动(在您的脚本中:while n < 0:
),我认为很好,因为你所说的程序的目标是让“用户输入一个大于0的整数”。
如果用户输入的数字小于或等于0,则while循环将开始,但永远不会中断,因为在其内部,变量n
的值永远不会改变,仅是num
的值。
这是一个合适的脚本,考虑到你想使用户输入一个大于0的数字,并且你想提供有关他们输入的反馈。
n = None
while n <= 0:
n = int(input('please enter a number: '))
if n <= 0:
print('Invalid number')
else:
pass # the loop will break at this point
# because n <= 0 is False
print('Valid number')
代码让用户陷入循环,直到他们写出一个大于0的数字。
另一个解决方案将在循环内部检查int(num)
是否大于0,如果是,print 'Valid number'
并执行break
到<我>停止循环;如果不是,print 'Invalid number'
(虽然循环不需要由while n < 0:
定义;而是由while True:
定义。
另外,你的意思是:
是否可以在没有输入功能的情况下启动代码? (比如从num = int()开始)
请澄清这一部分。