проверяет входное значение, но не может попробовать & кроме других входных данных - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь проверить каждое входное значение, но застрял здесь, где, если пользователь введет неправильное значение, моя функция прекратит принимать другие данные и попросит его исправить ошибку.

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 & кроме, но точно не знаю, как использовать в этом случае.если я добавлю проверенное значение в, кроме блока, то остальные входные данные также будут иметь свои собственные, кроме блока (я смущен, помогите мне), а также основная проблема, есть ли короткий способ сделать это, потому что, если я проверяю каждую строку, как это, так этозаймет так много времени.

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()

1 Ответ

0 голосов
/ 11 февраля 2019

Самый простой способ выполнить то, что вы хотите, - это создать цикл 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")
...