如果语句控制用户输入

时间:2012-08-24 20:41:17

标签: python

给出的代码工作正常,但原始代码没有。 我希望代码提供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)

6 个答案:

答案 0 :(得分: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() 

答案 1 :(得分: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!")

答案 2 :(得分: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下方添加print语句即可退出循环。

答案 3 :(得分: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)

答案 4 :(得分: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')

答案 5 :(得分: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'))