局部变量 - 如何在其他if-sling(python)中访问

时间:2014-12-12 15:58:06

标签: python variables

抱歉不打印英文,但这没有用。

我有三个菜单选项(MenyVal)。我不希望在选项1之前选择选项2和3。因此我尝试使用“阻止”,这使得在1之前无法选择2或3。

问题在于我理解它是本地的,并且在选项1之后再次变为0,这使您无法在选项1之后创建选项2或3。

当用户转到选项2和3时,如何保持块1的值(在选项1之后)? 我不能有全局变量。

while Korning == "1":

    Menyrader()
    MenyVal= input("Ange ditt menyval med en siffra:")
    block = 0
    if MenyVal== "1": 
        try:               
          AntalSpelare= input("Ange hur många spelare som ska delta:")
          VarvTak= int(AntalSpelare) * 16  
          AntalVarv = 0
          protokoll, spelarnamn = SkapaSpelare(momentlist, AntalSpelare)
          block = 1

        except:
            print("Felaktig inmatning, försök igen.")                   

    elif MenyVal== "2":
        #print(block)
        if block != 0:
            GePoang(protokoll, momentlist)

            for namn in protokoll:
                namn.SummeraForstaSex()
                namn.SummeraAlla()

            AntalVarv += 1
            Utskrift(protokoll, momentlist, spelarnamn)
            TestaStopp(VarvTak, AntalVarv)
        else:
            print("Du måste först lägga till spelare")

    elif MenyVal== "3":
        if block != 0:  
            Stryka(protokoll)

            for namn in protokoll:
                namn.SummeraForstaSex()
                namn.SummeraAlla()

            AntalVarv += 1
            Utskrift(protokoll, momentlist, spelarnamn)
            TestaStopp(VarvTak, AntalVarv)

1 个答案:

答案 0 :(得分:0)

block循环的每次迭代中,

0被重新初始化为while。要避免这种情况,只需在>循环之前将其定义为

block = 0
while Korning == "1":

    Menyrader()
    MenyVal= input("Ange ditt menyval med en siffra:")
    if MenyVal== "1": 
        try:               
          AntalSpelare= input("Ange hur många spelare som ska delta:")
          VarvTak= int(AntalSpelare) * 16  
          AntalVarv = 0
          protokoll, spelarnamn = SkapaSpelare(momentlist, AntalSpelare)
          block = 1

        except:
            print("Felaktig inmatning, försök igen.")

     -- Rest of the code here...