2014-01-24 59 views
-2

我正在努力做的就是讓「現金」變成一種平衡。因此我希望能夠改變這個價值。但是當我運行程序時,變量「現金」的價值似乎沒有改變,當我從它減去。如果玩家在擲骰子上錯誤地猜測,該玩家應該丟掉現金。更多信息在代碼本身。如果答案有一個簡短的解釋,我會非常感激,我會這樣做來學習,它的純粹建設性。PYTHON:「賭博」計劃。無法更改變量的值? (v。2.7)

print "" 
    import time 
    cash = 5000 
    print 'you brought','$',cash,'today' 
    while cash>0: 
     from random import randint 
     die = randint(1,1) 
     while True: 
       try: 
        print 
        choice1 = int(raw_input('First guess: ')) 
        print 
        choice2 = int(raw_input('Second guess: ')) 
        print 
        break 
       except ValueError: 
        print 'Please, enter a number.' 
     print 'rolling die..' 
     time.sleep(3) 
     if choice1+choice2==die: 
      #PROBLEM: The operation below does not change the value of cash, why not?. 
       cash=cash+1000 
       print cash 
       print 'you rolled',die 
       print 'win! you won $1000, you\'re new balance is:',cash 
       #PROBLEM: The new val of cash should be printed here^but it remains as 5000 
     else: 
      cash-1000 
      print 'you rolled',die 
      print 'lose! you lost $1000, you\'re new balance is:',cash 
     if cash<0: 
      print 'Bankrupt.' 
      time.sleep(3) 
      quit() 
     if cash==1000000: 
      print 'Millionaire!' 
      break 

回答

1
cash - 1000 

應該

cash -= 1000 

否則你不分配cash - 1000任何東西;只是評估它

2
cash-1000 

在這裏你執行一個減法,然後把結果扔掉。你想代替的是:

cash = cash - 1000 

或者只是:

cash -= 1000 
+0

我猜這只是一個簡單的錯字,OP要我們爲他調試,而不是自己做,而不是他不知道如何分配變量。如果我猜錯了,那麼你的答案比甲酯的解釋更好...... – abarnert

0

在第28行,在那裏你鍵入cash-1000,你是不是改變了現金變量。它應該是cash = cash - 1000或簡單地cash -= 1000。 代碼中的其他問題:

  1. 第6行:不要多次導入模塊。這會減慢程序的速度。
  2. 第20行:您要添加的兩種選擇在一起,但我敢肯定,你要檢查他們兩個,如果他們等於死亡。通過鍵入if choice1 == die or choice2 == die:而不是執行此操作。您預計cash將按照您在第26行中的評論打印出來,但它永遠不會因爲if語句有缺陷而被打印。