如何在循环内停止函数重新分配布尔值

时间:2019-05-28 14:40:18

标签: python

我正在尝试通过创建一个基本的语言学习应用程序来测试自己来学习Python。为了让它每次尝试编写一个生成初始键的函数时都尝试使用一个不同的单词测试我,前提是它是第一次运行(此后我有另一个函数应该生成一个不同的键) 。

为了做到这一点,我尝试为我们提供一个布尔值(isfirsttime),该值最初在运行这部分代码的特定Tkinter窗口的主循环内设置为False(对不起,如果我不解释这一点,特别好,我绝对是个初学者!)。  然后,在我的函数中,我检查此值是否为False,然后-是-我生成一个密钥并将其加上值TRUE。  回到主循环中,然后将值True赋给变量isfirsttime。  我认为问题在于,在主循环中将isfirsttime首次分配给False(以使函数checkfirst首次工作),但这意味着每次运行它都会将Boolean重置为False。  有人可以向我解释如何在代码首次运行后将isfirst time的值重新分配为TRUE,从而使之后的checkfirst函数每次都通过。 (我知道我的问题与范围有关,但我无法弄清楚-并尝试了函数内的函数并无休止地重新分配变量,因此我在这里显然没有得到任何东西!)  非常感谢!

isfirsttime == False                       
             def checkfirst():                
                 if isfirsttime==False:
                     for item in categories:
                             newkey=random.choice(list(tempdict))
                             print("key is" + newkey)
                     isfirsttime=not isfirsttime
                     print(str(isfirsttime) + "isfirsttime")
                     return newkey, True
                 else:
                     pass
genkey=checkfirst()[0]
isfirsttime=checkfirst()[1]

1 个答案:

答案 0 :(得分:0)

您可以像这样拨打电话:

genkey, isfirsttime = checkfirst()

但是,您仍然需要对第二次调用checkfirst()进行处理。

此外,请阅读您的问题下的评论,以整理对isfirsttime的分配:

isfirsttime = False         # assign isfirsttime to False              
def checkfirst():
    # stuff omitted