Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0139
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次了解了 字典排序
- 字典 可以排序
- 使用 lambda 进行排序
- 排序 结果返回key的列表
- ai环境下
- 有什么有意思的字典 吗??🤔
生成Python字典:存储2道菜谱,键为菜名,值为包含主要材料(元组)、调味料(元组)、制作步骤(列表)的字典,包含番茄炒蛋、宫保鸡丁,代码简洁可直接运行
# 1. 定义食谱字典
foods = dict()
# 2. 添加番茄炒蛋的食谱信息
foods["番茄炒蛋"] = {
"主要材料": ("鸡蛋", "番茄"),
"调味料": ("盐", "糖", "食用油"),
"制作步骤": [
"1. 鸡蛋打入碗中打散,番茄切块",
"2. 锅中热油,倒入鸡蛋液,待凝固后炒散盛出",
"3. 锅中余油炒番茄,加入少许糖提鲜",
"4. 待番茄炒软出汁后,加入炒好的鸡蛋,加盐调味,翻炒均匀"
]
}
# 3. 添加宫保鸡丁的食谱信息
foods["宫保鸡丁"] = {
"主要材料": ("鸡胸肉", "花生米", "干辣椒", "葱", "姜", "蒜"),
"调味料": ("酱油", "料酒", "白糖", "醋", "盐", "淀粉"),
"制作步骤": [
"1. 鸡胸肉切丁,用酱油、料酒、淀粉腌制15分钟",
"2. 干辣椒剪成小段,葱、姜、蒜切片备用",
"3. 热锅凉油炒辣椒,再加入葱姜蒜炒出香味",
"4. 倒入鸡丁翻炒至变色,加入适量酱油、白糖",
"5. 快速炒匀后加点醋,撒上花生米,加盐调味,翻炒均匀"
]
}
# 4. 输出食谱的键值对、所有键(食物名)
print("食谱:", foods.items())
print("食物:", foods.keys())
# 5. 获取番茄炒蛋的制作步骤(存在则返回,不存在则提示)
print("番茄炒蛋的制作步骤:", foods["番茄炒蛋"]["主要材料"])
# 6. 获取宫保鸡丁的主要材料
print("宫保鸡丁的主要材料:", foods["宫保鸡丁"]["主要材料"])
- 结构本身 就有 明确的意义
将菜谱字典转为:菜品名为键,值为步骤字典;每步含材料、调味料、烹饪方法,无内容则省略键,保留完整详细步骤,给我python
# 最终版美食字典:
# 层级:菜品名 → 制作步骤字典 → 单步字典(无内容的键直接省略)
food_dict = {
"番茄炒蛋": {
"步骤1": {
"材料": ["鸡蛋2个", "番茄1个"],
"烹饪方法": "鸡蛋打入碗中充分打散;番茄洗净切成小块备用"
},
"步骤2": {
"调味料": ["食用油1勺"],
"烹饪方法": "热锅倒入食用油,油温六成热时倒入打散的鸡蛋液"
},
"步骤3": {
"烹饪方法": "待鸡蛋液凝固后,用铲子快速炒散,盛出备用"
},
"步骤4": {
"调味料": ["白糖半勺"],
"烹饪方法": "原锅留少许底油,放入番茄块翻炒,加白糖提鲜至番茄出汁变软"
},
"步骤5": {
"材料": ["炒好的鸡蛋"],
"调味料": ["盐少许"],
"烹饪方法": "倒入炒好的鸡蛋,加盐调味后翻炒均匀出锅"
}
},
"宫保鸡丁": {
"步骤1": {
"材料": ["鸡胸肉200g", "花生米50g", "干辣椒5个", "葱1段", "姜2片", "蒜2瓣"],
"调味料": ["酱油1勺", "料酒1勺", "淀粉1勺"],
"烹饪方法": "鸡胸肉切丁,用酱油、料酒、淀粉抓匀腌制15分钟;干辣椒剪段,葱姜蒜切片备用"
},
"步骤2": {
"调味料": ["食用油2勺"],
"烹饪方法": "热锅凉油,放入干辣椒段炒出香味,再加葱姜蒜片爆香"
},
"步骤3": {
"材料": ["腌制好的鸡丁"],
"烹饪方法": "倒入鸡丁快速翻炒至变色断生"
},
"步骤4": {
"调味料": ["白糖1勺", "醋半勺", "盐少许"],
"烹饪方法": "加白糖、醋、盐调味,翻炒均匀后放入花生米"
},
"步骤5": {
"烹饪方法": "快速翻炒10秒,确保花生米裹满汤汁后出锅"
}
}
}
# 调用示例:获取番茄炒蛋步骤3的信息(仅含烹饪方法)
print("番茄炒蛋步骤3:", food_dict["番茄炒蛋"]["步骤3"])
# 输出:{'烹饪方法': '待鸡蛋液凝固后,用铲子快速炒散,盛出备用'}
# 调用示例:获取宫保鸡丁步骤1的材料
print("宫保鸡丁步骤1材料:", food_dict["宫保鸡丁"]["步骤1"]["材料"])
# 输出:['鸡胸肉200g', '花生米50g', '干辣椒5个', '葱1段', '姜2片', '蒜2瓣']
- 在世界上飞行
- 落地之后 有一个时区转化的问题
- 这个问题 应该如何描述呢?
Python 时区计算:5 个城市(北京、伦敦、纽约、东京、悉尼),输入出发地、起飞时间、目的地,自动算当地到达时间,带数据校验和跨天显示
- 整体描述
- 限定在 五个城市
- 这里元组作为字典的key
# 假设的飞行时长(单位:小时),确保包含所有城市之间的往返飞行时长
flight_duration = {
("北京", "伦敦"): 10,
("伦敦", "北京"): 10,
("北京", "纽约"): 13,
("纽约", "北京"): 13,
("北京", "东京"): 3,
("东京", "北京"): 3,
("北京", "悉尼"): 10,
("悉尼", "北京"): 10,
("伦敦", "纽约"): 7,
("纽约", "伦敦"): 7,
("伦敦", "东京"): 9,
("东京", "伦敦"): 9,
("伦敦", "悉尼"): 11,
("悉尼", "伦敦"): 11,
("纽约", "东京"): 14,
("东京", "纽约"): 14,
("纽约", "悉尼"): 16,
("悉尼", "纽约"): 16,
("东京", "悉尼"): 7,
("悉尼", "东京"): 7
}
# 假设的城市和时区信息(简化示例)
city_timezones = {
"北京": 8,
"伦敦": 0,
"纽约": -5,
"东京": 9,
"悉尼": 10
}
# 手动输入出发地、起飞时间和目的地
while True:
departure_city = input("请输入出发城市(例如:北京): ")
if departure_city not in city_timezones:
print("输入的出发城市不存在,请重新输入。")
continue
break
while True:
departure_time_str = input("请输入出发时间(格式:HH:MM,例如:08:00): ")
try:
hours, minutes = map(int, departure_time_str.split(':'))
if 0 <= hours < 24 and 0 <= minutes < 60:
break
else:
print("出发时间格式不正确或超出范围,请重新输入。")
except:
print("出发时间格式不正确,请重新输入。")
while True:
arrival_city = input("请输入到达城市(例如:纽约): ")
if arrival_city not in city_timezones:
print("输入的到达城市不存在,请重新输入。")
continue
if (departure_city, arrival_city) not in flight_duration:
print("该航线不存在,请重新输入。")
continue
break
departure_timezone = city_timezones[departure_city]
arrival_timezone = city_timezones[arrival_city]
duration = flight_duration[(departure_city, arrival_city)]
# 将出发时间转换为分钟数
departure_time_minutes = hours * 60 + minutes
# 计算起飞时到达城市的当地时间(分钟数)
local_time_at_departure_in_arrival_city = departure_time_minutes + (arrival_timezone - departure_timezone) * 60
# 加上飞行时间(分钟数)得到到达时间(分钟数)
arrival_time_minutes = local_time_at_departure_in_arrival_city + duration * 60
# 计算经过的天数
days_passed = arrival_time_minutes // (24 * 60)
# 处理时间超过一天的情况,转换为当天的分钟数
arrival_time_minutes = arrival_time_minutes % (24 * 60)
# 转换回小时和分钟
arrival_hours = arrival_time_minutes // 60
arrival_minutes = arrival_time_minutes % 60
print(f"飞行时间为 {duration} 小时。")
if days_passed > 0:
print(f"到达 {arrival_city} 的当地时间是次日 {arrival_hours:02d}:{arrival_minutes:02d} 点")
else:
print(f"到达 {arrival_city} 的当地时间是 {arrival_hours:02d}:{arrival_minutes:02d} 点")
- 能否用这张图作为提示词
- 让ai生成 相应的程序呢?
根据这个生成python代码,输入目的地,重量,得到价格
- 再把照片发给ai
- 这次元组 作为字典的values
# 字典 value 是元组:(首重价格, 续重价格)
price_data = {
"江苏": (8, 2),
"浙江": (8, 2),
"上海": (8, 2),
"安徽": (8, 2),
"广东": (10, 5),
"福建": (10, 5),
"湖南": (10, 5),
"湖北": (10, 5),
"山东": (10, 5),
"天津": (10, 5),
"北京": (10, 5),
"江西": (10, 5),
"河南": (10, 5),
"河北": (10, 5),
"海南": (12, 8),
"四川": (12, 8),
"云南": (12, 8),
"贵州": (12, 8),
"陕西": (12, 8),
"重庆": (12, 8),
"山西": (12, 8),
"广西": (12, 8),
"吉林": (12, 8),
"黑龙江": (12, 8),
"内蒙古": (15, 12),
"宁夏": (15, 12),
"甘肃": (15, 12),
"辽宁": (15, 12),
"青海": (15, 12),
"新疆": (22, 22),
"西藏": (25, 25)
}
def calculate_price(destination, weight):
# 判断省份是否存在
if destination not in price_data:
return None
# 元组取值:第0位是首重,第1位是续重
first_weight, continued_weight = price_data[destination]
if weight <= 1:
return first_weight
else:
extra = weight - 1
# 不足1kg按1kg计算续重
extra_kg = int(extra) if extra.is_integer() else int(extra) + 1
return first_weight + extra_kg * continued_weight
# 测试运行
dest = input("请输入目的地省份:")
weight = float(input("请输入重量(kg):"))
price = calculate_price(dest, weight)
if price is None:
print("未找到该地区价格")
else:
print(f"运费:{price} 元")
- 元组 也可以
- 作为 字典的 values
- 列表也可以作为 values
- 字典的keys
- 必须可以哈希
- 元组 可以
- 列表 不行
- 必须可以哈希
- 这次学习了 ai时代下
- 综合使用 容器对象的方式
- 向ai询问过程
- 先明确 数据结构
- 再 细分 步骤
- 肯定成果 指出问题
- 小步快跑 迅速迭代
- 是时候 总结一下
容器类型了!🤔 - 下次再说!👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。










