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

这是我尝试根据您有限的详细信息收集答案:

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 回答
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 回答
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 回答