python - 计算正确答案
问题描述
我做了一个测试,有 5 个问题。首先你问这个人的名字,然后你回答问题。最后,您需要显示正确答案的数量和人的姓名。问题是当我回答1个问题时,没有出现以下问题
a=str(input("Введите ФИО: "))
s = a
print("Срез строки: " , s[4::-2])
print("Применение метода к строке ФИО: " , a.islower())
print("Применение метода к строке среза: " , s.islower())
global balli
balli=0
print('Вопрос 1: Какую функцию нужно использовать для ввода данных?\n1). onput.\n2). input.\n3). inpot.')
x = True
n = input()
if n == '2':
print('Правильно, следующий вопрос...')
balli +=1
else:
print('Не правильно, следующий вопрос...')
x=False
if x==True:
y = True
print('Вопрос 2: Что произойдет в данном случае (s1+s2)?\n1). сложение строк.\n2). деление строки на 2 части.\n3). повторение строки.')
n2 = input()
if n2 == '1':
print('Правильно, следующий вопрос...')
balli +=1
else:
print('Не правильно, следующий вопрос...')
y = False
if y == True:
z = True
print('Вопрос 3: Закончите фразу. Абстрактным называется класс, который содержит один и более абстрактных ... '
'\n1). конструкторов.\n2). методов.\n3). классов.')
n3 = input()
if n3 == '2':
print('Правильно, следующий вопрос...')
balli += 1
else:
print('Не правильно, следующий вопрос...')
z = True
if z==True:
q = True
print('Вопрос 4: Как нужно обозначить оператор извлечения среза?\n1). ().\n2). {}.\n3). [].')
n4 = input()
if n4 == '3':
print('Правильно, следующий вопрос...')
balli +=1
else:
print('Не правильно, следующий вопрос...')
q=False
if q==True:
w = True
print('Вопрос 5: Какой из этих операторов прерывает цикл?\n1). break.\n2). else.\n3). continue.')
n5 = input()
if n5 == '1':
print('Правильно, следующий вопрос...')
balli +=1
else:
print('Не правильно, следующий вопрос...')
w=False
print(a, balli)
解决方案
我喜欢测验程序的前提,所以我很快就整理了自己的一个。它根本不是最佳的,但它会保持分数,并验证您是否用数字回答,以便我们更容易验证正确答案。
这里是:
def asker(question, alternatives, answer):
print(question)
for idx, alt in enumerate(alternatives):
idx +=1
print(f'{idx}. {alt}')
while True:
try:
ans = input("Answer(q to skip): ")
ans = int(ans)
break
except ValueError:
if ans.lower() == "q":
return False
print("Error, answer has to be a number. Please try again.")
return asker(question, alternatives, answer)
if ans == answer:
return True
return False
questions = [
[
"What is colder, -40C or -40F?", # The question itself
["-40C", "-40F", "They are both as cold"], # The alternatives of the question
3 # Answer, as an integer
],
[
"Who was the first president of the United States of America?",
["George Washington", "Thomas Jefferson", "Abraham Lincoln"],
1
],
[
"Are clowns scary?",
["Yes!", "No!"],
1
]
]
player = input("Name of the Player: ")
score = []
for q in questions:
score.append(asker(*q))
print("Results of the Quiz:")
print(f"'{player}' got {sum(score)} out of {len(questions)} correct!")
print("Congratulations!")
这是一个演示:
Name of the Player: Hampus
What is colder, -40C or -40F?
1. -40C
2. -40F
3. They are both as cold
Answer(q to skip): 3
Who was the first president of the United States of America?
1. George Washington
2. Thomas Jefferson
3. Abraham Lincoln
Answer(q to skip): 2
Are clowns scary?
1. Yes!
2. No!
Answer(q to skip): 1
Results of the Quiz:
'Hampus' got 2 out of 3 correct!
Congratulations!
推荐阅读
- python - Pytest - yield inside for 仅适用于第一种方式
- c++ - 如何使用 OpenMP 使用 Visual Studio 并行化 C++
- python - 无法安装 webrtcvad
- google-apps-script - 如何自动链接 Google 表单提交
- postgresql - 从表中选择列值与数组中的任何项目匹配的行
- python - 使用 Pandas 读取列数不规则的 CSV 文件
- jquery - 使用 jQuery 从 href 值中删除特定文本的正确方法
- python - 用户输入时如何从输出中排除“0”?
- mysql - 尝试调用 CTN 并将查询存储在变量中时出现“表不存在”错误
- ruby-on-rails - HAML Bootstrap 4 和 rails - 基于局部变量扩展手风琴