【问题标题】:If statement based on invalid class entered in Python基于 Python 中输入的无效类的 if 语句
【发布时间】:2017-06-16 12:24:26
【问题描述】:

我对 python 很陌生,我正在尝试创建一个使用 if 语句的程序,该语句基于 int 输入 (int(input())) 是否获得正确的输入类。例如:如果我有一个输入为Var1 = int(input("Enter a number:...")),而用户在那里输入hello,这将不会给出错误消息,而是进入if 语句中的一个选项。

由于尚未创建其余代码,因此我无法发布它,但我已经尝试了所有我想出的方法来解决这个问题,但没有成功......谁能帮助我?

【问题讨论】:

  • 在这种情况下,当用户输入“hello”时会发生什么?你有例外吗?也许异常处理是前进的方向?
  • 检查string.isdigit()string.isalpha() 函数。这将解决您的要求。
  • @cdarke 当您在输入是整数输入时键入字母时会出现错误,而不是我希望能够在 if 语句中将输入分成两个不同的部分,一个因为如果答案是整数,则另一个如果不是。
  • @voidpro 你能解释一下如何在输入中使用它们吗?我是 python 新手,所以我真的不明白你建议我把它们放在哪里......我应该是 string.isdigit(input("Enter a number...")) 还是你的意思?
  • @IsacSkoglund 在变量中获取您的输入,例如x=input()。基于x的类,可以进行操作。如果xint,您可以执行类似if x.isdigit(): print("Number") 的操作。我希望,这就是您的需要。

标签: python class if-statement int


【解决方案1】:

您可以用try..except 块包围您的输入并捕获ValueError 将在int() 尝试将非整数转换为整数时发生:

try:
    var1 = int(input("Enter an integer: "))
except ValueError:
    print("That's not an integer!")

您甚至可以通过将整数置于循环中来强制用户输入整数:

var1 = None
while var1 is None:
    try:
        var1 = int(input("Enter an integer: "))
    except ValueError:
        print("That's not an integer!")

或者您可以稍后进行检查:

var1 = input("Enter an integer: ")
try:
    var1 = int(var1)
    print("Thank you for entering an integer.")
except ValueError:
    print("That's not an integer!")

【讨论】:

    【解决方案2】:

    你可以使用try/except:

    while(True):
        try:
            var1 = int(input("enter a number: "))
            break
        except ValueError:
            print('it should be a number')
    

    注意:不要使用 try/except 没有执行类型,例如:

    try:
        printo('hi')
    except:
        pass
    

    它会排除所有异常甚至语法错误

    【讨论】:

    • 我也从 zwer 得到了同样的答案,而且它有效,感谢您的帮助!
    猜你喜欢
    • 2014-02-14
    • 2019-06-18
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多