2017-03-05 10 views
-2

は、5-10の間の乱数を生成し、次のパターンを形成するプログラムを作成する必要があります。実行しているとき、私はこれを取得しかし割り当てのコード

from random import choice 
m=choice(range(5,11)) 
n=m-1 
o=n-1 
p=o-1 
q=p-1 
r=q-1 
s=r-1 
t=s-1 
u=t-1 
v=u-1 
print("The random number generated is",m) 
while m>0: 
    print(m,n,o,p,q,r,s,t,u,v) 
    m=m-1 
    n=n-1 
    o=o-1 
    p=p-1 
    q=q-1 
    r=r-1 
    s=s-1 
    t=t-1 
    u=u-1 
    v=v-1 

:ここ

"The random number generated is" 9 
9 8 7 6 5 4 3 2 1 
8 7 6 5 4 3 2 1 
7 6 5 4 3 2 1 
6 5 4 3 2 1 
5 4 3 2 1 
4 3 2 1 
3 2 1 
2 1 
1 

は、私が使用しているコードです

The random number generated is 8 
8 7 6 5 4 3 2 1 0 -1 
7 6 5 4 3 2 1 0 -1 -2 
6 5 4 3 2 1 0 -1 -2 -3 
5 4 3 2 1 0 -1 -2 -3 -4 
4 3 2 1 0 -1 -2 -3 -4 -5 
3 2 1 0 -1 -2 -3 -4 -5 -6 
2 1 0 -1 -2 -3 -4 -5 -6 -7 
1 0 -1 -2 -3 -4 -5 -6 -7 -8 

どのように私は0とネガを取り除くのですか?それとも、より良いコードセットですか?

おかげ

+1

可能な重複は(http://stackoverflow.com/questions/42608684/numerical-patterns-in-python3) –

+0

私はあなたの代わりに752個の変数の配列を作成することをお勧めしたいです。ループ&テストを本当に簡単に行うことができます。 –

答えて

1

代わりに、すべてのこれらの変数を設定するいくつかのループを行うにははるかに簡単だろう - 一つの選択肢については、以下を見てみましょう:

from random import choice 

# max_start is the maximum number we start with 
max_start = choice(range(5, 11)) 

print("Starting number: {0}".format(max_start)) 

# We iterate downward 
for start in range(max_start, 0, -1): 

    # And for each line, start from that point down to 1 
    for n in range(start, 0, -1): 

    # And print it, no end of line character 
    print("{0} ".format(n), end='') 

    # And add a newline 
    print() 

出力:

Starting number: 5 
5 4 3 2 1 
4 3 2 1 
3 2 1 
2 1 
1 
1

whileループでは、mがゼロのときにのみループが停止しますが、同じ量の数字が印刷され続けます。 whileループとforループを使用する方が良いでしょう。たとえば :あなたはyouselfがm, n, o, p, ...のような変数のリストを作る見つけるたび

import random 
i = random.randint(5,10) 
while i>0: 
    for j in range(i,0,-1): 
     print(j,end=" ") 
    print("") 
    i -= 1 
0

あなたの代わりにlistを使用する必要があることを良いチャンスがあります。 range関数を使用すると、リストを作成するために使用できるアシディングまたはデディング整数を生成できます。その後、リストから値を印刷して削除するだけの問題です。 [のpython3での数値のパターン]の

import random 

# generate a random number from 5 to 10 inclusive 
num = random.randint(5, 10) 
print("The random number generated is", num) 

# make a list, counting down from the number, excluding 0, converting 
# to string 
numbers = list(str(n) for n in range(num, 0, -1)) 

# print and trim the number list til there is nothing left 
while numbers: 
    print(' '.join(numbers)) 
    numbers.pop(0)