在IDLE中运行有时会返回任何内容。优化

时间:2012-11-11 19:42:32

标签: python

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

  

>>

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

1 个答案:

答案 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语言功能