python 中的输入值可以作为 python 函数中的参数吗?

问题描述 投票:0回答:2

我尝试在 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

我调用该函数是否正确?请问我的问题出在哪里?

python function input parameters arguments
2个回答
0
投票
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
循环来调用函数,并使用列表或字典来存储值,请参阅如何创建可变变量?


0
投票

删除参数并返回结果:

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()
© www.soinside.com 2019 - 2024. All rights reserved.