以下是计算超市账单的代码。一切都还可以,但问题是我被告知如果输入只是苹果,这个解决方案将不起作用。
我相信苹果的价值应该是0,因为苹果不在股票中,但我仍然相信有些东西我做得不对。请帮忙。
groceries = ["apple","banana", "orange",]
stock = {"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def computeBill(food):
total = 0
for item in food:
tot = prices[item] * stock[item]
print item, tot
total += tot
return total
computeBill(groceries)
答案 0 :(得分:1)
我不知道为什么这不起作用。如果您的输入为['apple']
,则会发生这种情况:
computeBill(['apple'])
total = 0
item = 'apple'
tot = price['apple'] * stock['apple']
tot = 2 * 0
print 'apple',0
total += 0
return total
return 0
除非他们希望能够传递单个项目而不将其包装在列表中,所以调用`computeBill('apple')。在这种情况下,您必须在函数开头进行类型检查。这可能看起来像这样
if type(food) is not list:
food = [food]
答案 1 :(得分:1)
我将自行回答这个问题并提出建议,因为您的computeBill
功能的规格似乎没有明确定义。
如果这些项目没有库存,并且您的教师说在这种情况下返回0
是不可接受的,那么您的其他选项是引发异常,或者是指示错误状态的标记值。< / p>
def computeBill(food):
total = 0
for item in food:
stock_count = stock[item]
if stock_count == 0:
raise ValueError("item %s is out of stock" % item)
tot = prices[item] * stock_count
print item, tot
total += tot
return total
或者,如果您不想提出异常,如果您认为不是有效总数,则可以返回-1
:
if stock_count == 0:
return -1
该函数在计算列表与库存方面存在一些其他问题,但您说您现在并不关心这些问题。
答案 2 :(得分:0)
package com.brr.uet.robo;
import com.google.devtools.simple.runtime.components.Component;
import com.google.devtools.simple.runtime.components.HandlesEventDispatching;
import com.google.devtools.simple.runtime.components.android.ActivityStarter;
import com.google.devtools.simple.runtime.components.android.Button;
import com.google.devtools.simple.runtime.components.android.Form;
import com.google.devtools.simple.runtime.components.android.HorizontalArrangement;
import com.google.devtools.simple.runtime.components.android.Label;
import com.google.devtools.simple.runtime.components.android.Notifier;
import com.google.devtools.simple.runtime.events.EventDispatcher;
public class MainActivity extends Form implements HandlesEventDispatching {
private Label touchZombieLabel;
private HorizontalArrangement horizontalArrangement1;
private Button zombieButton;
private AccelerometerSensor accelerometerSensor1;
}