【问题标题】:Check if input is positive integer [duplicate]检查输入是否为正整数[重复]
【发布时间】:2014-11-29 15:27:56
【问题描述】:

我需要检查用户输入的内容是否是肯定的。如果不是,我需要以 msgbox 的形式打印错误。

number = input("Enter a number: ")
   ###################################

   try:
      val = int(number)
   except ValueError:
      print("That's not an int!")

上面的代码似乎不起作用。

有什么想法吗?

【问题讨论】:

  • 怎么不工作了?
  • 检查整数是否大于等于0。
  • 你的意思是if val >= 0
  • 得到val后,检查是否大于0,如果大于0,再抛出一个异常。
  • Traceback(最近一次调用最后):文件“C:\Users\Office\Desktop\Python\If Else\Program\program.py”,第 4 行,在 中 number = input( "输入一个数字:") 文件 "",第 1 行,在 NameError: name 'hi' is not defined

标签: python


【解决方案1】:
while True:
    number = input("Enter a number: ")
    try:
        val = int(number)
        if val < 0:  # if not a positive int print message and ask for input again
            print("Sorry, input must be a positive integer, try again")
            continue
        break
    except ValueError:
        print("That's not an int!")     
# else all is good, val is >=  0 and an integer
print(val)

【讨论】:

  • 不............仍然是同样的错误。
  • 我的代码没有错误,你说的是什么错误?
  • 我的完整代码:pastebin.com/yctSQLz0
  • 我已经回答了您发布的问题,如果您有其他问题,您应该提出另一个问题,并且您在 pastebin 中发布的代码可以正常工作
  • @shivampaw 甚至与 Padraic 发布的代码(或您发布的回溯,就此而言)没有远程关系。
【解决方案2】:

你需要的是这样的:

goodinput = False
while not goodinput:
    try:
        number = int(input('Enter a number: '))
        if number > 0:
            goodinput = True
            print("that's a good number. Well done!")
        else:
            print("that's not a positive number. Try again: ")
    except ValueError:
        print("that's not an integer. Try again: ")

while 循环,因此代码继续重复,直到给出有效答案,并测试其中的正确输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2017-10-30
    相关资源
    最近更新 更多