0

Pythonの初心者で、最新のプログラムで問題が発生しました。簡単に言えば、可能であれば、ユーザー入力変数のデクリメント ループをコーディングしようとしています。基本的に、グローバル定数を 13 などの値に設定しています。プログラムがループするたびに、ユーザーに値の入力を求めるプロンプトが表示され、そのユーザー値は 0 に達するまで 13 削られます。値を 13 にリセットし、入力された現在の反復値のみを削除します。したがって、反復ごとに 2 を入力すると、11 になるだけです...しかし、例として 2、11、8、5 などを使用するか、例として 3 を使用して結果を目指しています 10、7、 4..どんな助けでも大歓迎です、乾杯:)

a = 13

def main():
    runLoop()

def runLoop():
    while other_input_var > 0: # guys this is my main score accumulator
                               # variable and works fine just the one below
        b=int(input('Please enter a number to remove from 13: '))
        if b != 0:
            shave(a, b)

def shave(a, b):
    a -= b
    print 'score is %d ' % a
    if a == 0:
        print "Win"

main()
4

2 に答える 2

2

このような小さなスニペットに関する私の謙虚な意見では、追加の機能は物事を複雑にしてしまいます。しかし、あなたがコンセプトを理解しているのを見るのは良いことです。私はこれをテストしていませんが、これはあなたが探しているのと同じことをするはずです。行 5 に注意してください 入力された数値が a の現在の値を超えていないことを保証します。これは、誤ってより高いものを入力した場合に役立ちます。次のステップは、まだ試していない場合はエラー処理を配置することです Python エラー処理を参照してください。お役に立てれば!

def main():
    a = 13
    while a:
        b = int(input("Please enter a number to remove from " +  str(a) + " : "))
        if b > 0 and b <= a:
            a -= b
            print "Score is ", str(a)
    print "Win"    

main()
于 2012-04-17T13:43:23.970 に答える
-1

あなたの質問への回答ではなく、文字列の書式設定のデモンストレーションです。%これは、 「文字列補間演算子」を使用する古いスタイルです。

a = 100
while a:
    shave = int(raw_input("Input a number to subtract from %i:" % a))
    if ( shave > 0 ) and ( shave <= a ):
        a -= shave
    else:
        print ("Number needs to be positive and less than %i." % a)

このプログラムとのセッション:

Input a number to subtract from 100:50
Input a number to subtract from 50:100
Number needs to be positive and less than 50.
Input a number to subtract from 50:30
Input a number to subtract from 20:20

元の文字列の は、後で文字列の演算子によって埋められる%i整数 (整数の場合) のプレースホルダーです。i%

%f浮動小数点数用、文字列用などもあり%sます。表示する小数点以下の桁数を指定する (小数点以下%.3f3 桁) など、気の利いた操作を行うことができます。

もう一つの例:

>>> "My name is %s and I'm %.2f metres tall." % ('Li-aung',1.83211)
"My name is Li-aung and I'm 1.83 metres tall."

これは、以下よりもはるかに読みやすいです。

"My name is " + name + " and I'm " + str(round(age,2)) + " metres tall"

古い方法または新しい方法で文字列をフォーマットする方法の詳細を読んでください。

于 2012-04-17T14:33:58.777 に答える