我正在嘗試創建一個可以充當計算器專案頻率表的類。我在以格式良好的方式列印表格時遇到問題。這是我當前的代碼:
class FrequencyTable:
def __init__(self, data: list, freq: list):
self.data = data
self.freq = freq
self.table_as_dict = {}
for item in self.data:
item = str(item)
self.table_as_dict[item] = self.freq
def print(self):
print("|Item|Frequency|")
print("|--------------|")
for item in self.table_as_dict:
item = str(item)
while True:
if f"{str(item)}" < 4:
item = f"{item} "
else:
break
r_item = self.table_as_dict[item]
while True:
if len(item) < 9:
r_item = f"{r_item} "
else:
break
print(f"|{item}|{r_item}|")
print 函式一直有效,直到 while 回圈中的第一個 if 陳述句拋出例外
TypeError: 'int' 型別的物件沒有 len() 例如
table = FrequencyTable([1,2,3], [7,8,9])
table.table_as_dict 將是 {1: 7, 2: 8, 3: 9}。如果我打電話給列印,我會得到:
|Item|Frequency|
|--------------|
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "filepath", line 14, in print
item = str(item)
如何獲得列印功能以列印所有資料同時保持其格式?
uj5u.com熱心網友回復:
我相信您在 while 回圈中嘗試做的事情可以通過ljust字串物件來實作。
class FrequencyTable:
def __init__(self, data: list, freq: list):
self.data = data
self.freq = freq
self.table_as_dict = {}
for item in self.data:
item = str(item)
self.table_as_dict[item] = self.freq
def print(self):
item_ljust = 10
freq_ljust = 9
print(f"|{'Item'.ljust(item_ljust)}|{'Frequency'.ljust(freq_ljust)}|")
print(f"|{''.join('-' for _ in range(item_ljust freq_ljust 1))}|")
for item in self.table_as_dict:
item = str(item)
r_item = self.table_as_dict[item]
print(f"|{item.ljust(item_ljust)}|{str(r_item).ljust(freq_ljust)}|")
d = FrequencyTable(data=["1", "2", "3"], freq=[3, 4, 5])
d.print()
輸出:
|Item |Frequency|
|--------------------|
|1 |[3, 4, 5]|
|2 |[3, 4, 5]|
|3 |[3, 4, 5]|
但是,您的表字典可能是錯誤的,而您真正想要的是:
class FrequencyTable:
def __init__(self, data: list, freq: list):
self.data = data
self.freq = freq
self.table_as_dict = {k: v for k, v in zip(data, freq)}
def print(self):
item_ljust = 10
freq_ljust = 9
print(f"|{'Item'.ljust(item_ljust)}|{'Frequency'.ljust(freq_ljust)}|")
print(f"|{''.join('-' for _ in range(item_ljust freq_ljust 1))}|")
for item, r_item in self.table_as_dict.items():
print(f"|{item.ljust(item_ljust)}|{str(r_item).ljust(freq_ljust)}|")
d = FrequencyTable(data=["1", "2", "3"], freq=[3, 4, 5])
d.print()
輸出:
|Item |Frequency|
|--------------------|
|1 |3 |
|2 |4 |
|3 |5 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507876.html
上一篇:GNSS模塊的投影
