【问题标题】:Allowing only a maximum integer input and no alphabets in python在python中只允许最大整数输入并且没有字母
【发布时间】:2013-07-28 00:14:02
【问题描述】:

我是 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,它仍然说“错误请重试”我很困惑!

【问题讨论】:

    标签: python string input integer


    【解决方案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)
    

    【讨论】:

    • 是的,但是要执行int(raw_input(…,您需要将其包装在try/catch 中以处理ValueErrors
    • @ArgiriKotsaris 否。虽然这适用于数字,但如果输入字符串就会中断。
    • @inspectorG4dget 补充说。抱歉迟到了,我正在打电话:p
    • @Haidro:我实际上是想问你是否在移动设备上。 Raw_input 的使用是一个死的赠品:P
    • @Haidro:乐于助人!干杯,伙计!
    【解决方案2】:

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

    ChoosePlayerInt = int(ChoosePlayer)
    

    否则,至少在 pypy 1.9 中,ChoosePlayer 作为 unicode 对象返回。

    【讨论】:

      【解决方案3】:

      您必须使用方法 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 +"?")
      

      【讨论】:

        猜你喜欢
        • 2019-08-22
        • 1970-01-01
        • 2017-11-13
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多