0

指定されたコードは正常に機能しますが、元のコードでは機能しません。コードで1から5までの数字を提供し、1から5までの数字のみを受け入れたいのですが、範囲内で選択した数字でもランダムな整数が返されます。

import random

user_input = raw_input("Enter a number between 1 and 5 : ") 
selected_elem = []

while len(selected_elem) < int(user_input):
    if user_input >= int(6):
        print ("That is not an option...")
    random_elem = random.randrange(1, 10, 1)
    if random_elem not in selected_elem:
        selected_elem.append(random_elem)

print ("Here are the numbers... ")+ str(selected_elem)
4

6 に答える 6

2

説明はあまり明確ではありませんが、次のようなものが必要なようです。

def ask_digit(calls=0):
    if calls > 10:
        print "You are so boring..."
        raise ValueError("Can't get answer from user")

    try:
        num = int(raw_input("Enter number 1-5: "))
    except ValueError:
        print "Not a digit"
        return ask_digit(calls+1)

    if num < 1 or num > 5:
        print "Not valid"
        return ask_digit(calls+1)

    return num

if __name__ == "__main__":
    ask_digit() 
于 2012-08-24T20:48:07.563 に答える
2

これがあなたの限られた詳細に基づいて答えをまとめる私の試みです:

num = input('Please enter a number between 1-5')

if num in range(1,6):
    print("That's a valid option. Congratulations!")
else:
    print("That's not an option, fool!")
于 2012-08-24T20:49:34.527 に答える
2

現在投稿されているOPコードによる更新:

while len(selected_elem) < int(user_input):
    if 1 <= int(user_input) <= 5:
        random_elem = random.randrange(1, 10, 1)
        if random_elem not in selected_elem:
            selected_elem.append(random_elem)
    else:
        print ("That is not an option...")

user_inputへの入力が数値ではなくint()失敗した場合、プログラムがクラッシュすることに注意してください(例外をスローします)。必要に応じて、以下に示すtry/exceptコードを移植して対処できます。

------OPによって投稿されたコードなしの以前の回答------------

入力が常に数値になることが確実な場合は、次のように実行できます。

while True:
    num = input('Enter number between 1 - 5:')
    if 1 <= num <= 5:
        print 'number is fine' 
        break
    else:
        print 'number out of range'

ユーザーが指定された範囲の数値を入力するまで、ループを続けます。

それ以外の場合、追加されたtry/exceptコードは数値以外の入力をキャッチします。

while True:
    try:
        num = input('Enter number between 1 - 5:')
        if 1 <= num <= 5:
            print 'number is fine'
            break
        else:
            print 'number out of range'
    except NameError:
        print 'Input was not a digit - please try again.'

数字以外を入力した後でユーザーに再試行させたくない場合は、メッセージを調整しbreak、finalの下にステートメントを追加しprintてループを終了します。

于 2012-08-24T20:54:45.913 に答える
2

それの一体のために:

import re
def ask_digit():
    while True:
        digit = raw_input("Please enter a number between 1 and 5: ")
        if re.match(r"[1-5]$", digit):
            return int(digit)
于 2012-08-24T20:56:11.503 に答える
1

これは、最終的に有効な番号を取得するまで、ユーザーに番号の入力を求め続ける答えです。

n = input('Enter a number in the range 1-5')

while(n < 1 or n > 5):
    print('Incorrect input')
    n = input('Enter a number in the range 1-5')
于 2012-08-24T20:53:18.160 に答える
0

コードを機能させるには、入力にintを入力する必要があります

n = int(input('Enter a number in the range 1-5'))
while(n < 1 or n > 5):
    print('Incorrect input')
    n = int(input('Enter a number in the range 1-5'))
于 2021-07-04T22:19:37.027 に答える