2017-11-19 2 views
0

Python-Neuling. Ich habe überall nach einer Lösung gesucht und alles, was ich zu tun habe, ist eine Sache zu reparieren und eine andere zu brechen.Python - Drucken x Anzahl der Elemente pro Zeile

Ich muss eine Liste der ungeraden Zahlen zwischen 1 und 50 ausdrucken und 10 Zahlen pro Zeile drucken. Die Zahlen in jeder Zeile sollten rechtsbündig sein.

Dies ist wahrscheinlich die nächste, die ich bekommen habe, aber ich kann nicht die Zeichenfolge Werte rechts ausrichten.

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

Ich habe versucht, diese Option auch, aber ich kann nicht herausfinden, wie 10 pro Reihe zu bekommen, noch kann ich sie bekommen zu rechtfertigen.

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

Jede Hilfe ist willkommen. Bitte erklären Sie so einfach wie möglich, während ich noch lerne. Vielen Dank!

Antwort

0

zunächst eine list aller numbers schaffen, die right-justified als strings gewesen sind, dann print sie:

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))) 

und einige Tests:

>>> 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

danke - genau das, was ich brauchte! – kiki1113

0

die Liste der Zahlen Constructing, wie Sie getan haben, dann über die Liste so oft wie nötig zu iterieren ist die Antwort.

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) 

Die letzten beiden Zeilen kann die Schleife, der Funktion als Liste Verständnis neu geschrieben werden, aber IMO wird es schwer sein, so zu lesen.

Verwandte Themen