在Python中按长度验证用户输入

时间:2015-01-19 20:06:40

标签: python validation python-3.x user-input

我有一些代码:

def GetPlayerName():
  print()
  PlayerName = input('Please enter your name: ')
  print()
  return PlayerName

如果他们输入一个长度超过一个字符的名字,我怎么能继续询问玩家的名字,并告诉他们如果他们将该字段留空,他们必须输入一个有效的名字?

我试过

def GetPlayerName():
  print()
  PlayerName = input('Please enter your name: ')
  print()
  return PlayerName
  while len(PlayerName) < 1:
    print("You must enter a name!")

但未成功。

2 个答案:

答案 0 :(得分:3)

使用while循环重复获取input

def get_player_name():
    print()
    player_name = ""
    while len(player_name) <= 1: 
        player_name = input('Please enter your name: ')
        print()
    return player_name

您当前使用它的方式是,使用while语句仅打印错误消息。

PS:我已将您的变量名等转换为small_caps_format,因为这是PEP recommends

答案 1 :(得分:2)

def GetPlayerName():
    print()

    while True:
        PlayerName = input('Please enter your name: ')

        if len(PlayerName) > 1:
            break
        print("Your name is too short! :c")

    print()
    return PlayerName

其中一个解决方案,并不需要while循环之外的任何变量。如@jme所述,使用此解决方案可以轻松打印错误消息。您的代码存在的问题是:

  1. 你的while循环是在return语句被调用之后,因此它被有效地呈现为静音。
  2. 你的while循环是无限的 - 它不会让用户有机会重新尝试!