有时当我在IDLE中运行它时,shell只会显示
>>
但是,当我关闭窗口并终止程序时,它会在关闭之前显示为正常一瞬间。大多数时候它会起作用。
答案 0 :(得分:0)
对于IDLE中的问题,我会定期尝试flushing the stdout,看它是否有帮助。
有关您的代码的一些评论如下:
关于全局变量的使用,在大多数情况下,您可以简单地用函数参数替换它们的使用。当你(想)你需要修改一个全局变量时,通常你选择了错误的函数来编写。例如,绝对不需要在generate()中设置猜测变量,你可以在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语言功能