我正在尝试使用CS Dojo's tutorial学习Python。我目前正在完成他给我们的任务,这是建立“英里到公里转换器”。任务本身非常简单,但是我想构建一个程序,其功能远不止于此。我希望输出像
“距离” +“名称(例如,从纽约到华盛顿)” +“是” +(值)+“公里”。
但是它不断给我同样的错误信息。 我的代码是
#英里变量 name1 =“ from_NewYork_to_Washington” miles1 = 20
name2 = "from_Boston_to_Dallas"
miles2 = 30
name3 = "from_Tokyo_to_Seoul"
miles3 = 40
#define function
def conver(name, distance):
d = distance * 1.6
print("result: ")
print(d)
return "The distance" + name + "is" + d + "in kilometers."
# result variables
result1 = conver(name1, miles1)
result2 = conver(name2, miles2)
result3 = conver(name3, miles3)
错误消息如下:
result:
32.0
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-135-4d54c2c21df2> in <module>()
17
18 # result variables
---> 19 result1 = conver(name1, miles1)
20 result2 = conver(name2, miles2)
21 result3 = conver(name3, miles3)
<ipython-input-135-4d54c2c21df2> in conver(name, distance)
14 print("result: ")
15 print(d)
---> 16 return "The distance" + name + "is" + d + "in kilometers."
17
18 # result variables
TypeError: must be str, not float
谢谢。
答案 0 :(得分:1)
d 值需要先转换为字符串,然后才能与其他return语句连接:
d = str(distance * 1.6)
答案 1 :(得分:0)
要做:
return "The distance" + name + "is" + str(d) + "in kilometers."
因为很难将一个字符串与一个int连接起来,所以它不知道您想做什么
答案 2 :(得分:0)
在Python 3.6+中,f字符串可节省您输入难看的引号和加号的时间,并大大提高了可读性。
return f"The distance {name} is {d} in kilometers."
您还可以轻松地在f字符串内部进行格式化
return f"The distance {name.title()} is {d:.2f} in kilometers."