2017-07-09 21 views
0

変数がいつ自分のコードに再割り当てされるのか、それらが一定のままであるのか混乱します。どのカスタム関数が問題を引き起こしているかを絞り込むためにprintステートメントを使用しましたが、私はその行を見つけることができません。私は多かれ少なかれ初心者のコードを使ってPythonでストアを作ろうとしています。Pythonで変数が割り当てられていないときに変数を割り当てよう

def buy(vx, vy, p, cash,price): 
if cash >= price: 
    if (box_range(vx, vy, 670, 960, 430, 540) and p == 1)and len(shopping_list)>= 1: 
     for i in range(0, len(shopping_list)): 
      my_items.append(shopping_list[i]) 
     print "The computer appended " + str(len(shopping_list)) + " items." 
     print "my items are now " + str(my_items) 
     cash -= price 
     if p == 1: 
      print "balance is " + str(cash) 
     return cash 
elif cash < price and (box_range(vx, vy, 670, 960, 430, 540) and p == 1)and len(shopping_list)>= 1: 
    print "you don't have enough money" 
    return cash 
else: 
    return cash 

VXとVYの変数は、マウスの位置に関連し、pは、マウスボタンが押されたかどうかを指し、価格は0であると仮定し、買い物リストは、クラスのリストである、私の項目のリストであります関数に代入される現金の価値は1000ですが、時にはNoneを返すので、なぜその理由が分かりません。

+0

あなたはエラーを投稿できますか? –

答えて

0

根本的な問題は、インナーif戻りcash-price条件が満たされているが、それは条件(box_range(vx, vy, 670, 960, 430, 540) and p == 1) and len(shopping_list)>= 1が成立しない場合(Noneを意味する)は何も返さない場合:

if cash >= price: 
    if (box_range(vx, vy, 670, 960, 430, 540) and p == 1)and len(shopping_list)>= 1: 
     for i in range(0, len(shopping_list)): 
      my_items.append(shopping_list[i]) 
     print "The computer appended " + str(len(shopping_list)) + " items." 
     print "my items are now " + str(my_items) 
     cash -= price 
     if p == 1: 
      print "balance is " + str(cash) 
     return cash 
    else: # what should be returned when, e.g., len(shopping_list) < 1??? 
     return SOMETHING 
elif ... 

が返される値を指定します条件(box_range(vx, vy, 670, 960, 430, 540) and p == 1) and len(shopping_list)>= 1が満たされない場合。

+0

答えをくれてありがとう、本当に助けてくれて無駄な時間を節約します。私はあなたにアップフォートを与えますが、十分な評判はまだありません。 –

+0

@ChrisHoweよろしくお願いします。あなたが回答をアップアップすることができないかもしれませんが、私はあなたがそれを受け入れるべきだと思います。 –

関連する問題