Python3-向列表中添加一个整数并以一种格式打印它

Python3-向列表中添加一个整数并以一种格式打印它,python,python-3.x,Python,Python 3.x,我的清单如下所示: 1st name, last name, wins, losses zac,kop,5,6 jack,mop,0,11 farth,tal,11,0 darth,vader,2,9 nump,kk,1,10 if int(data[2]) >= 1: ['zac', 'kop', '5', '6\n', 15] 我的代码是: def points(): template = "|{0:30}|{1:30}|{2:30}|{3:30}|{4:30}"

我的清单如下所示:

1st name, last name, wins, losses
zac,kop,5,6
jack,mop,0,11
farth,tal,11,0
darth,vader,2,9
nump,kk,1,10
if int(data[2]) >= 1:
['zac', 'kop', '5', '6\n', 15]
我的代码是:

def points():
    template = "|{0:30}|{1:30}|{2:30}|{3:30}|{4:30}"
    lol = template.format("1st name: ","2nd Name: ", "won: ", "lost: ","points: ")
    print(lol)

    with open(r'prac2.txt', 'r') as file:
        for line in file:
            data = line.split(',')

            if data[2] >= ('1'):
                poin = (int(float(data[2]))) * 3)
                add_list = data.insert(4,poin)
                print('|{0[0]:<30}|{0[1]:<30}|{0[2]:<30}|{0[3]:<30}|{0[4]:<30}'.format(data))

points()
代码应该只打印出至少赢过一场的玩家的信息

每场胜利是3分,因此程序必须计算每个玩家的分数,并将其与他们的信息一起显示在表格中


问题是,当它在缩进的换行线上打印点时,只有列表上的最后一个玩家不受此问题的影响。请提供帮助。

您的问题中至少有一个是数据类型:

这里有两个字符串,按字典顺序对它们进行比较。你真的想要两个数字,并在算术上进行比较

如果没有任何错误处理,则如下所示:

1st name, last name, wins, losses
zac,kop,5,6
jack,mop,0,11
farth,tal,11,0
darth,vader,2,9
nump,kk,1,10
if int(data[2]) >= 1:
['zac', 'kop', '5', '6\n', 15]
拆分行中的最后一个字符串包含换行符。你需要脱掉它

或者,当你读这行时:

data = line.strip().split(',')
这会给你想要的:

>>> points()
|1st name: |2nd Name: |won:      |lost:     |points:   
|zac       |kop       |5         |6         |15        
|farth     |tal       |11        |0         |33        
|darth     |vader     |2         |9         |6  
|nump      |kk        |1         |10        |3     
同样相关的还有:

template = "|{0:<30}|{1:<30}|{2:<30}|{3:<30}|{4:<30}"
...
print(template.format(*data))
工作并实际使用您设计的模板

*将列表中的数据添加到各个组件中,这样您就不必在其中下标它们,在本例中,这相当于执行以下操作:


printtemplate.formatdata[0]、data[1]、data[2]、data[3]、data[4]

问题在于您没有从行的最后一个元素中删除行尾字符!在打印之前,插入点后,数据如下所示:

1st name, last name, wins, losses
zac,kop,5,6
jack,mop,0,11
farth,tal,11,0
darth,vader,2,9
nump,kk,1,10
if int(data[2]) >= 1:
['zac', 'kop', '5', '6\n', 15]
要修复它,您可以向数据中添加=。。。这一行:

data = line.strip().split(',')
还有几点:

要比较数字时不要比较字符串 跳过标题行,例如在循环之前使用nextfile 在施法中没有任何一点是浮动和整数,只需使用整数即可 而不是插入4。。。只需使用append添加到列表的末尾
您的列表看起来不像列表。字符串按字典顺序进行比较。如果要进行数值比较:intdata[2]>=1。我确信这是一个重复的问题,我只是还没有找到它。如果数据[2]>='1'字母数比较。这是故意的吗?poin=intfloatdata[2]*3在数据[2]中有一个过多的结束括号。周围的括号也可以被删除。@ Wii使用结束=不会删除一个\n在中间的字符串。