2015-08-30 55 views
0

正如你從下面的代碼可以看到的,我有我的程序從文本文件(homework.txt)讀取文本到名爲heightandweight的列表。然後,我一次在列表中打印3個項目。但它不會在一行上打印3條信息。我會怎麼做?如何一次打印列表中的n(3)個項目,然後將它們顯示在一行上。 Python 3

myFile = open("homework.txt","rt") 
heightandweight = [] 

for line in myFile: 
    line = line.strip("\n") 
    heightandweight.append(line) 

print(heightandweight) 
myFile.close() 

for e in range (0, len(heightandweight),3): 
    for i in heightandweight[e:e+3]: 
     print (i) 

上面的代碼將輸出:

['James', '73', '1.82', 'Peter', '78', '1.80', 'Jay', 'Beth', '65', '1.53', 'Mags', '66', '1.50', 'Joy', '62', '1.34'] 
James 
73 
1.82 
Peter 
78 
1.80 
Jay 
Beth 
65 
1.53 
Mags 
66 
1.50 
Joy 
62 
1.34    
+0

是周杰倫應該有一個身高和體重還是應該你的代碼是能夠應付他們失蹤的情況? – or1426

+0

類似的問題已回答[這裏] [1]。 [1]:http://stackoverflow.com/questions/5598181/python-print-on-same-line –

+0

謝謝!我如何計算出所有人的平均身高和平均體重?這個列表中的高度是2位數的整數? – user3700518

回答

0

如果您不想使用格式字符串(即如果你只是想打印出一組數據,而無需換行),那麼你可以通過使用防止換行:

print data, 

或者,如果你使用Python 3:

print(data, end="") 

假設後者,你的代碼將如下所示:

for e in range (0, len(heightandweight),3): 
    for i in heightandweight[e:e+3]: 
     print(i, end="") 
    print("") 
1

你可能需要學習的蟒蛇大約formatting strings。在你的情況下,相關的代碼會是這樣的:

for e in range (0, len(heightandweight),3): 
    string="{} {} {}".format(heightandweight[e], heightandweight[e+1], heightandweight[e+2]) 
    print(string) 

這可能是壓縮成剛:

for e in range (0, len(heightandweight),3): 
    print("{} {} {}".format(heightandweight[e], heightandweight[e+1], heightandweight[e+2])) 

但是這將是更簡潔,以有原來的文本文件,可以在塔這樣的組織:

James 73 1.82 
Peter 78 1.80 
Beth 65 1.53 
Mags 66 1.50 
Joy 62 1.34 

那麼你的代碼可以簡化爲:

with open("homework.txt","rt") as myFile: 
    for line in myFile: 
     name, height, weight = line.split(' ') 
     print("{} {} {}".format(name, height, weight)) 
+0

我認爲最後的解決方案是正確的 –

0

簡單的迭代器:

lst=['James', '73', '1.82', 'Peter', '78', '1.80', 'Jay', 'Beth', '65', '1.53', 'Mags', '66', '1.50', 'Joy', '62', '1.34'] 
lst_copy=lst #if You need to use oryginal lst later use it, otherwise dont 
for i in range(len(lst)): 
    try:lst[i]=float(lst[i]) 
    except:pass 
for i in range(0,len(lst),3): 
    try: 
     if type(lst_copy[i+1])!=float: 
      print(lst_copy[i]) 
      lst_copy.pop(i) 
     else: 
      print(i,lst_copy[i:i+3]) 
    except:pass 
相關問題