使用Python编写永久程序来检查整数的有效性

时间:2016-08-19 10:45:48

标签: python-2.7 python-3.x numbers integer

我是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()开始)

感谢您的时间

2 个答案:

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

您的代码背后的逻辑存在错误。

  1. 您首先要求用户输入一个数字,如果他输入的数字大于或等于0,则while循环将永远不会启动(在您的脚本中:while n < 0:),我认为很好,因为你所说的程序的目标是让“用户输入一个大于0的整数”

  2. 如果用户输入的数字小于或等于0,则while循环将开始,但永远不会中断,因为在其内部,变量n的值永远不会改变,仅是num的值。

  3. 这是一个合适的脚本,考虑到你想使用户输入一个大于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()开始)

    请澄清这一部分。