2017-02-18 4 views
1

Python 3.5.2を使用していて、一部の列に数値の範囲を出力するユーザーフレンドリーなプログラムを作成したいと考えています。不明な数の列を列として出力する

#User input 
start = 0 
until = 50 
number_of_columns = 4 

#Programmer 
#create list of numbers 
list_of_stuff = [str(x) for x in range(start,until)] 
print("-Created "+str(len(list_of_stuff))+" numbers.") 
#calculate the number of numbers per column 
stuff_per_column = int(len(list_of_stuff)/number_of_columns) 
print("-I must add "+str(stuff_per_column)+" numbers on each column.") 
#generate different lists with their numbers 
generated_lists = list(zip(*[iter(list_of_stuff)]*stuff_per_column)) 
print("-Columns are now filled with their numbers.") 

そのすべてがうまくあるが、ここで私はこだわっているまで:

#print lists together as columns 
for x,y,z in zip(generated_lists[0],generated_lists[1],generated_lists[2]): 
    print(x,y,z) 
print("-Done!") 

私はそのコードを使用しようと、それが番号をハードコードしているために必要とするので、私は除いて何をしたいん列のたとえば、x、y、zは3列分ですが、ユーザー入力に列数を設定し、毎回ハードコードする必要がないようにしたいと考えています。

私には何が欠けていますか?プリント枚数を確認するにはどうすればいいですか?

所望の出力: ユーザが4の列の数を設定した場合、例えば、出力は次のようになります。

1 6 11 16 
2 7 12 17 
3 8 13 18 
4 9 14 19 
5 10 15 20 
Etc... 

答えて

2

使用:

for t in zip(generated_lists[0],generated_lists[1],generated_lists[2]): 
    print(' '.join(str(x) for x in t)) 

以上簡潔:

for t in zip(*generated_lists[:3]): 
    print(' '.join(map(str, t))) 

変更する必要があるのは3からwhateですあなたが望むバージョン番号

+0

のz(* generated_lists [:number_of_columns])が機能します。私はシステムが私にできるようになるとすぐにあなたの答えを受け入れます。助けてくれてありがとう:D – Saelyth

+0

小さな質問:ユーザーが0から20と2列までを開始することを選択した場合、20個ではなく8個の数字しか印刷されません。 – Saelyth