我尝试在 Python 中调用函数,但收到错误:
File "<exec>", line 11, in <module> NameError: name 'item_bought_1' is not defined
问题:
我正在用Python编写一个简单的程序,询问用户他们购买的商品、购买商品的价格和数量。(稍后它会以表格格式显示输入。我在这里没有包含该代码)。这是相关的初始代码(要求用户输入商品、价格和数量,并计算每个商品的总数):
#ask the user what item they intend to buy as well as the unit price and number of items they intend to buy
item_bought_1 = input("What item has been bought?")
unit_price_1 = input("How much is each unit of " + item_bought_1)
quantity_1 = input("How many units of "+ item_bought_1 + " have been bought?")
item_total_1 = int(unit_price_1) * int(quantity_1)
item_bought_2 = input("ITEM 2::: What item has been bought?")
unit_price_2 = input("How much is each unit of " + item_bought_2)
quantity_2 = input("How many units of "+ item_bought_2 + " have been bought?")
item_total_2 = int(unit_price_2) * int(quantity_2)
item_bought_3 = input("ITEM 3:::What item has been bought?")
unit_price_3 = input("How much is each unit of " + item_bought_3)
quantity_3 = input("How many units of "+ item_bought_3 + " have been bought?")
item_total_3 = int(unit_price_3) * int(quantity_3)
item_bought_4 = input("iTEM 4:::What item has been bought?")
unit_price_4 = input("How much is each unit of " + item_bought_4)
quantity_4 = input("How many units of "+ item_bought_4 + " have been bought?")
item_total_4 = int(unit_price_4) * int(quantity_4)
我试图通过使用函数来减少代码的重复性:
#ask the user what item they intend to buy as well as the unit price and number of items they intend to buy
def question_asker(item_bought, unit_price, quantity, item_total):
item_bought = input("What item has been bought?")
unit_price = input("How much is each unit of " + item_bought)
quantity = input("How many units of "+ item_bought + " have been bought?")
item_total = int(unit_price) * int(quantity)
question_asker(item_bought_1, unit_price_1, quantity_1, item_total_1)
question_asker(item_bought_2, unit_price_2, quantity_2, item_total_2)
question_asker(item_bought_3, unit_price_3, quantity_3, item_total_3)
question_asker(item_bought_4, unit_price_4, quantity_4, item_total_4)
但是我收到错误:
File "<exec>", line 11, in <module>
NameError: name 'item_bought_1' is not defined
我调用该函数是否正确?请问我的问题出在哪里?
question_asker(item_bought_1, unit_price_1, quantity_1, item_total_1)
question_asker(item_bought_2, unit_price_2, quantity_2, item_total_2)
question_asker(item_bought_3, unit_price_3, quantity_3, item_total_3)
question_asker(item_bought_4, unit_price_4, quantity_4, item_total_4)
这些变量都不存在,但是
question_asker
无论如何都不需要任何参数。
您应该将
def question_asker(item_bought, unit_price, quantity, item_total):
更改为 def question_asker():
,然后根据需要调用它多少次,在这种情况下
question_asker()
question_asker()
question_asker()
question_asker()
请注意,您需要决定它应该返回什么(如果有的话)。返回可能有意义
item_total
:
def question_asker():
...
item_total = int(unit_price) * int(quantity)
return item_total
...
item_total_1 = question_asker()
item_total_2 = question_asker()
item_total_3 = question_asker()
item_total_4 = question_asker()
此时,您可能需要使用
for
循环来调用函数,并使用列表或字典来存储值,请参阅如何创建可变变量?
删除参数并返回结果:
def question_asker():
item_bought = input("What item has been bought?")
unit_price = input("How much is each unit of " + item_bought)
quantity = input("How many units of "+ item_bought + " have been bought?")
item_total = int(unit_price) * int(quantity)
return item_bought,unit_price,quantity,item_total
item_bought_1, unit_price_1, quantity_1, item_total_1 = question_asker()
item_bought_2, unit_price_2, quantity_2, item_total_2 = question_asker()
item_bought_3, unit_price_3, quantity_3, item_total_3 = question_asker()
item_bought_4, unit_price_4, quantity_4, item_total_4 = question_asker()