当涉及到python编程时,我非常喜欢noobie。然而,我需要尽快一个小测验制作程序,给我%的分数在最后。以下是我迄今所做的工作:
#coding: utf-8
from random import shuffle
qas = [
('Kvarts', 'SiO2'),
('Gull', 'Au'),
('Sølv', 'Ag'),
('Kobber', 'Cu'),
('Platina', 'Pt'),
('Grafitt', 'C'),
('Diamant', 'C'),
]
shuffle(qas)
numRight = 0
for question, rightAnswer in qas:
answer = raw_input(question + ' ')
if answer.lower( ) == rightAnswer:
print 'Correct'
numRight +=1
else:
print 'Wrong, the correct answer is ' + rightAnswer
print 'You got %d and %d wrong.' % (numRight, len(qas) - numRight)
我让程序稍微工作,但即使我答对了,它还是给了我这样错误的答案:
Diamant C
Wrong, the correct answer is C
Kvarts SiO2
Wrong, the correct answer is SiO2
我不知道该怎么做才能解决这个问题。
发布于 2015-10-21 13:29:40
您不需要调用answer.lower()
,因为它返回带有小写字母的字符串,而正确的答案可能包含大写字母。
你可以用answer.strip()
代替。这将移除输入字符串开头和结尾处的空格。
另一种选择是简单地执行answer == rightAnswer
,但是如果answer
被空格包围,则会产生'Wrong answer'
。
发布于 2015-10-21 13:28:38
列表中的答案不是小写。如果用户输入C
,您的条件将计算'C'.lower() == 'C'
(只是一个例子)。试一试
if answer.lower() == rightAnswer.lower():
发布于 2015-10-21 13:29:39
您可以通过使用
if answer.lower( ) == rightAnswer:
这会将answer
转换为小写(例如,C
转换为c
)。
字典中的答案区分大小写:
"C" == "c" => False
你有三个选择:
1将字典中的答案转换为大写:
qas = [
('Kvarts', 'SIO2'),
('Gull', 'AU'),
('Sølv', 'AG'),
('Kobber', 'CU'),
('Platina', 'PT'),
('Grafitt', 'C'),
('Diamant', 'C'),
]
或2:(相反)将一切改为小写
或3:不要调用.lower
https://stackoverflow.com/questions/33260496
复制相似问题