2017-11-19 9 views
0

Python初心者。私はすべての解決策を探し求めました。私がしなければならないことは、あるものを修正して別のものを壊すことです。Python - 1行にx個の項目を印刷する

1から50までの奇数のリストを印刷し、1行に10の数字を印刷する必要があります。各行の数字は右寄せにする必要があります。

これはおそらく私が得たものですが、文字列の値を右揃えにすることはできません。

def odd() : 
     rows = [] 
     row = '\t'.join(map(str,(i for i in range (1, 50, 2)))) 
     rows.append('{}'.format(row)) 
     print('\n'.join(rows)) 

    odd() 

Sample Output

また、私は、このオプションを試してみましたが、私は、行ごとに10を取得する方法を見つけ出すことができない、また私はそれらを正当化するために得ることができます。

def odd(): 
lower_limit =1 
upper_limit = 50 


for i in range (lower_limit, upper_limit,2): 
    print("{:>5}".format(i), end="") 

print() 

odd() 

Sample Output 2

すべてのヘルプは高く評価されます。私がまだ学んでいる限り、できるだけ簡単に説明してください。ありがとうございました!

答えて

0

まずprintそして、それらをstringsとしてright-justifiedされているすべてのnumberslistを作成します。

def oddTable(width, lim): 
    nums = [str(i).rjust(len(str(lim))+1) for i in range(1, lim, 2)] 
    print('\n'.join(''.join(nums[i:i+width]) for i in range(0, len(nums), width))) 

といくつかのテスト:あなたが行っているよう

>>> oddTable(10, 50) 
    1 3 5 7 9 11 13 15 17 19 
21 23 25 27 29 31 33 35 37 39 
41 43 45 47 49 
>>> oddTable(20, 200) 
    1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 
    41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 
    81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 
121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 
161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 
+0

ありがとう - ちょうど私が必要なもの! – kiki1113

0

は番号のリストを構築します必要に応じて何回もリストを反復することで答えが得られます。

from math import ceil 

def odd_numbers(upper_limit, chunk_size): 
     lst = [i for i in range(1, upper_limit, 2)] 
     size = len(lst) 
     num_lines = ceil(size/chunk_size) 
     for i in range(0, num_lines): 
       print(" ".join([str(i) for i in lst[i*chunk_size+1 : (i+1)*10]])) 

odd_numbers(50, 10) 

最後の2行は、関数のループは、リスト内包のように書き換えることができますが、IMOそのように読みにくいだろう。

関連する問題