所以,我一直在做代码学院。我有一项任务,说我需要返回以前函数的总和。我怎么做,因为这种方式不起作用?我如何避免将来遇到这个问题?
def hotel_cost(nights)
nights = raw_input("How many nights are you staying? ")
if nights == 0:
return 0
elif nights > 0:
return 140 * nights
def plane_ride_cost(city):
if city == "Charlotte":
cost = 183
elif city == "Tampa":
cost = 220
elif city == "Pittsburgh":
cost = 222
elif city == "Los Angeles":
cost = 475
return cost
def rental_car_cost(days):
days = nights
cost = days * 40
if days >= 7:
cost -= 50
elif days >= 3:
cost -= 20
return cost
def trip_cost(city, days):
return rental_car_cost(days) + plane_ride_cost(cost) + hotel_cost(days)
我收到此错误:
hotel_cost(1) raised an error:
invalid literal for int() with base 10
答案 0 :(得分:1)
nights = raw_input("How many nights are you staying? ")
raw_input
返回一个字符串,需要将其转换为整数。使用int(nights)
。
int()文档
答案 1 :(得分:1)
试试这个:
nights = input("How many nights are you staying? ")
input()
返回一个int
我认为如果你避免在函数中获取用户输入会更好,在这种特殊情况下你可以收集外部函数中的所有信息,例如:
if __name__ == '__main__':
days = input('Something..')
nights = input('Something...')
city = raw_input('Something...')
# do whatever you want with data
print plane_ride_cost(city) + rental_car_cost(days) + hotel_cost(nights)
不知道你使用这个例子的方式......
你可以阅读input()
答案 2 :(得分:0)
如果您只想要整数作为输入,请更改以下行:
nights = raw_input("How many nights are you staying? ")
要:
nights = int(raw_input("How many nights are you staying? "))
这将通过将int()
投射到您的raw_input()
来修复错误,>>> x = raw_input()
98
>>> type(x)
<type 'str'>
>>> x = int(raw_input())
23
>>> type(x)
<type 'int'>
>>>
会返回一个字符串。
{{1}}