2017-05-25 90 views
0

我是Python新手,一般编码。我正在尝试创建一个填空题测验来练习。第一部分要求用户选择一个难题。一旦输入,代码附加一个空列表。我将使用列表来加载问题和答案。但是,我遇到的问题是if语句不会识别用户输入。我想确保用户只输入简单,中等或难度。为了查看代码是否工作,我使用了打印功能。但是,我的代码直接转到else语句并打印“再试一次”。有任何想法吗?If-statements Not Regonizing User Input

这是我的代码。

choice = [] 

new_choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
choice.append(new_choice) 
print choice 

if choice == 'easy': 
    print 'True' 
elif choice == 'medium': 
    print 'True' 
elif choice == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 
+1

或许你也应该学习Python 3中,如果你是新来的Python之前。 – chepner

+0

我大约是Udacity.com编程课程的3/4,他们用2.7教学。 – Brad

回答

1

choice是包含您的输入,而不是输入的列表。您存储在new_choice变量中的用户输入。试试这个

choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
print choice 

if choice == 'easy': 
    print 'True' 
elif choice == 'medium': 
    print 'True' 
elif choice == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 
+0

谢谢ktb。我错过了那个逻辑错误, – Brad

+0

我不想听起来有需要,但是因为你是新手,我会提醒你,如果有人回答你的问题,通过点击帖子旁边的复选标记。快乐的小路上您的冒险编程! – ktb

+0

我以为我事先做过。当我这样做时,它表示我的upvote已记录,但没有显示,因为我的重新分数低于15。 – Brad

2

在其目前的形式choice是一个列表,而你正试图把它比作字符串/文本。相反,试试这个:

choices = [] 

new_choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
choices.append(new_choice) 
print choices 

if choices[-1] == 'easy': 
    print 'True' 
elif choices[-1] == 'medium': 
    print 'True' 
elif choices[-1] == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 

我改名的列表choices,表明它拥有多个对象。 -1让我们来访问你添加到列表中的最后一件事。因此,如果您打算将所有用户回复存储在列表choices中,则可以对最后一个答案执行比较并继续。

+0

我可能也会重命名变量('choice' - >'choices') – SwiftsNamesake

+0

好主意,应该加上! – Antimony

0

您正在比较变量列表。

也许使用:

variable = choice[0] 
if variable == 'easy': 
    # rest of program 

此外,确保 '易', '中等' 和 '硬' 没有大写字母。

您可以使用:

new_choice.lower() # converts to lowercase 

追加到列表

相关问题