如何在Python 3中省略条件中的字符串和其他字符?

时间:2018-03-03 18:43:24

标签: python python-3.x

我正在尝试创建一个小代码,要求用户输入1到100之间的数字。但是输入字符串时我的Else语句不会输出。如果用户输入的不是整数或浮点数,我希望我的Else语句打印一条消息。这是我的代码。

def between():
    print ("Please enter a number between 1 and 100.")
    number = eval(input())
    if number >= 1 and number <= 100:
        print ("Thank you! You entered",number,"which is within the 1 and 100 range.")
        between()
    elif number > 100 or number < 1: 
        print ("OOPS! You entered",number,"Please enter a number between 1 and 100.")
        between()
    else: 
        print ("ERROR! You have entered an invalid value. Please try again using numerical values only.")
        between()

between()

4 个答案:

答案 0 :(得分:1)

最简单的方法是使用tryexcept

num = input()
try:
    number = float(num)
    # code to do if num is a number
except ValueError:
    print("Not a number!")
    # code to do if num isn't a number

如果num不是数字,那么将其转换为浮点数会使ValueError进入except。 如果num是一个数字,那么将其转换为浮点数就可以正常运行,并继续try

附注:我强烈建议您不要使用eval(input()),而只使用input(),请参阅this,了解为何不使用eval。此外,eval(input())也不适用于我上面的示例。

答案 1 :(得分:0)

试试这个:

print "Please enter a number between 1 and 100"
in = input()


try:
    num = int(in)

    if 1 <= num <= 100:
        print("Valid")
    else:
        print("Out of bounds")

except:

    print("Invalid")

答案 2 :(得分:0)

尝试:

def between():
    print ("Please enter a number between 1 and 100.")
    number=0
    try:
        number = int(input())
    except:
        print ("ERROR! You have entered an invalid value. Please try again using numerical values only.")
        exit(1)
    if number >= 1 and number <= 100:
        print ("Thank you! You entered",number,"which is within the 1 and 100 range.")
        between()
    else: 
        print ("OOPS! You entered",number,"Please enter a number between 1 and 100.")
        between()


 between()

注意:为什么一起使用eval和输入?我不认为这是正确的,如果我错了,请纠正我

答案 3 :(得分:0)

您的代码存在一些逻辑问题。首先使用eval()之前,您必须了解与之相关的安全风险。考虑通过此post获取一些见解。如果您在eval中输入了一些任意输入,则很可能是运行时错误。

现在,假设变量实际上有一个值。要检查它是一个整数还是一个浮点数并且在所需的范围内或其他东西(可能是一个字符串),你不能直接对它应用比较运算符,因为如果变量不是数字,它很可能会给出{{ 1}}在与其他整数比较时。

因此,正确的方法是首先通过检查TypeError来检查变量是否属于所需类型,然后才应对范围应用测试。如果上述类型检查为false,则应打印“else”错误消息。