为什么第一个while循环继续循环来收集信息?蟒蛇

时间:2017-06-13 06:01:09

标签: python validation loops while-loop

第一个while循环用于验证用户是否输入'p','d'或其他任何内容。如果用户输入了错误的输入,它应该再次询问,一旦收集到信息,披萨菜单应打印出来,但它会循环回来要求提货或送货。

import re

pickupCost = 0
deliveryCost = 5

running = True

menu = {}
menu['Pepperoni'] = 9
menu['Hawaiian'] = 9
menu['Cheese'] = 9
menu['Italian'] = 9
menu['Margherita'] = 9
menu['Apricot Chicken'] = 13
menu['BBQ Meatlovers'] = 13
menu['Chicken and Cranberry'] = 13



while running == True:
  delivery = raw_input("please select either p for pickup or d for delivery")
  delivery = delivery.lower()
  if delivery == "p":
    while running == True: #puts code in loop if user enters invalid input#
      customer_name = raw_input("Name: ")
      if not re.match("^[a-zA-Z ]*$", customer_name): #checks that no numbers and symbols are used#
        print "Please only use letters"
      elif len(customer_name) == 0: #checks user doesnt try leaving it empty#
        print "Cannot be left blank"
      elif customer_name == " ":  #checks they don't just push space then enter#
        print "Please enter a valid input"
      else:
        customer_name = customer_name.title()
        break #breaks loop
  elif delivery =="d":
    while running == True: #puts code in loop if user enters invalid input#
      customer_name = raw_input("Name: ")
      if not re.match("^[a-zA-Z ]*$", customer_name):
        print "Please only use letters"
      elif len(customer_name) == 0:
        print "Cannot be left blank"
      elif customer_name == " ":
        print "Please enter a valid input"
      else:
        customer_name = customer_name.title()
        break
    while running == True:
      house_num = raw_input("House Number: ")
      if not re.match("^[0-9]*$", house_num): #checks user only enters numbers
        print "Please only use numbers"
      elif len(house_num) == 0:
        print "Cannot be left blank"
      else:
        break
    while running == True:
      street_name = raw_input("Street Name: ")
      if not re.match("^[a-zA-Z ]*$", street_name):
        print "Please only use letters"
      elif len(street_name) == 0:
        print "Cannot be left blank"
      elif street_name == " ":
        print "Please enter a valid input"
      else:
        street_name = street_name.title()
        break
    while running == True:
      suburb = raw_input("Suburb: ")
      if not re.match("^[a-zA-Z ]*$", suburb):
        print "Please only use letters"
      elif len(suburb) == 0:
        print "Cannot be left blank"
      elif suburb == " ":
        print "Please enter a valid input"
      else:
        suburb = suburb.title()
        break
    while running == True:
      postcode = raw_input("Postcode: ")
      if not re.match("^[0-9]*$", postcode):
        print "Please only use numbers"
      elif len(postcode) == 0:
        print "Cannot be left blank"
      else:
        break
    while running == True:
      city = raw_input("City: ")
      if not re.match("^[a-zA-Z ]*$", city):
        print "Please only use letters"
      elif len(city) == 0:
        print "Cannot be left blank"
      elif city == " ":
        print "Please enter a valid input"
      else:
        city = city.title()
        break
  else:
    print "invalid input"
    break

def print_menu(menu):
    x = 1
    for key in menu:
        print x,key,menu[key]
        x += 1
print_menu(menu)

0 个答案:

没有答案