《python编程快速上手——让繁琐工作自动化》
题目:
编写一个程序,询问用户对三明治的偏好。程序应该使用 PyInputPlus 来确保他们输入有效的输入,例如:
使用inputMenu()表示面包类型:小麦、白面包或酸面团。
使用inputMenu()表示蛋白质类型:鸡肉、火鸡、火腿或豆腐。
用inputYesNo()询问他们是否想要奶酪。
如果是这样,用inputMenu()询问奶酪的种类:切达奶酪、瑞士奶酪或马苏里拉奶酪。
用inputYesNo()询问他们想要蛋黄酱、芥末、生菜还是西红柿。
用inputInt()询问他们想要多少三明治。请确保该数字等于或大于 1。
为这些选项中的每一个提供价格,并在用户输入他们的选择后,让您的程序显示总成本。
import pyinputplus as pyip
import sys
#有对应关系的用字典
#1.创建价格表
sandwich={'面包':{'小麦':3,'白面包':5,'酸面团':2},\
'蛋白质':{'鸡肉':5,'火鸡':7,'火腿':6,'豆腐':2},\
'奶酪':{'切达奶酪':3,'瑞士奶酪':2,'马苏里拉奶酪':4},\
'加料':{'蛋黄酱':2,'芥末':0,'生菜':1,'西红柿':2}}
#2.菜单选项,列表有sum功能
price=[]
a=pyip.inputMenu(prompt='请选择面包类型:\n',choices=list(sandwich['面包']),blank=True)
if a=='':
print('已退出点餐')
sys.exit()
b=pyip.inputMenu(prompt='请选择蛋白类型:\n',choices=list(sandwich['蛋白质']),blank=True,default=0) #考虑不加蛋白情况,增加blank
cheeseYN=pyip.inputYesNo('是否需要奶酪?')
if cheeseYN=='yes':
c=pyip.inputMenu(prompt='请选择奶酪类型:\n',choices=list(sandwich['奶酪']))
else:
c=int(0)
#加料价格
def jialiao(liao):
prompt=f'是否需要{liao}?\n'
a=pyip.inputYesNo(prompt,blank=True,default=0)
if a=='yes':
price.append(sandwich['加料'][liao])
else:
price.append(0)
for i in sandwich['加料']:
jialiao(i)
#单个汉堡价格
price.append(sandwich['面包'][a])
price.append(sandwich['蛋白质'].get(b,0))
price.append(sandwich['奶酪'].get(c,0))
price=sum(price)
#需要多少个三文治
numS=pyip.inputInt('询问他们想要多少三明治?',min=1)
sumPrice=price*numS
print('总消费金额 :'+str(sumPrice)+'元')