0

これをIDLEで実行すると、シェルが表示されるだけです

 >>

ただし、ウィンドウを閉じてプログラムを強制終了すると、閉じる前に一瞬正常に表示されます。ただし、ほとんどの場合は機能します。

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)より有用な変数については、インタープリターでa を実行してください。

  • ブール値の等価性を評価する必要はありません。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)。実際には括弧は必要ないと思いますが、読みやすさが向上します、IMHO

明らかに、コードの一般的な構造についてはもっと多くのことが言えます。私は、この時点であなたが知らないかもしれない Python 言語の機能に焦点を当てようとしました。

于 2012-11-11T20:22:19.273 に答える