Python函数传参异常:数值重复输出问题求助
问题:调用乘法函数却得到字符串重复结果
我调用一个需要传入两个参数的hotel_cost函数(作为holiday_cost的参数),预期计算两数乘积,但实际输出是第一个参数重复第二个参数次数的结果(比如传25和5,输出2525252525)。
原代码
holiday_cost(hotel_cost(prices[menus[user_hotel+7]], num_nights)) # hotel_cost 是 holiday_cost 的内部函数,需传入两个参数进行乘法运算
实际输出
2525252525
尝试过的写法
holiday_cost(hotel(f"£{prices[menus[user_hotel+7]]},{num_nights}"))
解决思路
- 核心问题是第一个参数是字符串类型:Python中字符串和数字相乘会触发字符串重复行为,而非数值乘法。比如
"25" * 5就会得到"2525252525"。 - 先处理参数类型:
- 提取数字:如果
prices[menus[user_hotel+7]]返回的是带£符号的字符串(比如"£25"),先用replace去掉符号:prices[menus[user_hotel+7]].replace("£", "") - 转换为数值:用
int()或float()把处理后的字符串转成数字,比如int(prices[menus[user_hotel+7]].replace("£", "")) - 正确调用函数:
hotel_price = int(prices[menus[user_hotel+7]].replace("£", "")) holiday_cost(hotel_cost(hotel_price, num_nights))
- 提取数字:如果
- 你尝试的拼接字符串写法错误:把两个参数拼成一个字符串后,函数只会收到一个参数,完全不符合
hotel_cost需要两个参数的要求,不要用这种方式。 - 检查
hotel_cost实现:确保它确实在做数值乘法,没有意外处理字符串:def hotel_cost(a, b): return a * b # 确认a、b都是数值类型,不是字符串
内容的提问来源于stack exchange,提问作者user22966617
相关产品推荐
相关产品推荐

