2015-11-04 86 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())