f=open('food.dat','w+')
rates=0
rate=0
print"Menu is:"
print""" 1.Starters
2.Main Courses
3.Snacks
4.Drinks
5.Desserts"""
hotel_food1={1:'Starters',
2:'Main Courses',
3:'Snacks',
4:'Drinks',
5:'Desserts'}
while True:
food=input("Enter the food type:")
if(hotel_food1.has_key(food)==1):
print"Menu is:"
print"""1.Salmon Devilled Eggs
2.Baked Parika Cheese
3.Ricotta and Parmesan Fritters
4.Traditional Welsh Cawl
5.Summer Ratatouille Salad"""
hotel_starter={1:'Salmon Devilled Eggs',
2:'Baked Parika Cheese',
3:'Ricotta and Parmesan Fritters',
4:'Traditional Welsh Cawl',
5:'Summer Ratatouille Salad'}
fd=input("ENter the food type")
if(hotel_starter.has_key(fd)==1):
rate=rate+234
elif(hotel_starter.has_key(fd)==2):
rate=rate+345
elif(hotel_starter.has_key(fd)==3):
rate=rate+200
elif(hotel_starter.has_key(fd)==4):
rate=rate+110
elif(hotel_starter.has_key(fd)==5):
rate=rate+334
ch=raw_input("Do you want to continue? yes/no??")
if(ch=='no'):
break
rates=rates+rate
f.write(str(rates))
f.seek(0,0)
x=f.read()
print x
f.close()
您好,在上面的程序中,当我将食物输入为1,fd输入为1时,我必须得到值234印刷品。但是当我运行这个程序时,我得到的值是0。压痕有问题吗?字典的使用是否正确??请帮帮我!谢谢您!你知道吗
has_key
返回布尔值,即==1
,因此只要用户输入字典中存在的键,第一个测试将始终计算true,因为has_key(fd)
==true和True == 1
。所以你需要修正你的逻辑。你知道吗不过,我认为您的做法是错误的,因为当您可以通过嵌套字典来更恰当地处理这个问题时,它很快就变成了if/elif/else语句的意大利面代码。这也有助于提高可读性。你知道吗
您可以查看正确初始化和嵌套词典,并将速率作为dict的一部分。这只是一个示例:
使用这种数据结构,您可以轻松地按键查询:
此外,要打印菜单:
所以在一个例子中,你可以做:
相关问题 更多 >
编程相关推荐