问题情景:输入一个时间格式的整数(如20220101),利用数值计算分别求“年”、“月”、“日”,并输出‘xx年xx月xx日’,如‘2022年01月01日’。
Step 1:输入时间格式的整数,利用input函数;
# 利用输入函数input(),将值传给变量date,注意input函数输入的是一个字符串
date = int(input("请输入一个时间格式的整数(如20200118):"))
Step 2:分别求出“年”、“月”、“日”;
# 计算“年”,并转换为字符串,方便后续字符串拼接
year = str(date // 10000) # 假设date=20220101,则20220101//10000=2022
# 计算“月”
month_ = str(date % 10000 // 100)
# 计算“日”
day_ = str(date % 10000 % 100)
在Python中,‘/’为除,计算结果带小数位;‘//’为整除,计算结果取整数部分;‘%’为取余运算。
由于‘月’和‘日’计算结果可能为一位数,则需要在其前填充0,如“1”填充0后为“01”,此处可用zfill方法,用以给字符串前填充0,zfill(n)中n为宽度位数。zfill方法如下:
a = '1'
b = a.zfill(2)
print(b)
运行结果如下:
因此此处求“年”、“月”、“日”并转换为字符串类型后可进一步优化,方便后续字符串的拼接,优化如下:
# 计算“年”
year = str(date // 10000)
# 计算“月”
month_ = str(date % 10000 // 100)
month = month_.zfill(2) # zfill方法用以给字符串前面填充0,使得“1月”输出为“01月”
# 计算“日”
day_ = str(date % 10000 % 100)
day = day_.zfill(2)
Step 3:字符串拼接输出,如“月”或“日”计算后为一位数,则在其前补0。
print('%s年%s月%s日'%(year,month,day))
程序运行结果如下:
完整源代码:
# 任意输入日期
date = int(input("请输入一个时间格式的整数(如20200118):"))
# 计算”年“
year = str(date // 10000)
# 计算”月“
month_ = str(date % 10000 // 100)
month = month_.zfill(2) # zfill方法用来给字符串前面补0
# 计算”日“
day_ = str(date % 10000 % 100)
day = day_.zfill(2)
# 拼接”年“”月“”日“
print('%s年%s月%s日'%(year,month,day))
字符串拼接的5种方法:
str1 = '我' str2 = '爱' str3 = 'Python' 输出拼接结果:'我爱Python'
1.利用‘+’拼接
print(str1 + str2 + str3)
2.利用字符串的join方法进行拼接
print(''.join([str1,str2,str3])) # 按先后顺序拼接
3.format方法
print('{}{}{}'.format(str1,str2,str3)) # 大括号占位,接受对应位置的字符串
print('我{}爱Python{}'.format('非常','编程')) # 运行结果:‘我非常爱Python编程’
4.f方法拼接
print(f'{str1}{str2}{str3}')
5.字符串格式化拼接
print('%s%s%s'% (str1,str2,str3))
有任何错误之处欢迎大家私信我指出!