0

私はpythonが初めてで、入力が1と3の範囲内にあるゲームを作成することになっています.(プレーヤー1、2、3)そして、ユーザーが3を超える入力をした場合、出力はエラーになるはずです。文字列になっています。

def makeTurn(player0):

    ChoosePlayer= (raw_input ("Who do you want to ask? (1-3)"))

    if ChoosePlayer > 4:
        print "Sorry! Error! Please Try Again!"
        ChoosePlayer= (raw_input("Who do you want to ask? (1-3)"))

    if ChoosePlayer.isdigit()== False:
        print "Sorry! Integers Only"
        ChoosePlayer = (raw_input("Who do you want to ask? (1-3)"))
    else:
        print "player 0 has chosen player " + ChoosePlayer + "!"
        ChooseCard= raw_input("What rank are you seeking from player " + ChoosePlayer +"?")

私はこのようにしていましたが、問題は私のコードに問題があるように見えることです。入力が 1 の場合でも、「エラーです。もう一度お試しください」と表示され、混乱しています。

4

3 に答える 3

1

次のように、おそらく ChoosePlayer を int に変換する必要があります。

ChoosePlayerInt = int(ChoosePlayer)

それ以外の場合、少なくとも pypy 1.9 では、ChoosePlayer は Unicode オブジェクトとして返されます。

于 2013-07-27T22:45:27.630 に答える
1

raw_input文字列を返します。したがって、あなたはやろうとしています"1" > 4。を使用して整数に変換する必要がありますint

入力が数値かどうかをキャッチしたい場合は、次のようにします。

while True:
    try:
        ChoosePlayer = int(raw_input(...))
        break
    except ValueError:
        print ("Numbers only please!")

現在は整数であるため、以下の連結は失敗することに注意してください。ここでは、使用する必要があります.format()

 print "player 0 has chosen player {}!".format(ChoosePlayer)
于 2013-07-27T22:43:11.317 に答える
-1

method を使用して、値を int にキャストする必要がありますint()

 def makeTurn(player0):
    ChoosePlayer= (raw_input ("Who do you want to ask? (1-3)"))

    if int(ChoosePlayer) not in  [1,2,3]:
        print "Sorry! Error! Please Try Again!"
        ChoosePlayer= (raw_input("Who do you want to ask? (1-3)"))

    if ChoosePlayer.isdigit()== False:
        print "Sorry! Integers Only"
        ChoosePlayer = (raw_input("Who do you want to ask? (1-3)"))
    else:
        print "player 0 has chosen player " + ChoosePlayer + "!"
        ChooseCard= raw_input("What rank are you seeking from player " + ChoosePlayer +"?")
于 2013-07-27T22:44:08.337 に答える