python用指定字符串指定长度进行字符串右补齐。

  • 字符串右补齐,根本指定的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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值