什么是Python代码来拆分字符串,使其在80个字符的窗口中正常打印,而无需包装?

什么是Python代码来拆分字符串,使其在80个字符的窗口中正常打印,而无需包装?,python,string,character,word-wrap,Python,String,Character,Word Wrap,当我运行我的程序(对某个文档中的段落进行解密)时,我有: 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

当我运行我的程序(对某个文档中的段落进行解密)时,我有:

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
从这里你看不出来,但基本上是每行一个字母

但是,我希望它说:

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
我们美国人民为了建立一个更加完美的联邦, 建立正义,确保国内安宁,提供共同防御, 促进普遍福利,确保我们自己享有自由的祝福 我们的子孙后代,为联合国制定并确立这部宪法 美利坚合众国


为了实现这一点,我必须向程序中添加哪些代码?您是否执行以下操作:

for char in string:
    print char
??如果是,请将其修复为:

for char in string:
    print char,
行尾的逗号(
)省略了换行符
print
正常打印。 但即使这也可能不是您想要的(因为它在每个字符后打印一个空格),下面的代码也应该解决这个问题:

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

我不知道那一行一个字符是关于什么的,因为你没有告诉我们原因,但是模块会给你你想要的:

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()
#您甚至不使用它,为什么要导入它?-->导入字符串
def main():
用户字符串=原始输入()
all_caps=user_string.upper()#我猜您想让它变成大写
输出=[]#这将保存解码的字符
对于所有大写字母中的字符:
如果char.isalpha():
值=ord(字符)

如果您必须提供中断的代码进行分析,因为这样做是正确的,那么情况就不是这样了。也许你不应该在每一个被解码的字符后面都印上换行符?天哪,你一定让每一个初学者的错误都成为可能。因为没有什么不该做的常见问题,所以我无法证明这一论点。你也不明白编辑不会删除原来的问题。如果您试图删除该问题,我可以向您保证,该问题仍将保留;)在问题被回答后删除它绝对不是SO的精神。你教授的目标(我希望)是让你学到一些东西,而不是让你在没有任何人帮助的情况下独自解决一个问题。所以(通常)上的人不仅会给你问题的答案,还会给你一些提示或资源,帮助你发现问题。@AndiDog和@MatrixFrog,我支持你的评论。然后编辑以重新发布问题。”如果我的教授…'确实=(那太棒了。我完全忘记了textwrap。这是我的代码:导入字符串def main():user\u string=raw\u input()all\u caps=(user\u string)for char in all\u caps:if char.isalpha():value=ord(char)if value>=70:if value@Andrew:注释中不能有多行代码。请编辑您的答案以包含该代码!抱歉,上面的内容没有达到我的预期效果…请向下滚动查看我在回答中重写的内容,谢谢!@Andrew:询问专业Python程序员不是作弊。Co把我的代码拼凑起来交上来就是作弊(还有剽窃,至少你的教授会这么想)。不,我不会删除这个答案。你的问题也不会被删除。就像在维基百科上,所有旧版本都保留了下来,你不能真的删除它。如果没有人将此发送到failblog或reddit,你应该很高兴。print语句结尾的逗号会在打印字符串的结尾添加一个空格。要解决这个问题,你需要在下一次迭代中添加打印“\b”(将光标向左移动1个空格)。此外,您没有检查文本限制(80个字符),因此这将在一行上打印整个段落