Python Logic - 使用句点居中文本
Posted
技术标签:
【中文标题】Python Logic - 使用句点居中文本【英文标题】:Python Logic - Centering text using periods 【发布时间】:2013-09-08 08:43:19 【问题描述】:我要this intro to python course online
问题如下:
对于这个程序,输入的第一行是一个整数宽度。然后,有几行文字; “END”行表示文本的结束。对于每一行文本,您需要打印出它的居中版本,通过在左右添加句点 .. 来使每行文本的总长度为宽度。 (所有输入行的长度最多为宽度。)居中意味着如果可能,添加到左侧和添加到右侧的句点数应该相等;如果需要,我们允许左侧比右侧多一个句点。例如,对于输入
13
Text
in
the
middle!
END
正确的输出应该是
.....Text....
......in.....
.....the.....
...middle!...
给出的提示是:
对于L的输入行长度,你应该在右侧添加(width-L)\\2个句点
到目前为止,这是我的代码:
width = int(input())
s1 = input()
periods_remain = width - len(s1)
L = periods_remain
periods_rtside = (width-L)//2
periods_leftside = width - periods_rtside
periods_rt_str = '.' * periods_rtside
periods_left_str = '.' * periods_leftside
line1 = periods_left_str + s1 + periods_rt_str
我的 line1 结果看起来像“...........Text..”而不是......Text....
It can be run here
我的问题似乎是 L。我不确定如何定义 L。谢谢!
【问题讨论】:
【参考方案1】:您可以为此使用str.center
:
>>> lis = ['Text', 'in', 'the', 'middle!', 'END']
>>> for item in lis:
... print item.center(13, '.')
...
.....Text....
......in.....
.....the.....
...middle!...
.....END.....
或format
:
for item in lis:
print format(item,'.^13')
...
....Text.....
.....in......
.....the.....
...middle!...
.....END.....
您的代码的工作版本:
lis = ['Text', 'in', 'the', 'middle!', 'END']
width = 13
for s1 in lis:
L = len(s1) #length of line
periods_rtside = (width - L)//2 #periods on the RHS
periods_leftside = width - periods_rtside - L #peroids on the LHS
periods_rt_str = '.' * periods_rtside
periods_left_str = '.' * periods_leftside
line1 = periods_left_str + s1 + periods_rt_str
print line1
输出:
.....Text....
......in.....
.....the.....
...middle!...
.....END.....
【讨论】:
你好像没有用老师的公式来计算两边的周期数? (宽度-L)\\2 @StacyM 检查更新的答案。请注意,L
是根据提示的字符串长度,但是您将其分配给了其他内容。
我现在明白了!我的过度设计。谢谢!干杯,享受你的积分!【参考方案2】:
对于那些仍在为这个棘手问题苦苦挣扎的人,这是我在 Python 3 shell 中运行的代码,尽管它在 http://cscircles.cemc.uwaterloo.ca/8-remix/ 中仍然失败
First_line = input("First input: ")
width = int(First_line)
while True:
s1 = input("Second input: ")
if s1 != 'END':
L = len(s1) #length of line
periods_rtside = (width - L)//2 #periods on the RHS
periods_leftside = width - periods_rtside - L #periods on the LHS
periods_rt_str = '.' * periods_rtside
periods_left_str = '.' * periods_leftside
line1 = periods_left_str + s1 + periods_rt_str
print(line1)
else:
break
要让它在http://cscircles.cemc.uwaterloo.ca/8-remix/ 控制台中工作,您需要将前两行更改为
宽度 = int(输入())
和 s1 到 s1 = 输入()
还可以通过单击“输入测试输入”按钮提供您自己的测试输入
【讨论】:
【参考方案3】:只需对上述代码进行一些小改动,就可以在评分器中使用。
width = int(input())
s1 = input()
while s1 != "END":
L = len(s1)
periods_rtside = (width - L)//2
periods_leftside = width - periods_rtside - L
periods_rt_str = '.' * periods_rtside
periods_left_str = '.' * periods_leftside
line1 = periods_left_str + s1 + periods_rt_str
print(line1)
s1 = input()
【讨论】:
以上是关于Python Logic - 使用句点居中文本的主要内容,如果未能解决你的问题,请参考以下文章