字符串右补齐,根本指定的length长度补齐字符串str1到src中.
用函数实现:函数名:strfill(src,length,str1):
输入参数:src原字符串,length是目标字符串长度,str1用来填充的字符串.
示例:
strfill(“ch”,7,“inese”)=> “chinese”
strfill(“abcd”,11,“23”) => “abcd2323232”
strfill(“abc”,5,“0”)=>“abd00”
对于这个题目开始想到while,for循环等,但是不能处理所有的情况,就是函数不通用。后来请教了“先生”原来是如此简单,两行代码搞定。
import math
#lg表示目标字符串的长度
def strfill(src,lg,str1):
#math.ceil是向上取整,这个下面会具体介绍
n = math.ceil((lg-len(src))/len(str1))
newstr = src + str1 * n
return newstr[0:lg]
strfill("abcd",10,"7878") => "abcd787878"
1.这里介绍下,python的向上取整,向下取整,四舍五入,和int。
1.1.python的四舍五入用的round,这个大家可能都比较熟悉
print(round(26/10)) => 3
print(round(21/10)) => 2
1.2.int就是直接取整
print(int(26/10)) =>2
print(int(21/10)) => 2
1.3.对于向上取整和向下取整就要用到math这个模块了
1.3.1、向上取整
import math
print(math.ceil(26/10)) =>3
print(math.ceil(21/10)) =>3
1.3.2、向下取整
import math
print(math.floor(26/10)) =>2
print(math.floor(21/10)) =>2
备注: 这里说的两行代码就是:
n = math.ceil((lg-len(src))/len(str1))
newstr = src + str1 * n
此处用的了向上取整。
当然此题解法很多种,越是简单越好:
def strfill(src,length,str):
#定义一个空的字符串
tem=''
for i in range(length-len(src)):
#i%len(str)取余(其实就是取字符串对应的索引)
tem=tem+str[i%len(str)]
print(src+tem)
strfill('abcd',11,'100')
如果是补充字符是单个字符,这里就比较简单了,可以用ljust,rjust.
1、Python ljust()方法
描述
Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
语法
ljust()方法语法:
str.ljust(width[, fillchar])
参数
width – 指定填充指定字符后中字符串的总长度.
fillchar – 填充的字符,默认为空格。
src = "list"
print(src.ljust(10,"a")) =>"listaaaaaa"
2、Python rjust()方法
描述
Python rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
语法
rjust()方法语法:
str.rjust(width[, fillchar])
参数
width – 指定填充指定字符后中字符串的总长度.
fillchar – 填充的字符,默认为空格。
src = "list"
print(src.rjust(10,"a")) =>"aaaaaalist"