"""
记录下自己自学python和练习写的代码,等以后进阶后,再回来看一下曾经自己写的代码有多蠢
Python入门练习题026:字符串写入的行数
把字符串S字符写入行中,每行最大宽度为100,如果往后再写一个字符,则写入下一行
每个字符的宽度是由一个给定数组widths决定的,widths[0]是a的宽度, widths[1]是b的宽度。。。
S="abcdefghijklmnopqrstuvwxyz"
widths=[10,10,10,10,10,10,10,...,10]
思路:
1. 按照题目的意思,每个字符的宽度都是10,也就是说S字符串有多长,列表widths就有多少个元素10.
2. 每行100的宽度,所以只要算出S的总宽度, 再除以100就是答案了。
3. 这个结果很可能是浮点数,只要出现小数整数部份就要向上取整,而小数部份*100就是占用最后一行的宽度值。
4. 这个题果然很简单,给自己增加点难度:如果每个字符的宽度不等长,比如说汉字是2,字母和数字是1
"""
#对于原题,按我的思路,代码如下:
#S="abcdefghijklmnopqrstuvwxyz"
S="abcdefghijklm"
widths=[10]*len(S)
i=sum(widths)/100
if i>int(i):
k=int(i)+1
else:
k=int(i)
j=round((i-int(i))*100)
print("最少需要的行数:",k) #用round函数是四舍五入,遇到结果是2.1,输出为2,而实际应该是3
print("最后一行用去的宽度为:",j)
print("===="*20)
#挑战增加难度:如果每个字符的宽度不等长,比如说汉字是2,字母和数字是1
#1. 按给定的字串符生成宽度的列表
#2. 每行只能写10个字符,遇到已经9个,第十个是汉字,写不下,必须另取一行,因为一个汉字是代表两个字符宽
#3. 其他要求同原题,求出最少的行数和最后一行占用的字符
ss="abcd123伍陆玖柒捌efg456" #三行,第一行9个字符宽,第二行10个宽,第三行4个宽,一共23个字符宽
#ss="abcdef伍陆玖柒捌123456g" #三行,第一行10个字符宽,第二行10个宽,第三行3个宽,一共
Python入门练习题026:字符串写入的行数
最新推荐文章于 2023-05-28 03:23:46 发布
这篇博客介绍了Python编程中处理字符串的练习题,通过示例代码展示了如何计算最少的行数以容纳字符串,并给出了字符宽度列表和总计宽度,最终得出最优布局所需的行数。

最低0.47元/天 解锁文章
1208





