上分喝水 2021-06-05 18:53 采纳率: 50%
浏览 46
已结题

python:求大佬为什么不论输什么都执行else后面的语句

map_ditu1 = [

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 0, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 2, 0, 0, 0, 0, 0, 0, 0, 1],

    [1, 0, 1, 0, 1, 0, 1, 1, 0, 1],

    [1, 0, 1, 0, 1, 0, 1, 1, 0, 1],

    [1, 0, 0, 0, 1, 0, 0, 1, 0, 1],

    [1, 1, 1, 0, 1, 1, 1, 1, 0, 0],

    [1, 1, 1, 0, 1, 1, 1, 1, 0, 1],

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],

    ]

map_ditu2 = [

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 0, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 2, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 0, 1, 1, 1, 1, 1, 1, 1, 1],

    [1, 0, 1, 0, 0, 0, 1, 1, 1, 1],

    [1, 0, 1, 0, 1, 0, 0, 0, 1, 1],

    [1, 0, 1, 0, 1, 1, 1, 1, 1, 1],

    [1, 0, 1, 0, 1, 1, 1, 1, 1, 1],

    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],

    [1, 1, 1, 1, 1, 1, 1, 1, 0, 1],

    ]

# 定义人所在的位置(初始化)

x = 2

y = 1

endx = 6

endy = 9

endx2= 9

endy2= 8

n1=map_ditu1

n2=map_ditu2

# 用字符串重新给地图赋值

def print_map1():

    for nums in map_ditu1:

        for num in nums:

            if num == 1:

                print(" *",end=" ")

            elif(num == 0):

                print("  ",end=" ")

            else:

                print(" $",end=" ")

        print("  ")

def print_map2():

    for nums in map_ditu2:

        for num in nums:

            if num == 1:

                print(" *",end=" ")

            elif(num == 0):

                print("  ",end=" ")

            else:

                print(" $",end=" ")

        print("  ")

choice=input("请输入你要选择的地图(n1 OR n2):")

if choice==n1:

    print_map1()

    while True:

        order = input("请输入指令(a: 左,s: 下, d: 右, w: 上):")

# 当用户输入a时执行向左走进行交换(列变行不变 列下标减1)

        if order == "a":

            y = y-1

        # 碰到墙,游戏结束

            if map_ditu1[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu1[x][y],map_ditu1[x][y+1] = map_ditu1[x][y+1], map_ditu1[x][y]  # 进行交换操作

                print_map1()

 

    # 当用户输入s时执行向下走进行交换(列不变行变 行下标加1)

        elif order == "s":

            x = x + 1

            if map_ditu1[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu1[x][y], map_ditu1[x-1][y] = map_ditu1[x-1][y], map_ditu1[x][y]  # 进行交换操作

                print_map1()

 

    # 当用户输入d时执行向右走进行交换(列变行不变 列下标加1)

        elif order == "d":

            y = y + 1

            if map_ditu1[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu1[x][y], map_ditu1[x][y - 1] = map_ditu1[x][y - 1], map_ditu1[x][y]  # 进行交换操作

                print_map1()

                if map_ditu1[x][y] == map_ditu1[endx][endy]:

                    print("恭喜你过关了")

                    break

 

    # 当用户输入w时执行向上走进行交换(列不变行变 行下标减1)

        elif order == "w":

            x = x - 1

            if map_ditu1[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu1[x][y], map_ditu1[x + 1][y] = map_ditu1[x + 1][y], map_ditu1[x][y]  # 进行交换操作

                print_map1()

        else:

            print("您输入指令有误,请重新输入!")

            continue

else:

    print_map2() # 先画地图

    while True:

        order = input("请输入指令(a: 左,s: 下, d: 右, w: 上):")

    # 当用户输入a时执行向左走进行交换(列变行不变 列下标减1)

        if order == "a":

            y = y-1

            # 碰到墙,游戏结束

            if map_ditu2[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu2[x][y],map_ditu2[x][y+1] = map_ditu2[x][y+1], map_ditu2[x][y]  # 进行交换操作

                print_map2()

 

        # 当用户输入s时执行向下走进行交换(列不变行变 行下标加1)

        elif order == "s":

            x = x + 1

            if map_ditu2[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu2[x][y], map_ditu2[x-1][y] = map_ditu2[x-1][y], map_ditu2[x][y]  # 进行交换操作

                print_map2()

                if map_ditu2[x][y] == map_ditu2[endx2][endy2]:

                    print("恭喜你过关了")

                    break

        # 当用户输入d时执行向右走进行交换(列变行不变 列下标加1)

        elif order == "d":

            y = y + 1

            if map_ditu2[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu2[x][y], map_ditu2[x][y - 1] = map_ditu2[x][y - 1], map_ditu2[x][y]  # 进行交换操作

                print_map2()

 

        # 当用户输入w时执行向上走进行交换(列不变行变 行下标减1)

        elif order == "w":

            x = x - 1

            if map_ditu2[x][y] == 1:

                print("游戏结束")

                break

            else:

                map_ditu2[x][y], map_ditu2[x + 1][y] = map_ditu2[x + 1][y], map_ditu2[x][y]  # 进行交换操作

                print_map2()

        else:

            print("您输入指令有误,请重新输入!")

            continue

  • 写回答

2条回答 默认 最新

  • 关注

    if choice=='n1':

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月26日

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?