0

コードは次のとおりです。

from random import *
numbers = ['0','1','2','3','4','5','6','7','8','9','10']
r1 = choice (numbers)
r2 = choice (numbers)
print("H = HIGHER ,, L = LOWER ,, S = SAME")
print(r1)
a = input()
print(r2)
if r2 == r1 and a == 's':
     print("well done")
if r2 < r1 and a == 'l':
     print("well done")
if r2 > r1 and a == 'h':
     print("well done")
else:
     print("unlucky")

問題は、スクリプトの最後の部分です。print(r2)の直後のスクリプトの最後を除いて、すべてが完全に機能します。すべて機能しますが、答えは「よくできました」と「不運」の間で切り替わり続けます。両方と言う場合もあります。誰が問題が何であるか知っていますか?これはランダムであるという単純な理由で発生したものであり、スクリプトに沿って移動すると最初の出力 (r1) が変化するという私の推測です。助言がありますか?

4

2 に答える 2

2

最後の 2 つifの s をelifs に変更します (elif は else-if を意味します)。

if r2 == r1 and a == 's':
     print("well done")

elif r2 < r1 and a == 'l':
     print("well done")

elif r2 > r1 and a == 'h':
     print("well done")

else:
     print("unlucky")

"Unlucky" は、他の条件が満たされない場合にのみ出力されるようになりました。

于 2012-06-12T20:46:33.860 に答える
2

これは、プログラムの完全に機能するバージョンです。

from random import choice

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

r1 = choice(numbers)
r2 = choice(numbers)

print("h = HIGHER ,, l = LOWER ,, s = SAME")
print(r1)
a = raw_input()
print(r2)

if r2 == r1 and a == 's':
    print("well done")
elif r2 < r1 and a == 'l':
    print("well done")
elif r2 > r1 and a == 'h':
    print("well done")
else:
    print("unlucky")

私はそれをよりPEP8フレンドリーにしました。aまた、コンパレーターが小文字を使用するため、H、L、S ではなく、h、l、s を表示する必要があります。それか、入力値の大文字と小文字を変更してください。また、raw_input通常の代わりに使用しますinput

@Blorgbeardが言及しているように、毎回同じ乱数を選択したい場合は、呼び出す前にこれを追加してくださいchoice

import random 
random.seed(1)
于 2012-06-12T20:54:33.173 に答える