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()这个函数么?
- 好像返回值是可迭代对象
- 这个确实可以一把确认 key-value
- 但是格式只能输出元组
- 不能自定制
- 我想要自定制输出格式
- 这个返回值是一个元组
- 我给他两个变量可以么?
- 这个字典还是比较简单的
- 我们试试比较复杂的字典
- 如果小于 178 就忽略跳过
- continue
- 结束本轮循环
- 进入循环条件
- 如果找到大于等于 183 的就跳出
- 直接 break 跳出三界外
- 不在循环中
- 那么如果字典的 value 不是一个数字
- 而是一个元组应该怎么办呢?
- 元组里面两个元素
- 女生身高
- 男生身高
- 我现在要找出所有女生身高高于 169 的
- 现在人越来越高 😌
- 找出所有城市中女生身高最高的
- 遍历整个字典
- 然后找到身高最高城市
- 但是如果我想要找到平均身高最高的城市呢?
- 可以用while循环来遍历字典么?
- 这里的判断条件不对
- is 比较的是 地址
- d 和 {} 指向两个地址
- d is not {} 永远为True
- 我感觉自己永远热泪盈眶
- 这次报错没了
- 但是增加了开销
- 因为每次都要新建一个空集合
- 这才是正确的写法
- 有什么 字典 可以让我们来 遍历一下吗?
l = locals()
for key in l:
print(key,l[key],sep=":")
- 结果
- 字典在运行时
- 改变了大小
- 增加了本地变量 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 函数怎么用来着?🤔
- 下次再说 👋
段落引用