我对Python还是很陌生(约8个小时的经验,在两天内学习),并做一些自己创建的练习来练习新近学习的信息。目前专注于类和函数。 该代码与出售水果有关:有一个类别的水果,它带有名称,颜色,price_usd及其对象。还有一个“购物车”列表和total_cost(最初设置为0)。我已经使代码正常工作,但是现在尝试不使用函数重复代码。
我创建了一个名为“购买”的函数,该函数会打印选择的水果,将其添加到购物车中,并将其值添加到total_cost中。但是,我获得了total_cost的“未解析引用”(但不是购物车的引用,这也是函数之外的变量吗?)
Error message: "UnboundLocalError: local variable 'total_cost' referenced before assignment)
(显示的代码是一个单独的文件,具有我要解决的问题,然后将其包含在主文件中。但是,没有新的变量,因为主文件只有很多条件语句和新对象。)< / p>
尝试在函数之前和之后创建total_cost。还尝试“手动”将fruit_choice.price_usd添加到total_cost: “总成本=总成本+ fruit_choice.price_usd” 它创建了局部变量“ total_cost”,并为第二个total_cost给出了“未解决的引用”
import fruit as fr
apple = fr.Fruits("Apple", "red", price_usd=0.88)
shopping_cart = []
# total_cost = 0
def buy(fruit_choice):
print(f"A(n) {fruit_choice.name} has been added to your shopping cart.")
shopping_cart.append(fruit_choice.name)
##############################################
total_cost += fruit_choice.price_usd
print(f" The total cost is: {total_cost}")
##############################################
total_cost = 0
print(shopping_cart, "\n", buy(apple))
(错误消息的来源是### ...之间。)
我希望将fruit_choice.price_usd添加到total_cost中。如果是这样的话,会更容易,因为每个水果的代码都是相同的。
在此先感谢您的宝贵帮助!
答案 0 :(得分:1)
如果您想使用在函数外部创建的变量,则需要将其作为参数传递或像这样使用global关键字:
使用 @RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity add(@RequestBody String jsonCar ) throws Exception {
Car car = new Gson().fromJson(jsonCar, Car.class);
// repository.save(car);
System.out.println("Json== " + jsonCar);
System.out.println("pojo==" + car);
return new ResponseEntity<>(HttpStatus.CREATED);
}
关键字:
global
作为参数:
apple = fr.Fruits("Apple", "red", price_usd=0.88)
shopping_cart = []
# total_cost = 0
def buy(fruit_choice):
print(f"A(n) {fruit_choice.name} has been added to your shopping cart.")
global total_cost;
shopping_cart.append(fruit_choice.name)
##############################################
total_cost += fruit_choice.price_usd
print(f" The total cost is: {total_cost}")
##############################################
total_cost = 0
print(shopping_cart, "\n", buy(apple))
apple = fr.Fruits("Apple", "red", price_usd=0.88)
shopping_cart = []
# total_cost = 0
def buy(fruit_choice,total_cost):
print(f"A(n) {fruit_choice.name} has been added to your shopping cart.")
global total_cost;
shopping_cart.append(fruit_choice.name)
##############################################
total_cost += fruit_choice.price_usd
print(f" The total cost is: {total_cost}")
return total_cost
##############################################
total_cost=buy(apple)
print(shopping_cart, "\n",total_cost)
变量需要在第一次调用total_cost
之前创建,如果在定义buy()
之前或之后创建变量并不重要