【问题标题】:How to make users only enter integer values in Python program如何让用户在 Python 程序中只输入整数值
【发布时间】:2018-02-17 06:22:13
【问题描述】:

我有一个非常困惑的家庭作业。我必须编写一个程序,允许用户输入他们购买的鸡蛋数量。然后程序会告诉他们可以装多少盒子(六个鸡蛋)以及剩下多少鸡蛋。

我需要确保如果用户输入一个非整数值,将显示错误消息。我不知道如何做到这一点,任何帮助将不胜感激!这与while循环有关还是我完全错了?

【问题讨论】:

  • 到目前为止你得到了什么?

标签: python python-3.x integer


【解决方案1】:

让用户输入任何他想要的东西,并且只有当它不是整数时才发出警告:

try:
    num = int(input("enter number: "))
except ValueError:
    print("you must enter an integer")

这是 Pythonic 的方式,毕竟它是 "Easier to ask forgiveness than permission"

【讨论】:

  • 您也可以将其包装在一个while循环中,以允许用户重新输入一个值,直到他们给出一个有效的值。
  • @ÓscarLópez 非常感谢!这已经解决了所有问题,我的程序现在可以完美运行。感谢您的帮助。
【解决方案2】:

是的,这可能是一个 while 循环,例如

while 1:
  instr = input('Enter an integer')
  try:
    val = int(instr)
    print 'integer entered', val
    break
  except ValueError:
    print instr, ' is not an integer'

【讨论】:

  • @'Janne Kanla' 谢谢修复。这就是在考虑下一行时打字时发生的情况(:-)
【解决方案3】:

[编辑] 我的评论和代码仅对 python 2.x 有效。

与其他答案相反,您在询问用户时几乎不应该使用“input()”,而应该使用“raw_input()”。

'input()' 评估它从用户那里获得的字符串,就像它是程序的一部分一样。 这不仅是安全问题,而且是不可预测的,并且几乎可以引发任何异常(例如,如果 python 将尝试将字母解析为变量名,则出现 NameError)。

num = None
while num is None:
    try:
        num = int(raw_input("Enter an integer: "))
    except ValueError:
        print 'That was not an integer!'
        affirmations = ('YES', 'Y')
        answer = raw_input("Do you want to continue? (Yes/Y/y):\n")
        if answer.strip().upper() in affirmations:
            continue
        else:
            break
print num

【讨论】:

  • raw_input 不存在的情况下使用 Python 3(见标签)有点困难......
【解决方案4】:
while True:
    try:
       amount=int(input("how many do you want to buy"))
       break
    except ValueError:
       print("Please Enter An Amount")
       continue
    else:
        break

这是一种让用户在 python 3 中输入整数的简单方法。这也可以确保用户输入一个字符串,您只需将 int(.into str( 更改为/p>

【讨论】:

    【解决方案5】:

    我通常将文本放在外面并像函数一样包装它,使其类似于标准input。也许有人喜欢它:

    def int_input(text):
        """Makes sure that that user input is an int"""
        while True:
            try:
                num = int(input(text))
            except ValueError:
                print("You must enter an integer.")
            else:
                return num
    
    user_int = int_input("Enter a number: ")
    

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      相关资源
      最近更新 更多