有时当我在 IDLE 中运行它时,shell 只会显示
>>
但是,当我关闭窗口并终止程序时,它会在关闭前一瞬间正常显示。大多数时候它会工作。
对于您在 IDLE 中的问题,我会尝试定期刷新标准输出,看看它是否有帮助。
关于您的代码的一些评论如下:
关于全局变量的使用,在大多数情况下,您可以简单地用函数参数替换它们的使用。当您(认为您)需要修改全局变量时,通常您选择了错误的函数来编写。例如,绝对不需要在 generate() 中设置guesses 变量,您可以在 play() 中设置。
而不是allowed = ('0','1','2','3','4','5','6','7','8','9','0','+','*')
,考虑import string ; allowed= list(string.digits+'+'+'*')
。在解释器中执行一个dir(string)
以获得更多有用的变量。
没有必要评估布尔值的相等性。while (numguesses < maxguesses) and flag==True:
应该while (numguesses < maxguesses) and flag:
play_again()
是不必要的递归。
s1 = secret[0] ; s2 = secret[1]
可能s1,s2=secret[:2]
for i in range(max): ; num = num + str(randint(0,9))
可以改写为"".join([str(randint(0,9)) for i in range(max)])
. 有些人会争辩说第一个更具可读性,由您决定。
最后这个:
if (i%2 == 0):
evaluated = evaluated + s1
else:
evaluated = evaluated + s2
可以简单地替换为evaluated= (evaluated+s1) if not(i%2) else (evaluated + s2)
. 我认为您实际上并不需要括号,但它们增加了可读性,恕我直言
显然,关于代码的一般结构还有很多话要说,我试图专注于你目前可能不知道的 Python 语言特性