2015-11-04 90 views
1
def main(): 
    global currentX,currentY 
    currentX = 0 
    currentY = 0 
    currentlocation = currentX,currentY 
    print("Starting Location is", currentX,currentY) 
    print() 

    #Main menu dialouge 

    print("Please select direction:") 
    print("1, North;") 
    print("2, East;") 
    print("3, South;") 
    print("4, West;") 
    print("5, End this program") 

    #Loop = to 1 so while loop will go on indefitly until option 5 is pressed. 
    loop = 1 
    #try: handles all errors along with except: 
    try: 
     while loop == 1: 
      direction = input("--> ") 
      print() 
      direction = int(direction) 
      if direction == 1: 
       moveN = currentY + 1 
       print("Moved North.",currentlocation) 

      elif direction == 2: 
       currentX + 1 
       print("Moved East.",currentlocation) 

      elif direction == 3: 
       currentY - 1 
       print("Moved South.",currentlocation) 

      elif direction == 4: 
       currentX - 1 
       print("Moved West.",currentlocation) 

      elif direction == 5: 
       loop = 0 
       print("Final location is", currentlocation) 

      else: 
        print("ERROR:", choice, "is an invalid input.\n" 
          "Enter a number from 1 to 5.") 
    except: ValueError 
    print("Please enter a whole number between 1-5") 

main() 

我不明白爲什麼循環沒有添加到當前位置。 我得到這樣 起始位置的輸出爲0 0使用while循環來增加和減少當前位置

Please select direction: 
1, North; 
2, East; 
3, South; 
4, West; 
5, End this program 
--> 3 
Moved South. (0, 0) 
--> 4 
Moved West. (0, 0) 
+2

閱讀一些:瞭解Python的變量和內存管理(http://foobarnbaz.com/2012/07/08 /理解的Python變量/)。 – Jkdc

回答

2

你實際上並沒有改變currentX和currentY,你只是你評估希望他們具有的值。要改變他們,你需要爲他們分配:

currentX = currentX + 1 

,或者更簡潔:

currentX += 1 

你的方向1的情況下看起來也關閉。出於某種原因,你正在分配到moveN。我不知道應該做什麼。

編輯:您還需要更新currentlocation以反映位置的變化。

+0

這仍然不會解決OP問題。他們希望'currentlocation'進行更新,但他們從未接觸過它。 –

+0

您還應該解決'currentlocation'因更改'currentX'或'currentY'而未更新的問題。這個答案並不能完全解決問題。 – Jkdc

+0

謝謝,我補充說。有很多問題,我剛纔提到了我注意到的第一批問題。 –

1

當你說

currentlocation = currentX,currentY 

你沒有真正建立與以currentX和currentY引用一個元組,你要創建一個元組與任何均currentX和currentY它是時間聲明。所以每次你改變它們,它都沒有更新。

解決此問題的一種方法是將currentlocation轉換爲函數。

def currentlocation(): 
    return currentX,currentY 

然後,而不是

print(currentlocation) 

只要把

print(currentlocation())