簡體   English   中英

Python從列表中打印浮點數

[英]Python printing floating point numbers from a list

嗨,我是編程新手,有一個小問題。

我有一些代碼試圖打印出結果。 當我打印時,它為我提供了一些數字,其中許多小數位,而有些數字中只有一個。 如果我嘗試將占位符從“ s”更改為“ d”或“ f”,則告訴我它必須是數字而不是列表。

無論如何,要得到它來打印兩位小數的數字?

這是代碼:

ftp = 230
zones = []

def zone(n): 
    return   ftp * n

multipliers = (.55,.56,.75,.76,.85,.86,.95,.96, 1.05, 1.06, 1.20, 1.21, 1.50,1.51)

for i in (multipliers):
   zones.append(zone(i))

format = ('%-*s%*s')
header_format = '%-*s%*s'
print '=' * 65
print header_format % (45, 'Zone', 10, 'Range')
print '-' * 65

print format % (45,'Active Recovery               Below ==>> ',10, zones[:1])
print format % (45,'Endurance',10, zones[1:3])
print format % (45,'Tempo',10, zones[3:5])
print format % (45,'Sweet Spot',10, zones[5:7])
print format % (45,'Threshhold',10, zones[7:9])
print format % (45,'VO2',10, zones[9:11])
print format % (45,'Anaerobic',10, zones[11:13])
print format % (45,'Neuromuscular                 Above ==>>',5, zones[12])
print '=' * 65

是的,您只需要相應地調整format字符串即可。

現在,您有了(帶有多余的括號,就像您在其他地方一樣,BTW):

format = ('%-*s%*s')

此格式將格式化兩個具有給定寬度和對齊方式的字符串-因此,您將獲得的浮點列表作為zones切片將被“僅字符串化”,而無法控制格式化的詳細信息。

有時您發出單個浮動,有時兩個。 最好將兩個單獨的格式字符串用於兩個單獨的目的。

因此,對於單個浮動

format1 = '%-*s%*.2f'

對於其中兩個

format2 = '%-*s%*.2f%*.2f'

現在,相應地編輯各種print語句,例如,最后一個將變為

print format1 % (45,'Neuromuscular                 Above ==>>',5, zones[12])

和它之前的那個

print format2 % (45,'Anaerobic',5,zones[11],5,zones[12])

(這里的括號不是多余的,因為您需要%運算符的RHS上的元組。

順便說一句,新的字符串format方法比舊的%格式化運算符更具可讀性,我建議切換到它。

您可以將數字的格式與其余字符串分開設置:

two_numbers_format = '(%.2f - %.2f)'

然后有:

print format % (45,'Endurance',10, two_numbers_format % zones[1:3])

對於一個數字:

one_number_format = '%.2f'
print format % (45,'Active Recovery               Below ==>> ',10, one_number_format % zones[:1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM