2017-04-27 6 views
0

私はいくつかの数値を持っていて、それぞれをある一定の値だけ減らしたいとしましょう。各数値はあらかじめ決められた値で減少しなくてはなりません。私のコードは以下の通りです。いくつかの数値を減らし続ける方法と、それぞれがあらかじめ決められた値で停止する

a = b = c = 100 
x = y = 1 
print a, b, x, y 
s = 1 

while s: 
    if a >= 11: 
     a -= x 
    if b >= 2: 
     b -= y 
    if c >= 21: 
     c -= y 

    print a, b, c 

    if a == 10 and b == 1 and c == 20: 
     s = 0 

これはより効率的な方法で実行できますか?

+0

どのような場合ですか? 'a'と' b'は常に同じ量だけ減少するでしょうか?一般的には 'for'ループを使うのはもっとpython的で高速ですが、デクリメントは一定です。 –

+0

私はこれを使って所定の値で停止するいくつかのカウンタを減らす必要があります。私はコードを編集しました。 – emorphus

答えて

2

なぜPythonリストを使用しないと、独自の減少と独自の停止制限を持つ任意の数の数字を定義できます。数字を追加することは、余分なコードを入力するのではなく各リストに値を追加するのと同じくらい簡単です;

numbers = [10, 100, 1000] 
decrease = [1, 10, 100] 
stop = [5, 50, 500] 

b = True 
while b: 

    b = False 
    for c, n in enumerate(numbers): 
    if n <= stop[c]: 
     continue 
    numbers[c] = n - decrease[c] 
    b = True 

print numbers # [5, 50, 500] 
+0

これは上記の方法より速いでしょうか? – emorphus

+0

ベンチマークなしで言うのは難しいでしょう。とにかく差はほとんどありません。さらに重要なのは、可読性と保守性です。 –

+0

大量の数字を見ていると、リストメソッドがメモリを消費しませんか? – emorphus

関連する問題