做一个正确答案的计数器

2024-10-08 18:22:58 发布

您现在位置: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)

Tags: 答案falsetrueinputif名字elseprint
3条回答

我喜欢测验程序的前提,所以我很快就把自己的一个放在一起。这根本不是最优的,但它会记分,并验证您是否用数字回答,这样我们就可以更轻松地验证正确的答案

这是:

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!

我看不懂打印的语句,但你的这部分循环没有意义

if n2 == '1':
    print('Правильно, следующий вопрос...')
    balli +=1
else:
    print('Не правильно, следующий вопрос...')
    y = False
    if y == True:
        z = True
    print('Вопрос 3: Закончите фразу. Абстрактным называется класс, который содержит один и более абстрактных ... '
          '\n1). конструкторов.\n2). методов.\n3). классов.')


将y设置为false,然后创建一个if语句来检查它是否为true

问题是,在检查x是否为True之前,您已将x设置为False。在这种情况下x将始终是False

一些建议:

  1. 改进变量名
  2. 检查变量是否为True时,不必使用if x == True:。你可以说if x:
  3. 全局变量用于函数。在函数之外使用时,它们没有任何意义。注意:函数中不建议使用全局变量
  4. 这是您的首选项,但您可以仅使用输入功能打印和获取输入input("Give me a number: ")。但请记住,它将返回一个字符串

相关问题 更多 >

    热门问题