如何用Python代码将字符串分割为80字符宽度且不换行的打印方式?

-5 投票
3 回答
3222 浏览
提问于 2025-04-15 19:47

当我运行我的程序(这个程序是用来解密某个文档中的一段文字)时,我得到了:

W
E
T
H
E
P
E
O
P
L
E
O
F
T
H
E
U
N
I
T
E
D
S
T
A
T
E
S
I
N
O
R
D
E
R
T
O
F
O
R
M
A
M
O
R
E
P
E
R
F
E
C
T
U
N
I
O
N
E
S
T
A
B
L
I
S
H
J
U
S
T
I
C
E
I
N
S
U
R
E
D
O
M
E
S
T
I
C
T
R
A
N
Q
U
I
L
I
T
Y
P
R
O
V
I
D
E
F
O
R
T
H
E
C
O
M
M
O
N
D
E
F
E
N
S
E
P
R
O
M
O
T
E
T
H
E
G
E
N
E
R
A
L
W
E
L
F
A
R
E
A
N
D
S
E
C
U
R
E
T
H
E
B
L
E
S
S
I
N
G
S
O
F
L
I
B
E
R
T
Y
T
O
O
U
R
S
E
L
V
E
S
A
N
D
O
U
R
P
O
S
T
E
R
I
T
Y
D
O
O
R
D
A
I
N
A
N
D
E
S
T
A
B
L
I
S
H
T
H
I
S
C
O
N
S
T
I
T
U
T
I
O
N
F
O
R
T
H
E
U
N
I
T
E
D
S
T
A
T
E
S
O
F
A
M
E
R
I
C
A

从这里看不出来,但基本上每一行都是一个字母。

但是,我希望它能显示成:

我们美国人民,为了建立一个更完美的联盟,维护正义,确保国内安宁,提供共同防卫,促进公众福利,并确保自由的祝福给我们自己和我们的后代,特此制定并建立美国宪法。

我需要在我的程序中添加什么代码才能实现这个效果?

3 个回答

0
print s[0],
i = 1
for char in s[1:]:
    if i%80:
        print "\bchar",
    else:
        print "\b\n"
    i += 1

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

1

你是不是在做这样的事情:

for char in string:
    print char

如果是的话,改成这样:

for char in string:
    print char,

在这一行末尾的逗号(,)会让print正常情况下应该换行的地方不换行。不过,即便如此,这可能也不是你想要的(因为它在每个字符后面会多打印一个空格),下面的代码也可以解决这个问题:

import sys
for char in string:
    sys.stdout.write(char)
6

我不知道你提到的“一行一个字符”是什么意思,因为你没有告诉我们原因。不过,textwrap 模块可以满足你的需求:

s="WE THE PEOPLE OF THE UNITED STATES, IN ORDER TO FORM A MORE PERFECT UNION, ESTABLISH JUSTICE, INSURE DOMESTIC TRANQUILITY, PROVIDE FOR THE COMMON DEFENSE, PROMOTE THE GENERAL WELFARE, AND SECURE THE BLESSINGS OF LIBERTY TO OURSELVES AND OUR POSTERITY, DO ORDAIN AND ESTABLISH THIS CONSTITUTION FOR THE UNITED STATES OF AMERICA."

import textwrap
print "\n".join(textwrap.wrap(s, 80))

我根据你的评论重构了你原来的代码,这里是一个修正过的版本:

# You don't even use this so why import it? --> import string

def main():
    user_string = raw_input()
    all_caps = user_string.upper() # guess you wanted to make it uppercase
    output = [] # this will hold the decoded characters

    for char in all_caps:
        if char.isalpha():
            value = ord(char)
            if 70 <= value <= 90: # look at this, almost no other programming language supports that syntax
                num = value - 5
            elif 65 <= value <= 69:
                num = value + 21
            output.append(chr(num)) # add the decoded character to the output list
        else:
            output.append(char) # add the character verbatim to the output list (e.g. whitespace)

    print "".join(output) # print out the list by putting it together into a string

main()

撰写回答