while循环直到输入已经完成两个语句

时间:2016-07-21 15:38:53

标签: python loops while-loop

def ask_input(prompt, error):
    while True:
        value = input(prompt)
        try:
            int(value) > 1
            break
        except ValueError:
            print(error)
        else:
            return value

所以我想创建一个简单的函数,如果它的integrel大于1则返回值。到目前为止,函数似乎接受了我放入的任何内容。我是否需要创建多个循环或者我可以在一段时间内集成两个语句循环?

3 个答案:

答案 0 :(得分:1)

使用if声明:

while True:
    value = input(prompt)
    try:
        if int(value) > 1:
            return int(value)  # return the value if condition met
    except ValueError as error:
        print(error)

答案 1 :(得分:0)

使用 try / except 仅接受整数。然后使用if条件测试输入大于1的条件,如果满足条件则返回值。在这种情况下使用raw_input()会更好,因为您希望将整数文字作为输入,而input()也可以评估可能导致未经过输入的输入的表达式。

def ask_input(prompt, error):
    while True:
        try:
            value = int(raw_input(prompt))
            if value > 1:  # Return the number if it's greater than 1.
                return value
        except ValueError:  # Catch exception if value is not a base 10 int. 
            print error

答案 2 :(得分:0)

您的代码会提示用户输入任何可以转换为整数的内容,无论是否为> 1,然后返回None。这不是你想要的。

这里有两个不同的问题:

int(value) > 1

如果输入值不能解析为整数,那么这将引发您捕获并正确处理的ValueError。 如果输入值可解析为整数,则int(value)会将其转换为实际整数,该整数将与1进行比较。但是,此比较的结果完全被忽略,因为它不存储在变量或使用

然后break将立即离开while循环,然后到达ask_input的末尾,没有return语句。因此,else的{​​{1}}条款会被忽略。

我建议使用以下代码:

try