为什么我不能将带有数字的字符串转换为整数?

时间:2021-04-10 05:23:15

标签: python-3.x

def main():
    handling_cost = 5
    cost_per_item = 4.25
    prompt = "Enter number (5 - 20): "
    get_number(prompt)
    int(prompt)
    get_cost(prompt, cost_per_item, handling_cost)
    display_details(prompt, cost_per_item)
    

def get_number(prompt):
    return int(input(prompt))
def get_cost(number, cost_per_unit, handling_cost):
    total_cost = number * cost_per_unit + handling_cost
    return round(total_cost)
def display_details(items, cost_each, handling_cost, final_price):
    print("Items: ", items, " Cost per item: $", cost_each, sep="")
    print("Handling cost: $", handling_cost, sep="")
    print("Total $", final_price, sep="")
main()

你好,

我在将字符串数字转换为整数时遇到问题。

在代码的第 6 行,我尝试将提示转换为整数,以便可以将其转换为整数,然后在 get_cost 函数中相乘。但我收到如下所示的错误消息:

我该如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:1)

您传递的是 int() 提示而不是用户输入的值。只需去掉 int(prompt) 并将第 5 行更改为 user_val = get_number(prompt)

...
user_val = get_number(prompt)
get_cost(user_val, cost_per_item, handling_cost)
display_details(user_val, cost_per_item)

答案 1 :(得分:1)

我想你可能有点混淆了(或者可能是我没有像你一样理解)但让我们把事情说清楚:

在第 4 行你有:

prompt = "Enter number (5 - 20): "

所以 prompt 是用户将读取然后输入值的字符串。

在第 5 行调用读取值并将其转换为 int 的函数:

get_number(prompt) 

问题是您没有将此函数返回的值分配给任何变量,因此您丢失了读取值。

在第 6 行,您试图将 prompt 转换为 int,但它是一个字符串(它包含在第 4 行分配给它的字符串)

因此您应该做的是在第 5 行声明一个变量并为其分配 get_number`() 调用,例如 value = get_number(prompt)

然后你应该有类似的东西:

prompt = "Enter number (5 - 20): "
value = get_number(prompt)

请记住,在第 7 行和第 8 行,您将 prompt 作为参数发送,但实际上它应该是您的新 value 变量。

get_cost(value, cost_per_item, handling_cost)
display_details(value, cost_per_item)