我有一个函数打开一个名为"table1.txt"的文件,并将逗号分隔值输出为某种格式.
我的功能是:
def sort_and_format():
contents = []
with open('table1.txt', 'r+') as f:
for line in f:
contents.append(line.split(','))
max_name_length = max([len(line[0]) for line in contents])
print(" Team Points Diff Goals \n")
print("--------------------------------------------------------------------------\n")
for i, line in enumerate(contents):
line = [el.replace('\n', '') for el in line]
print("{i:3} {0:{fill_width}} {1:3} {x:3} {2:3} :{3:3}".format(i=i+1, *line,
x = (int(line[2])- int(line[3])), fill_width=max_name_length))
Run Code Online (Sandbox Code Playgroud)
我想出了如何正确格式化,以便"table1.txt文件:
FC Ingolstadt 04, 13, 4, 6
Hamburg, 9, 8, 10
SV Darmstadt 98, 9, 8, 9
Mainz, 9, 6, 9
FC Augsburg, 4, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个函数,该函数使用冒泡排序对列表进行排序,并返回一个包含交换和比较次数的元组。这样:
print(perform_bubble_sort([3, 5, 7]))
>>> (3, 0)
Run Code Online (Sandbox Code Playgroud)
.
我尝试使用以下代码,但由于某种原因它没有返回正确的比较次数。
def perform_bubble_sort(blist):
cmpcount, swapcount = 0, 0
while True:
swapped = False
for i in range(1, len(blist)):
cmpcount += 1
if blist[i-1] > blist[i]:
swapcount += 1
blist[i-1], blist[i] = blist[i], blist[i-1]
swapped = True
if not swapped:
break
return cmpcount, swapcount
Run Code Online (Sandbox Code Playgroud) 我为一个UnorderedList()类创建了一个append方法,它在我的IDLE窗口中工作正常但是当它被分配给大学的测试时:
my_list = UnorderedList()
my_list.append(13)
for num in my_list:
print(num, end=" ")
print()
Run Code Online (Sandbox Code Playgroud)
它返回一个错误:AttributeError: Nonetype object has no attribute 'getNext'
.
这是append方法:
def append(self,item):
current = self.head
while current.getNext() != None:
current = current.getNext()
current.setNext(Node(item))
Run Code Online (Sandbox Code Playgroud)
这是我的其他类和代码:
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
class UnorderedList:
def __init__(self):
self.head = None
self.count = 0
def append(self,item):
current = self.head …
Run Code Online (Sandbox Code Playgroud) 我需要__iter__()
为我的UnorderedList()
课堂写一个方法的帮助。我尝试了这个:
def __iter__(self):
current = self
while current != None:
yield current
Run Code Online (Sandbox Code Playgroud)
但是while
循环不会停止。这是我其余的课程和代码:
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
class UnorderedList:
def __init__(self):
self.head = None
self.count = 0
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序(除其他外),将输入文件('table1.txt')打印为以下所示格式。
其中diff是每行第三和第四值之间的差。
我想我已经弄清了基本思路,然后尝试做:
f = open("table1.txt",'r')
for aline in f:
values = aline.split(',')
print('Team:',values[0],', Points:',values[1],', Diff:',values[2]-values[3],'Goals:',values[2])
f.close()
Run Code Online (Sandbox Code Playgroud)
但这会导致操作数类型错误。我想我只需要更改对文件中的项目进行迭代的方式,但是我不知道如何做。
python ×5
linked-list ×2
sorting ×2
append ×1
csv ×1
listiterator ×1
python-3.5 ×1
python-3.x ×1