1

这段代码的目的是接收一个字符串并以特定格式打印出来。例如,给定:

s = "Hello"

该程序应打印出:

+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+

如果字符串的大小大于控制台的列大小,则应该以这种格式打印出字符串:

+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+
| H | e | l | l | o |
+---+---+---+---+---+

不幸的是,第二个条件不起作用,我似乎无法弄清楚为什么。

这是我的代码:

import os

s = "Hello"*20
(consoleRows,consoleCol)=os.popen('stty size','r').read().split()
top = outer = "+---"*len(s)+'+'+'\n'
for i in range(len(s)):
    outer += "| "+s[i]+" "

outer += '|\n'
outer += top[:len(top)-1]

split = outer.split('\n')
if(len(split[0]) > consoleCol): #problem lies on this line. Even though the size of  
    outer = outer.split('\n') #split[0] is greater than consoleCol the if statement  
    beg = 0   #isn't entered.                                                        
    size = consoleCol
    print(outer[0][beg:size])
    while(size < len(outer[0])):
        print(outer[1][beg:size]);
        print(outer[2][beg:size]);
        beg = size
        size += size
else:
    print(outer)

谁能看到我的问题是什么?我打印出 external[0] 和 consoleCol 的大小。len(output[0]) 大于 consoleCol。

4

2 回答 2

2

首先,我不是蟒蛇人。也就是说,我建议将逻辑与您的布局分开。创建方法drawHorizontalLine和。之后调试应该很容易。drawContentLine(Char[5])Char[5][] splitContent(String)

于 2013-02-09T08:07:15.337 回答
2

代码中的错误:consoleCol 是一个字符串,而不是一个整数。

替换(consoleRows,consoleCol)=os.popen('stty size','r').read().split()(consoleRows,consoleCol)=map(int, os.popen('stty size','r').read().split())

这仍然不会产生预期的结果 - 您必须自己弄清楚其余部分,并可能在此过程中清理代码。

于 2013-02-09T09:29:43.517 回答