0

結果値の調整に問題があります。

Alist = ["1,25,999",
     "123.4,56.7890,13.571",
     "1,23.45,6,7.8"]

c = 0

while c < len(Alist):
    r = 0
    tokens = Alist[c].split(',')

    while r < len(Alist[c].split(',')):
        if '.' in tokens[r]:
            print "%7.2f" %float(tokens[r]), " ",
        else :
            print "%3d" %float(tokens[r]), "    ",    
        r += 1
        print

    c += 1

のように印刷したい

    1    25    999
  123.40 56.79  13.57
    1    23.45   6.     7.80

しかし、どういうわけかそれは印刷されています

    1
   25
  999
   123.40
    56.79
    13.57
     1
    23.45
    6
     7.8

コーディングの何が問題なのかわかりません。

4

3 に答える 3

0

の後にr+1、単一の print ステートメントがあります。インデント レベルが間違っています。スペース 4 つ分 (またはタブ 1 つ分) 左に移動すると、正常に動作するはずです。

于 2013-10-11T01:50:28.523 に答える
0
In [59]: %paste
myList = ["1,25,999",
     "123.4,56.7890,13.571",
     "1,23.45,6,7.8"]
rows = [r.split(',') for r in myList]
widths = {i:max(len(c) for c in col) for i,col in enumerate(itertools.izip_longest(*rows, fillvalue=""))}
for row in rows:
  for i,val in enumerate(row):
    print " "*((widths[i] - len(val))/2), val, " "*((widths[i] - len(val))/2) if not (widths[i]-len(val))%2 else " "*((widths[i] - len(val)+1)/2),
  print

## -- End pasted text --
   1       25       999   
 123.4   56.7890   13.571 
   1      23.45      6      7.8 
于 2013-10-11T02:13:10.197 に答える