题目介绍:
个人解法:
import re
while True:
try:
str = input()
l = len(str)
# 判断字符长度,如果不是8的倍数,将其补成8的倍数
if l%8 != 0:
l = (l//8 + 1)*8
# 用0补齐字符串
s = str.ljust(l, '0')
# 用正则表达式分割字符串
li = re.findall(r'.{8}', s)
for i in li:
print(i)
except:
break
涉及到的方法:
ljust(width,fillchar)方法:原字符串左对齐,在末尾填充字符,width为指定字符长度,小于该长度则补齐到该长度,fillchar表示填充的字符串,默认为空格。
rjust(idth,fillchar)方法:原字符串右对齐,在开头填充字符,其余同ljust。
分割字符串用正则表达式很高效,直接就将字符串按固定长度分割,然后放到列表里了。
碰到的小坑:
①一开始想补齐字符串长度为8的倍数,于是想要len(str)除以8的商,我直接用len(str)/8了,然后调试发现报错说这里是个float型数据,原来python3里要取整数商要用len(str)//8表示向下取整,python2里可以直接用len(str)/8。
②ljust()方法必须创建个新的变量,把补齐后的字符串赋值给新变量。
记录下排行靠前,效率更高的解法:
while True:
try:
str = input()
# 字符串长度大于8时
while len(str) > 8:
# 每次切片取出前8个字符
print(str[:8])
# 取完后,丢掉前8个字符
str = str[8:]
# 剩余长度不足8的字符串,用0补齐
print(str.ljust(8, '0'))
except:
break