一个认为一切根源都是“自己不够强”的INTJ
个人主页:用哲学编程-优快云博客
专栏:每日一题——举一反三
Python编程学习
Python内置函数
目录
1. KISS(Keep It Simple, Stupid)
6. 高内聚低耦合(High Cohesion and Low Coupling)
7. 单一职责原则(Single Responsibility Principle, SRP)
8. 最小惊讶原则(Principle of Least Astonishment)
吐槽题目
这道题描述有问题,小时数应该是找到第一个共有的大写字母之后的那个共有字符而不是题目所描述的第二个共有字符。让我浪费1小时,无语!!!!!
我的写法
import sys
# 读取标准输入
input = sys.stdin.read
# 去除输入数据的前后空白,并按空白字符分割成列表
data = input().strip().split()
# 将输入的四个字符串分别赋值给 first_str、second_str、third_str 和 fourth_str
first_str = data[0]
second_str = data[1]
third_str = data[2]
fourth_str = data[3]
# 初始化存储星期几、小时和分钟的变量
weekday = ""
hour = ""
minute = ""
# 定义一个列表,包含星期一到星期日的缩写
days = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
# 布尔变量,用于指示是否已找到第一个匹配的大写字母
found_first = False
# 遍历 first_str 和 second_str 中每个字符的位置(长度取两者的最小值)
for i in range(min(len(first_str), len(second_str))):
# 如果两个字符串在某位置的字符相同
if first_str[i] == second_str[i]:
# 如果还未找到第一个大写字母且该字符在 'A' 到 'G' 之间
if not found_first and 'A' <= first_str[i] <= 'G':
# 将 weekday 设为相应的星期几(通过 days 列表和字符的 ASCII 码计算得出)
weekday = days[ord(first_str[i]) - ord('A')]
# 更新 found_first 为 True
found_first = True
# 如果已找到第一个大写字母
elif found_first:
# 如果该字符是数字 '0' 到 '9' 之间,将其转换为整数并赋值给 hour
if '0' <= first_str[i] <= '9':
hour = int(first_str[i])
break
# 如果该字符是 'A' 到 'N' 之间,将其转换为对应的小时值并赋值给 hour(通过字符的 ASCII 码计算得出)
elif 'A' <= first_str[i] <= 'N':
hour = 10 + ord(first_str[i]) - ord('A')
break
# 遍历 third_str 和 fourth_str 中每个字符的位置(长度取两者的最小值)
for i in range(min(len(third_str), len(fourth_str))):
# 如果两个字符串在某位置的字符相同且该字符是字母
if third_str[i] == fourth_str[i] and third_str[i].isalpha():
# 将该位置的索引赋值给 minute
minute = i
break
# 打印结果,格式为 星期几 小时:分钟,小时和分钟都以两位数显示(不足两位的前面补零)
print(f"{weekday} {hour:02d}:{minute:02d}")
这段代码的主要功能是从四个输入字符串中解析出一个特定的时间信息,其中包括星期几、小时和分钟。代码的实现步骤包括:
- 读取输入数据并进行预处理。
- 初始化存储星期几、小时和分钟的变量。
- 通过遍历前两个字符串来确定星期几和小时。
- 通过遍历后两个字符串来确定分钟。
- 最终输出格式化的结果。