Python 正在验证输入值,但无法尝试&;除了其他输入

Python 正在验证输入值,但无法尝试&;除了其他输入,python,validation,try-catch,Python,Validation,Try Catch,我试图验证每一个输入值,但在这里卡住了,如果用户输入了错误的值,那么我的函数将停止接受其他输入,并要求他纠正错误 import re import os.path from csv import DictWriter service ={} class App: def __init__(self): pass def services(self): 问题就在这里 name=input("Enter Name: ") name_r = re.match('^[a-z

我试图验证每一个输入值,但在这里卡住了,如果用户输入了错误的值,那么我的函数将停止接受其他输入,并要求他纠正错误

import re
import os.path
from csv import DictWriter
service ={}    

class App:
  def __init__(self):
    pass

  def services(self):
问题就在这里

name=input("Enter Name: ")
name_r = re.match('^[a-zA-Z]{3,20}$',name)
if name_r:
  print("true")
else:
  print("Wrong Value Entered. Please Enter Correct Name")
我想使用try&except块,但不知道在这种情况下如何使用。 如果我将已验证的值放入except block,那么其余的输入也会有自己的except block(我很困惑),这也是主要的问题,有没有什么简单的方法可以做到这一点,因为如果我像这样验证每一行,那么会花费很多时间

phone=input("Enter PTCL: ")
email=input("Enter Email: ")
mobile=input("Enter Mobile: ")
address=input("Enter Address: ")
service_type=input("Enter Problem Type: ")
date_time=input("Enter Date & Time: ")
msg=input("Enter Message: ")
下面的代码很好

    #getting input values
    service['name'] = name_r
    service['ptcl'] = phone
    service['mobile'] = mobile
    service['date_time'] = date_time
    service['service_type'] = service_type
    service['address'] = address
    service['msg'] = msg
    service['email'] = email

    file_exists = os.path.isfile(r"sevices.csv")
    with open(r"sevices.csv",'a',newline='') as for_write:
      writing_data = DictWriter(for_write,delimiter=',',fieldnames=["Name","Email","PTCL","Mobile","Service Type","Date & Time","Address","Message"])
      if not file_exists:
        writing_data.writeheader()

      writing_data.writerow({
        'Name': service['name'],
        'Email':service['email'],
        'PTCL':service['ptcl'],
        'Mobile':service['mobile'],
        'Service Type':service['service_type'],
        'Date & Time':service['date_time'],
        'Address':service['address'],
        'Message':service['msg']
        })

o1= App()
o1.services()

实现所需功能的最简单方法是创建一个while循环,该循环存在于接受的输入上

while True:
    name=input("Enter Name: ")
    name_r = re.match('^[a-zA-Z]{3,20}$',name)
    if name_r:
        break
    else:
        print("Wrong Value Entered. Please Enter Correct Name")

我有多个输入值,那么我如何传递所有值呢?我的主要问题是每个变量可能都有自己的正则表达式和输入文本等。。最简单的方法是为每个输入创建一个块。