L1-033 出生年python
时间: 2025-03-15 17:17:26 浏览: 35
### L1-033 Python 实现:出生年月格式化
以下是针对该问题的解题思路以及完整的 Python 实现:
#### 问题分析
输入数据可能包含两种形式的日期字符串:
1. 完整的八位数表示法(`YYYYMM`),例如 `199808`。
2. 缩写的四位数表示法(`YYMM`),例如 `9808`。
目标是将这些日期转换为统一的 `YYYY-MM` 格式。对于缩写的情况,需根据规则判断前缀:
- 如果年份部分小于等于 22,则补全为 `20XX`;
- 否则,补全为 `19XX`。
---
#### 解决方案设计
通过以下逻辑实现需求:
1. **读取输入**:假设输入是一个列表,其中每个元素代表一个人的出生年月。
2. **处理每种情况**:
- 对于长度为 6 的字符串(即完整格式),直接提取并拼接为 `YYYY-MM` 形式。
- 对于长度为 4 的字符串(即缩写格式),先解析出年份和月份,再依据规则补充世纪前缀。
3. **输出结果**:返回或打印标准化后的日期列表。
---
#### Python 实现代码
```python
def format_birth_dates(dates):
formatted_dates = []
for date in dates:
if len(date) == 6: # 处理完整格式 YYYYMM
year, month = int(date[:4]), int(date[4:])
formatted_date = f"{year:04d}-{month:02d}" # 补零确保两位数显示
elif len(date) == 4: # 处理缩写格式 YYMM
yy, mm = int(date[:2]), int(date[2:]) # 提取年份和月份
century_prefix = '20' if yy <= 22 else '19'
full_year = int(century_prefix + str(yy))
formatted_date = f"{full_year:04d}-{mm:02d}"
else:
raise ValueError(f"Invalid date format: {date}") # 抛出异常提示错误
formatted_dates.append(formatted_date)
return formatted_dates
# 测试用例
input_data = ["199808", "9808", "2208", "7505"]
output_result = format_birth_dates(input_data)
print(output_result)
```
运行上述代码后,测试用例的结果如下:
```plaintext
['1998-08', '1998-08', '2022-08', '1975-05']
```
---
#### 关键点说明
1. **字符串切片操作**用于分离年份和月份[^1]。
2. 条件语句决定了如何补充世纪前缀。
3. 使用了格式化字符串方法 (`f-string`) 确保输出符合标准格式。
---
阅读全文
相关推荐






