2012-04-17 14 views
0

初心者から私の最新のプログラムでpythonとヒットした。簡単に言えば、可能であれば、ユーザー入力変数の減分ループをコード化しようとしています。本質的には、グローバル定数が値に設定されています。図13に示すように、プログラムがループするたびに、ユーザは値を入力するように促し、そのユーザ値は0になるまで削り取る。問題はそれを削っているが、反復するときに値を13にリセットし、現在の反復値が入力されます。だから、2回繰り返すたびに11に落ちるだけですが、2を例にとって11,11、8、5などを使ったり、3を10、7、 4つの....任意のヘルプの人はあまりaddtionalの機能は、物事を複雑にかけてしまうような小さなスニペットで、歓声:)基本的な減少ループ - PYTHON

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() 
+0

'global'キーワードを見て、それを使ってなぜあなたが何かをひどく間違ってやっているのかを知ることができるすべてのものを読んでください。 – geoffspear

+0

私は見るので、変数はshave()関数でローカライズされるべきですか?うん、それは私がちょっとしている宿題の一部です。 – user1291271

答えて

-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などがあります。小数点の桁数を指定するのと同じように、小数点以下3桁の - %.3fなどのような、すてきなことを行うことができます。

もう一つの例:

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

old wayまたはnew wayの書式文字列についての詳細を読む

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

これは、より読みずっと簡単です。

2

私の愚見では理解されるであろう。しかし、あなたがコンセプトを得ているのを見て嬉しいです。私はこれをテストしていないが、これはあなたが探しているのと同じことを行う必要があります。通知行5私は、入力された数字がaの現在の値を超えないことを保証します。あなた/あなたが誤って何か高いものを入力した場合、これは助けになるはずです。次のステップでは、まだ試していない場合はエラーハンドリングを行いますが、Python Error Handlingを参照してください。お役に立てれば!

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() 
+0

ありがとうdc、ill試してそれを実装しよう – user1291271

+0

私はここのボックスでそれをテストし、何かを修正しなければなりませんでした。お知らせ下さい! – dc5553

+0

'a'を文字列(' str(a) ')にキャストして文字列連結を使用する代わりに、文字列フォーマット演算子'% 'を使用してください:' "%iから削除する番号を入力してください:"%a'。 [古い方法](http://docs.python.org/library/stdtypes.html#string-formatting-operations)や[新しい方法](http://docs.python.org)の文字列フォーマットの詳細をお読みください/library/string.html#string-formatting)。 –