python只允许输入整数和最大字母

2024-10-01 09:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我应该创建一个输入只能在1和3范围内的游戏。(player1,2,3)如果用户输入超过3,输出应该是错误的,如果是字符串,则输出应该是error。在

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,它仍然显示“错误,请再试一次”我很困惑!在


Tags: toyouinputrawif错误doask
3条回答

必须使用方法^{}将值强制转换为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 +"?")

您可能需要将ChoosePlayer转换为int,例如:

ChoosePlayerInt = int(ChoosePlayer)

否则,至少在pypy1.9中,ChoosePlayer将作为unicode对象返回。在

raw_input返回一个字符串。因此,您试图做"1" > 4。您需要使用^{}将其转换为整数

如果要捕获输入是否为数字,请执行以下操作:

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

请注意,现在它是一个整数,下面的连接将失败。在这里,您应该使用^{}

^{pr2}$

相关问题 更多 >