1

数値が下限と上限の間の境界内にあるかどうかをユーザーに知らせるプログラムを作成しようとしています。また、int ではないかどうかも知らせます。私はそれを適切に実行しようとしてきましたが、何らかの理由で、最初に値を入力すると整数ではなく、2回目に値を入力すると、値が高いか低いかの適切な値が返されます。それが原因であるかどうかを確認するためにインデントします。理由はまだわかりません。このコードを改善する方法、または正しく機能させる方法についてのアイデアはありますか? ありがとうございました!

主なプログラムは次のとおりです。

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)

highとを切り替えましlowた。入力がhigh > low.

于 2012-10-16T14:51:25.793 に答える
0

あなたが書いた

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

これは、 1つの番号を要求し、それを繰り返し確認することを意味します。番号が無効な場合、このループは永久に続きます。

あなたはおそらくしたい

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

input() は int または float を返します。input() を raw_input() に置き換えると、文字列が返されます。

于 2012-10-16T14:40:39.370 に答える