字元串右補齊,根本指定的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"