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

2024-09-28 23:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过创建一个基本的语言学习应用程序来测试自己来学习Python。为了让它在每次我试图编写一个只在第一次运行时才生成初始键的函数时用不同的词来测试我(在此之后,我有另一个函数应该生成不同的键)。你知道吗

为了做到这一点,我尝试使用一个布尔值(isfirsttime),我最初在运行这部分代码的特定Tkinter窗口的主循环中将其设置为False(对不起,如果我没有解释这个特殊的,那么我承认我是个十足的乞丐!)。 在我的函数中,我检查这个值是否为False,然后-它是-我生成一个键并传递这个值加上值TRUE。 回到主循环中,然后将值True赋给变量isfirsttime。 我认为问题在于,在主循环中,isfirsttime首先被指定为False(以使函数checkfirst第一次工作),但这意味着每次运行它时,它都会将布尔值重置为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]

Tags: 函数代码语言falsetrue应用程序tkinter中将
1条回答
网友
1楼 · 发布于 2024-09-28 23:44:33

你可以这样打电话:

genkey, isfirsttime = checkfirst()

但是,您仍然需要对第二次调用checkfirst()做些什么。你知道吗

此外,阅读问题下方的评论,您需要整理分配给isfirsttime的作业:

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

相关问题 更多 >