1

我正在尝试制作一个程序,让用户知道一个数字是否在下限和上限之间,它还让他们知道它是否不是 int。我一直试图让它正常运行,但由于某种原因,我第一次输入任何值时它返回的不是整数,第二次输入一个值时它给出了正确的值,如果它更高或更低,我检查了我的缩进看看是否会导致它。我仍然不确定为什么。关于如何改进此代码或使其正常运行的任何想法?谢谢!

以下是主程序:

import damn


HIGH = 10
LOW = 5
prompt = "Please enter a value Between 5 and 10"

numbers = damn.get_pos_integer(prompt, HIGH, LOW) 

print (numbers)

以下是我的功能:

def get_pos_integer(prompt, low, high):

    s = input(prompt)
    while True:
        if s.isdigit():
            x = int(s)
            if x < low:
                print("Number is too low")
            elif x > high:
                print("Number is too high")
            else:
                print("Number is an integer")
                return x
        else:
            print("Not a number")


x = get_pos_integer(prompt, 5, 10)
print("You entered", x)
4

3 回答 3

1

在您的函数中,语法是

def get_pos_integer(prompt, LOW, HIGH):

当你用它调用它时

number = get_pos_integer(prompt, HIGH, LOW)

你已经切换highlow。您可能应该检查您的输入是否high > low.

于 2012-10-16T14:51:25.793 回答
0

input() 返回整数或浮点数。用 raw_input() 替换 input(),它会返回一个字符串给你。

于 2012-10-16T14:40:39.370 回答
0

你写了

s = input(prompt)
while True:
    # check that number

这意味着您要一个号码并反复检查。如果数字无效,则此循环将永远继续。

你可能想要

while True:
    s = input(prompt) # ask for new numbers until you get a valid one
    if s.isdigit():
        ...
于 2012-10-16T14:43:59.207 回答