import random


def question1():
        print("What is the Capital of Bangladesh?")
        print("Your options are: 1)Dhaka 2)Cumilla 3)Rangpur 4)Barishal")
        # p is answer
        p = 1

def question2():
    print("Where is Bangladesh?")
    print("Your options are: 1)in Africa 2)in Asia 3)in Europe 4)in Antertica")
    # p is answer
    p = 2


n= 1
e= 5000
x= ["a","b"]

while (n==1):
    w= random.randint(0,1)
    y= x[w]
    
    if "a" in y:
        question1()
        l= int(input("Type your option number:"))
        x.remove(y)
        
        if (p == l):
            e=e*2
            print("Congrats!You have won" + e)
        else:
            print("You heve lost!")
            print("You answered" + "answers!")
            n=n+1
        
    elif "b" in y:
        question2()
        l= int(input("Type your option number:"))
        x.remove(y)
        
        if (p == 2):
            e=e*2
            print("Congrats!You have won" + e)
        else:
            print("You heve lost!")
            print("You answered" + "answers!")
            n=n+1

            
print("Your total point is:" + e)

我将"p"变量定义为调用函数的McQ问题的答案.但在循环内部,当我调用函数时,"p"变量仍然未定义.我在if语句中的循环中运行了该函数,但它似乎仍未定义.为什么会发生这种事?以及如何修复它?

推荐答案

以下是您的代码的一个工作版本.你有几个问题.例如,这不起作用,因为e是一个整数,您不能将字符串和整数相加.

           print("Congrats!You have won" + e)

请注意,我已经删除了["a","b"]个无稽之谈,只创建了一个带有问题函数的列表.现在我可以随机 Select 一个并调用它,这样我就不需要有一堆重复的代码.一段代码就可以处理所有问题.

import random

def question1():
    print("What is the Capital of Bangladesh?")
    print("Your options are: 1)Dhaka 2)Cumilla 3)Rangpur 4)Barishal")
    # p is answer
    return 1

def question2():
    print("Where is Bangladesh?")
    print("Your options are: 1)in Africa 2)in Asia 3)in Europe 4)in Antertica")
    # p is answer
    return 2

n= 0
e= 5000
questions = [question1, question2]

while questions:
    question = random.choice(questions)
    answer = question()

    l= int(input("Type your option number:"))
        
    if answer == l:
        questions.remove( question )
        n += 1
        e *= 2
        print("Congrats!You have won", e)
    else:
        print("You heve lost!")
        print("You answered", n,  "answers!")
        break
    
print("Your total point is:", e)

Python相关问答推荐

指示组内的rejected_time是否在creation_timestamp后5分钟内

从包含数字和单词的文件中读取和获取数据集

有条件地采样我的大型DF的最有效方法

如何通过多2多字段过滤查询集

将HTML输出转换为表格中的问题

在Pandas 日历中插入一行

如何使用Jinja语法在HTML中重定向期间传递变量?

滚动和,句号来自Pandas列

如何在箱形图中添加绘制线的传奇?

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

用砂箱开发Web统计分析

如何更新pandas DataFrame上列标题的de值?

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

跳过嵌套JSON中的级别并转换为Pandas Rame

具有相同图例 colored颜色 和标签的堆叠子图

Discord.py -

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

文本溢出了Kivy的视区