Skip to content

Latest commit

 

History

History
327 lines (248 loc) · 8.73 KB

175-233927-for_遍历字典_dict_字典嵌套_文字游戏.sy.md

File metadata and controls

327 lines (248 loc) · 8.73 KB
show version enable_checker
step
1.0
true

字符串和字节序列

回忆

  • 这次用 for 遍历了
    • 字符串
    • 字节序列
  • 他们都是可迭代的对象
  • 回忆了两种打断的方式
    • break 彻底打断
    • continue 中断本轮,后面继续
  • 容器里面还有个字典
  • 字典是可迭代 iterable 的对象么?🤔

字典

  • 回忆

图片描述

  • 那字典相关的这些东西都是什么类型的呢?
  • help(dict)
  • 去找一下

字典

图片描述

  • items、keys 都是像集合一样的对象

图片描述

  • values 也一样,是提供一种视图
  • 说到底怎么遍历字典呢?

遍历

图片描述

  • 看起来遍历字典
  • 就是在遍历他的 keys
  • 通过 key 也就能得到相应的 value
  • 毕竟字典的本质是 key-value 对的集合

遍历整个字典

图片描述

  • 注意d[key]
    • 用的是中括号
    • 中括号意味着对于字典d取索引
    • 就和对列表取数字索引一样
      • l[0] = "o"
      • 索引结果是列表项的值
    • 索引可以根据字典的key来取索引
      • d["a"] = 1
      • d["b"] = 2
      • 索引结果是字典项的值
  • 索引是怎么定义的呢?

索引定义

图片描述

  • 有没有更简单的遍历方法呢?
    • 还记得 items()这个函数么?
    • 好像返回值是可迭代对象

items()

图片描述

  • 这个确实可以一把确认 key-value
    • 但是格式只能输出元组
    • 不能自定制
    • 我想要自定制输出格式
    • 这个返回值是一个元组
    • 我给他两个变量可以么?

输出格式

图片描述

  • 这个字典还是比较简单的
  • 我们试试比较复杂的字典

continue

  • 如果小于 178 就忽略跳过

图片描述

  • continue
    • 结束本轮循环
    • 进入循环条件

break

  • 如果找到大于等于 183 的就跳出

图片描述

  • 直接 break 跳出三界外
  • 不在循环中
  • 那么如果字典的 value 不是一个数字
  • 而是一个元组应该怎么办呢?

图片描述

遍历

图片描述

  • 元组里面两个元素
    • 女生身高
    • 男生身高
  • 我现在要找出所有女生身高高于 169 的

图片描述

  • 现在人越来越高 😌
  • 找出所有城市中女生身高最高的

查找

图片描述

  • 遍历整个字典
  • 然后找到身高最高城市
  • 但是如果我想要找到平均身高最高的城市呢?

再查找

图片描述

  • 可以用while循环来遍历字典么?

用while遍历

图片描述

  • 这里的判断条件不对
  • is 比较的是 地址
  • d 和 {} 指向两个地址
  • d is not {} 永远为True
  • 我感觉自己永远热泪盈眶

修改

图片描述

  • 这次报错没了
  • 但是增加了开销
  • 因为每次都要新建一个空集合

再修改

图片描述

  • 这才是正确的写法

图片描述

  • 有什么 字典 可以让我们来 遍历一下吗?

locals()

l = locals()
for key in l:
	print(key,l[key],sep=":")
  • 结果

图片描述

  • 字典在运行时
    • 改变了大小
    • 增加了本地变量 key

提前定义key

  • 提前定义key
    • 本地变量字典 大小就不变了
key = ""
l = locals()
for key in l:
	print(key,l[key],sep=":")
  • 问题解决

  • 字典里面可以嵌套吗?

字典的嵌套

print("欢迎来到幻想大陆!")
print("你是一名年轻的冒险者,被选中去拯救被邪恶势力侵蚀的王国。")
print("在你的旅程中,你将面临各种挑战和冒险,需要做出明智的选择。")
print("现在,你的冒险之旅开始了...\n")

# 游戏场景和剧情设置
game_map = {
    "城镇": {
        "描述": "你身处繁华的城镇,人们忙碌而友善。",
        "选项": {
                "1": {"提示":"去城堡寻求王子的帮助","目标":"城堡"},
                "2": {"提示":"来到城镇码头,乘坐小船前往对面的山脉","目标":"山脉"}
        }
    },
    "城堡": {
     	"描述": "你来到了庄严的城堡,王子正在等待你的到来。",
     	"选项": {
             "1": {"提示":"接受王子的任务,去森林探险","目标":"森林"},
             "2": {"提示":"拒绝王子的请求","目标":"城镇"}
            }
    },
    "森林": {
     	"描述": "你来到了一个神秘的森林,树木高大茂密。",
     	"选项": {
             "1": {"提示":"探索森林深处","目标":"洞穴"},
             "2": {"提示":"返回城镇","目标":"城镇"}
            }
    },
    "洞穴": {
     	"描述": "你发现了一个隐藏在森林中的洞穴,里面充满了危险和宝藏。",
     	"选项": {
             "1": {"提示":"探索洞穴深处","目标":"山脉"},
             "2": {"提示":"返回森林","目标":"森林"}
            }
    },
    "山脉": {
     	"描述": "你来到了险峻的山脉,寒风凛冽,山峰耸立。",
     	"选项": {
             "1": {"提示":"攀登高峰","目标":"巨龙洞穴"},
             "2": {"提示":"返回城镇","目标":"城镇"}
            }
    },
    "巨龙洞穴": {
     	"描述": "你来到了巨龙的巢穴,一只凶猛的巨龙正在等待你的挑战。",
     	"选项": {
             "1": {"提示":"与巨龙战斗","目标":"胜利"},
             "2": {"提示":"逃离巨龙洞穴","目标":"失败"}
            }
    },
    "胜利": {
     	"描述": "你成功地击败了巨龙,拯救了王国。",
     	"选项": {}
    },
    "失败": {
     	"描述": "你在与巨龙的战斗中失败,王国被邪恶势力统治。",
        "选项": {}
    }
}
current_scene = "城镇"  # 当前场景
while True:
    scene = game_map[current_scene]
    print(scene["描述"])
    print("【%s】" % current_scene)
    print("请选择下一步的行动:")
    for option, dic in scene["选项"].items():
        print(option,end="")
        print(dic["提示"])
    choice = input("> ")
    if choice in scene["选项"]:
        current_scene =game_map [current_scene]["选项"][choice]["目标"]
        print("\n")
    else:
        print("无效的选择,请重新选择!\n")
    if current_scene == "胜利":
        print("恭喜你成功拯救了王国,成为真正的英雄!游戏结束!")
    else:
        print("很遗憾,你没有能力战胜巨龙,被邪恶势力统治的王国注定要沦陷。游戏结束!")

最终

图片描述

  • 这是一个文字冒险游戏
game_map = {
    "城堡": {
     	"描述": "你来到了庄严的城堡,王子正在等待你的到来。",
     	"选项": {
             "1": {"提示":"接受王子的任务,去森林探险","目标":"森林"},
             "2": {"提示":"拒绝王子的请求","目标":"城镇"}
            }
    },
    "森林": {
     	"描述": "你来到了一个神秘的森林,树木高大茂密。",
     	"选项": {
             "1": {"提示":"探索森林深处","目标":"洞穴"},
             "2": {"提示":"返回城镇","目标":"城镇"}
            }
    },
  • 我们最终只需要定制好字典就可以了
  • 去总结吧

总结

  • 这次遍历了字典
  • 字典在 for 循环中的遍历中
    • 遍历的是字典的 keys()
  • 除了 keys()之外,还可以
    • 遍历 values()
    • 遍历 items()
  • keys()最简单明确
  • items()最全面
  • 好像形成 dict 字典的时候可以用一个 zip 函数
  • zip 函数怎么用来着?🤔
  • 下次再说 👋

段落引用