2016-09-02 13 views
0

noobieループ文は、一見ループ

ための内の文デフabilityBuy()場合に問題あるためで無視された場合:

totalPoints = 28 

abilities = { 
    "Str":0, 
    "Con":0, 
    "Dex":0, 
    "Int":0, 
    "Wis":0, 
    "Cha":0 
    } 

for i,v in abilities.items(): 
    print "You have %s points." % totalPoints 
    text = "Enter stat for %s: " % i 
    stat = raw_input(text) 
    if stat == 18: 
     totalPoints = totalPoints - 16 
    elif stat == 17: 
      totalPoints = totalPoints - 13 
    elif stat == 16: 
      totalPoints = totalPoints - 10 
    elif stat == 15: 
      totalPoints = totalPoints - 8 
    elif stat == 14: 
      totalPoints = totalPoints - 6 
    elif stat == 13: 
      totalPoints = totalPoints - 5 
    elif stat == 12: 
      totalPoints = totalPoints - 4 
    elif stat == 11: 
      totalPoints = totalPoints - 3 
    elif stat == 10: 
      totalPoints = totalPoints - 2 
    elif stat == 9: 
      totalPoints = totalPoints - 1 
    elif stat == 8: 
      totalPoints = totalPoints - 0 

    abilities[i] = stat 

print abilities 

abilityBuy()

はそれを推測すると仮定し実行したときに統計番号に必要なポイント数 例:statが18に等しい場合 合計のポイントを減らす16 これは合計ポイントに12ポイントの残りを与えますが、 atementは一見無視され、飛び越してジャンプし、辞書に追加して周りにループし、totalPointsはまだ28に等しいと言います

問題を引き起こしているかどうかわかりません。文は内部で、彼らは彼らがすると仮定されているか動作し、まだこの1つは私が

任意の提案を開いへ

おかげ

Lyncius

+1

'プリント(STAT)を解きますあなたは問題です。 – polku

+1

ハーク!その文字列、整数に変換する必要があります – Lyncius

+0

@Lyncius yup - いくつかの点が残っていることをチェックしたいかもしれません...現時点では、すべての18を入力し続けることができます:) –

答えて

0

を求めています何をしていないようならばとループFi最初に気になることは:raw_input()は文字列を返しますが、if文はstatと整数を比較するので、どちらも真と評価されません。 簡単な解決策は、int(stat)に変換することですが、ユーザーが数字以外の値や値を入力した時点(つまり、ユーザーが19または 'a'を入力した場合)のチェックを追加したい場合があります。

1

あなたのstat = raw_inputがstr値を返しているからです。 statはstrで、if文では整数と比較しようとしています。 str == intは決してうまくいかない。どちらのキャストint型へのstat、などをstrにそれを比較する...

stat = int(stat) 

または

if stat == "18": 

両方が

1

をうまく問題がraw_inputであるだろう。それは文字列を返し、intと比較しているだけです。

stat = int(raw_input(text)) 

がその部分を解決します。変更

+1

なぜOPは 'raw_input'を使わないと思うのですか? 2.xでは、stdinからの入力を取得する標準的な方法です... –

+0

@NinjaPuppyあなたは絶対に正しくありがとう!私はあなたのコメントを見る前にこれを消去した、私は言わなければならないが、感謝にもかかわらず。 –

0

STAT = raw_input(テキスト)

にSTAT = INT(raw_inpur(テキスト))から

問題が `表示され

関連する問題