我是一位经验丰富的c
程序员,正试图与Python
达成协议。
location
是tuple
,我可以使用以下
print(" %s %s" % (date_time, model))
print("Lat: %-.4f, Lon: %-.4f" % (location))
我尝试将其合并为一个打印件,但使用以下
获取错误TypeError: must be real number, not tuple
print("%s %s Lat: %-.4f, Lon: %-.4f" % (date_time, model, location))
我尝试了几种变体,但没有成功。
我可以想到几种解决这个问题的方法(如果我必须提供一个工作程序,我会这样做),但是想要了解一个有经验的Python程序员会使用的优雅方法。
答案 0 :(得分:2)
打开你的元组。
>>> date_time, model, location = 1, 2, (3, 4)
>>> print("%s %s Lat: %-.4f, Lon: %-.4f" % (date_time, model, *location))
1 2 Lat: 3.0000, Lon: 4.0000
pyformat.info是一个有用的网站,用于汇总Python中的字符串格式。
一般情况下,我建议在str.format
运算符上使用新式%
。 Here's相关的PEP。
答案 1 :(得分:2)
您希望在元组中打印 值,而不是元组本身。连接元组:
print("%s %s Lat: %-.4f, Lon: %-.4f" % ((date_time, model) + location)))
或将元组值插入第一个元组:
print("%s %s Lat: %-.4f, Lon: %-.4f" % (date_time, model, *location))
就个人而言,我并不是在所有中使用printf格式。使用更现代,更强大的string formatting syntax,最好采用(非常快)formatted string literals的形式:
print(f"{date_time} {model} Lat: {location[0]:-.4f}, Lon: {location[1]:-.4f}")