0

有时当我在 IDLE 中运行它时,shell 只会显示

 >>

但是,当我关闭窗口并终止程序时,它会在关闭前一瞬间正常显示。大多数时候它会工作。

4

1 回答 1

0

对于您在 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 语言特性

于 2012-11-11T20:22:19.273 回答