0

これが私のコードです:

total = int(input("How many students are there "))
print("Please enter their scores, between 1 - 100")

myList = []
for i in range (total):
    n = int(input("Enter a test score >> "))

    myList.append(n)

基本的に私はテストの点数を計算するプログラムを書いていますが、最初にユーザーは 0 から 100 までの点数を入力する必要があります。

ユーザーがその範囲外のテスト スコアを入力した場合、その数値を書き直すようにプログラムに伝えたいと思います。プログラムがエラーで終了することは望ましくありません。どうやってやるの?

4

3 に答える 3

8
while True:
   n = int(input("enter a number between 0 and 100: "))
   if 0 <= n <= 100:
      break
   print('try again')

質問のコードと同様に、これは Python 2.x と 3.x の両方で機能します。

于 2012-12-17T20:34:47.740 に答える
3

まず、値が範囲内にあるかどうかを確認する方法を知っている必要があります。簡単だ:

if n in range(0, 101):

英語からのほぼ直訳。(これはPython 3.0以降にのみ適したソリューションですが、明らかにPython 3を使用しています。)

次に、有効なものが入力されるまで試行を続けさせたい場合は、ループで実行します。

for i in range(total):
    while True:
        n = int(input("Enter a test score >> "))
        if n in range(0, 101):
            break
    myList.append(n)

繰り返しますが、英語からのほぼ直接の翻訳です。

ただし、これを別の関数に分割すると、はるかに明確になる可能性があります。

def getTestScore():
    while True:
        n = int(input("Enter a test score >> "))
        if n in range(0, 101):
            return n

for i in range(total):
    n = getTestScore()
    myList.append(n)

fpが指摘しているように、「A +」などの整数ではないものを入力した場合でも、プログラムは「エラーで終了する」ことになります。少しトリッキーな処理。整数の有効な表現ではない文字列を指定すると、関数はaを生成しますintValueErrorそれで:

def getTestScore():
    while True:
        try:
            n = int(input("Enter a test score >> "))
        except ValueError:
            pass
        else:
            if n in range(0, 101):
                return n
于 2012-12-17T20:35:47.757 に答える
0

次のようなヘルパー関数を使用できます。

def input_number(min, max):
    while True:
        n = input("Please enter a number between {} and {}:".format(min, max))
        n = int(n)
        if (min <= n <= max):
            return n
        else:
            print("Bzzt! Wrong.")
于 2012-12-17T20:37:46.323 に答える