为什么python在从字符串或列表打印时会产生一半的空间?

时间:2013-06-30 03:46:19

标签: python python-2.7

finale_line=[]
print type(finale_line)#just checking#
lot_number=()
number_drawn=()
def load():  
    first=input("enter first lot: ")
    last=input("enter last lot: ")
    for lot_number in range(first,last):
        line_out=str(lot_number)            
        for count in range(1,5):
            number_drawn=raw_input("number: ")  
            line_out=line_out+number_drawn
        print line_out        #making sure it's a string at this point#
        finale_line.append(line_out)                
finale_line2=finale_line                        

load()


print finale_line  #again just checking#
print(" "*4),
for n in range(1,21):
    print n,          #this is to produce a line of numbers to compare to output#  
for a in finale_line:    
    print"\n",    
    print a[0]," ",    
    space_count=1
    for b in range(1,5):
        if int(a[b])<10:
            print(" "*(int(a[b])-space_count)),int(a[b]),
            space_count=int(a[b])
        else:                   
            print(" "*(a[b]-space_count)),a[b],
            space_count=a[b]+1

我为实际上没有措辞“道歉”而道歉这将使我在Jeopardy上付出代价。 2:我发了两次,因为我认为第一个被搞砸了.3:发布的代码是一个旧的已经废弃的版本,但令我担心的是你得到的错误信息与我的不同。我不确定这个版本会在您的机器上产生相同的结果。这是python的一个持续存在的问题。

>>>
<type 'list'>
enter first lot: 1
enter last lot: 4
number: 2
number: 3
number: 4
number: 5
12345
number: 1
number: 2
number: 3
number: 4
21234
number: 3
number: 4
number: 5
number: 6
33456
['12345', '21234', '33456']
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
1     2   3   4   5 
2    1   2   3   4 
3      3   4   5   6
>>> 

我意识到我的逻辑在间距上存在问题,但我认为这可以解决。我不明白的是半空间的来源。或者可能需要完全不同的方法。感谢您的回复,我不想浪费任何人的时间,但非常感谢

1 个答案:

答案 0 :(得分:2)

我不知道你所说的“半”空间是什么意思,但我觉得令人困惑的是你认为不应该在你的数字之间出现的“额外”空间;我是对的吗?

如果是这种情况,则来自print语句中的最后一个逗号。您正在使用它来阻止print在输出后打印换行符 - 但是您没有意识到它在打到该逗号时会打印一个额外的空格。在Python命令提示符处尝试:

>>> def hello():
...     print "Hello",
...     print "world"
... 
>>> hello()
Hello world

我没有在“你好”之后放一个空格,所以它来自哪里?答案:逗号。

你的困惑主要源于两件事:1)使用错误的工具,2)缺乏对Python输出方式的深入理解(在Python初学者中可以理解)。

问题1可以使用sys.stdout.write()代替print来解决。 (请注意,在使用之前,您需要import sys)。 write()不会添加任何空格或换行符;你需要自己指定空格和换行符。 (如果您忘记了,则Python字符串中的换行符为\n)。因此,您的输出将更具可预测性。

问题2可以通过尽快通过http://docs.python.org/2/tutorial/inputoutput.html来解决。请注意使用.rjust().format()之类的字符串方法:习惯这些方法,你就会学会喜欢它们。事实上,你很快就会想知道为什么在世界上你会永远想要再用手做这种字符串格式化,当有这么强大的功能可以为你做。

希望这会有所帮助,并且喜欢学习Python!