我记的很清楚,这个内容我发过,可是不知道为什么没有了。
记录#
- 今天学习回溯,try except。
- try 和 except 是一对,需要成对出现。
- 基本逻辑:try 代码 错误时 excpet 代码
- 使用
except Exception as err:
print (err) 打印报错信息。 - 在第一行设置 debug 模式 , debugMode = False
- if debugMode: print(traceback)
- 这样可以很方便的控制是否显示系统报错信息。
- 今天的练习是编写一个比萨店的订单列表,有以下几个知识点:
- 订单信息用 name 做字典 key,其他信息做字典 value。按照这种格式,str () 后写到本地文件。
- 因为写入的是字典的原因,需要先 read,赋值给字典。再写入新的数据,然后保存。
- 读取时要用 eval ()。
- view 时用 for 循环,先 key,value in item (),这是对字典的操作。value 是数组了,直接 for name , print name 就好。
- 正确答案没有用字典,而是用的二维数组,相对简单一些,直接数组.append 就可以了。
CODE#
import os, time
debugMode = False
print("🌟Dave's Dodgy Pizzas🌟")
again="y"
def addpiz():
uname = input("Name please > ")
try:
piznum = int(input("How many pizzas? > "))
except:
piznum = int(input("You must input a numerical character, try again. > "))
pizsize = input("What size? s/m/l > ").lower()
if pizsize == "s":
pizcost = 1.99
elif pizsize == "m":
pizcost = 9.99
elif pizsize == "l":
pizcost = 19.99
toping = input("toping please > ")
total = pizcost*piznum
print(f"Thanks {uname}, your pizzas will cost {total}")
try:
f = open("piz.list","r")
pizlist = eval(f.read())
f.close()
except:
pizlist={}
pizlist[uname]=[toping,pizsize,piznum,total]
f = open("piz.list","w")
f.write(str(pizlist))
f.close
def viewpiz():
try:
f = open("piz.list","r")
pizlist = eval(f.read())
f.close()
except:
print("The piz list is empty.")
time.sleep(2)
print(f"{'Name': ^10}{'Topping': ^10}{'Size': ^10}{'Quantity': ^10}{'Total': ^10}")
for key,value in pizlist.items():
print(f"{key: ^10}",end="")
for name in value:
print(f"{name: ^10}",end="")
print()
try:
f = open("piz.list","r")
pizlist = eval(f.read())
f.close()
except:
print("The piz list is empty.")
time.sleep(2)
os.system("clear")
while True:
if again == "y":
menu = int(input("1. Add\n2. View\n"))
if menu == 1:
addpiz()
elif menu == 2:
viewpiz()
again = input("again? y/n")