【问题标题】:Python validation loopPython验证循环
【发布时间】:2017-09-24 19:59:02
【问题描述】:

我需要验证用户名,所以它只包含字母。为此,我使用了一个 while true 语句。我还希望将用户名写入文本文件,一旦它有效,我将如何更改我的代码来执行此操作。我将如何更改我的代码,以便如果用户输入无效名称,他们必须重试,如果有效,则将其写入文本文件。

import re
name=(input("Please enter your name: "))
while name is None or not re.match("[A-z]",name):
  print("Invalid name. Try again")
  else:
    filename = ("name");
    with open (filename, "a") as f:
      f.write (name + "\n")

【问题讨论】:

标签: python python-3.x validation loops text-files


【解决方案1】:
import re

def askName():
    name = input("Please enter your name: ")
    if re.match("[A-z]",name):
        with open("filename", "w") as f:
            f.write(name)
    else:
        askName()     

askName()

【讨论】:

    【解决方案2】:

    希望对你有帮助

    Correct = True
    while Correct == True:
        name = input("Please enter your name: ")
        if name.isalpha() == True:
            file = open("filename.txt", "a")
            file.write("\n" + name)
            file.close
            print("Wrote to file")
            Correct = False
        else:
            print("Incorrect, Try again")
    

    【讨论】:

      【解决方案3】:

      我对许多其他人的解决方案:

      while True:
          name=(input("Please enter your name: "))
          if name and name.isalpha():
              filename = ("name.txt")
              with open (filename, "a") as f:
                  f.write (name + "\n")
              break
          else:
              print ("Invalid name. Try again")
              continue
      

      【讨论】:

        【解决方案4】:
        name = raw_input('enter name\n')
        
        while not all(map(lambda l: l.isalpha, iter(name)):
                   name = raw_input('invalid name. Please try again\n')
                   continue
        
        with open('file_path', 'w') as f:
                   f.write(name + '\n')
        

        all() 语句验证字符串中的每个字符; ma​​p 为输入中的每个字符运行 lambda 函数。要从字符串中创建迭代器,可以使用 iter(name)

        【讨论】:

          【解决方案5】:

          来自documention

          str.isalpha()

          如果字符串中的所有字符都是字母并且至少有一个字符,则返回 true,否则返回 false。按字母顺序 字符是在 Unicode 字符中定义的那些字符 数据库为“字母”,即具有一般类别属性的那些 “Lm”、“Lt”、“Lu”、“Ll”或“Lo”之一。请注意,这是不同的 来自 Unicode 标准中定义的“Alphabetic”属性。

          以下几行应该可以解决问题:

          name = input('Enter name: ')
          
          # if you want to take spaces into account, i.e. inputs like 
          # 'Spam Eggs', change the following line to: 
          # while any(x for x in name.split() if not x.isalpha()):
          
          while not name.isalpha():
              print('Invalid input!')
              name = input('Enter name: ')
          
          with open(filename, 'a') as f:
              f.write(name + '\n')
          

          【讨论】:

            猜你喜欢
            • 2012-10-09
            • 2020-08-26
            • 1970-01-01
            • 2019-09-26
            • 2021-04-25
            • 1970-01-01
            • 2019-09-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多