使用while循环添加和减去当前位置

2024-09-29 23:17:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

Tags: loopismainprintpleasewestsoutheast
2条回答

实际上,你并没有改变currentX和currentY,你只是在计算你想要的值。要更改它们,您需要为它们指定:

currentX = currentX + 1

或者,更简洁地说:

currentX += 1

你的方向1号箱子看起来也不对劲。出于某种原因,您将分配给moveN。我不知道该怎么办。你知道吗

编辑:您还需要更新currentlocation,以反映位置的变化。你知道吗

当你说

currentlocation = currentX,currentY

实际上并不是用currentX和currentY的引用创建元组,而是用声明时currentX和currentY中的创建元组。所以每次你改变这些,它都不会更新。你知道吗

解决这个问题的一种方法是将currentlocation转换为函数。你知道吗

def currentlocation():
    return currentX,currentY

然后,代替

print(currentlocation)

只是放

print(currentlocation())

相关问题 更多 >

    热门问题