Python之解决”千年虫“问题篇

计算机2000年问题,又叫做“千年虫”、“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K”。是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。千年虫

在计算机中,”1998“会被表示为”98“、”2000“会被表示为”00“,因此当计算机时间踏入2000年时,计算机会将2000年解析为1900年。因此从根本上说千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒。

把列表里面的数据进行修改,然后升序排序后输出。

# coding       :UTF_8
# 开发团队      :小白之家
# 开发人员      :机器人小白
# 开发时间      :2020/7/24 14:14
# 文件名称      :AC_6_1.py
# 开发工具      :PyCharm

# 解决”千年虫“问题
# 方法一    使用range函数
print('方法一:\n')
year = [89, 98, 00, 75, 68, 37, 58, 90]


for i in range(len(year)):  # 把year列表里面的全部元素依次赋值给 i
    if year[i] == 00:
        year[i] = int(2000)
    else:
        year[i] = int(1900 + year[i])

print('当前序列输出的初始年份:', year)
year.sort(reverse=False)    # 把列表进行升序排序
print('升序当前输出的初始年份:', year)

print('\n')
# 方法二    使用enumerate函数
print('方法二:\n')
year = [89, 98, 00, 75, 68, 37, 58, 90]

for index, value in enumerate(year):    # 遍历列表元素索引与年份
    if str(value) == '0':    # 判断00的年份
        year[index] = int(2000)
    else:
        year[index] = int('19' + str(value))

print('当前序列输出的初始年份:', year)
year.sort(reverse=False)    # 把列表进行升序排序
print('升序当前输出的初始年份:', year)

运行结果:
Python之解决”千年虫“问题篇_第1张图片

在这里,我是使用range和enumerate函数来重新生成列表的。方法还有很多,比如使用正则表达式来匹配列表里面的值。

你可能感兴趣的:(Python,python)