如何让输出显示制表符而不是显示\t?

0 投票
1 回答
680 浏览
提问于 2025-04-18 03:30

我正在尝试创建一个程序,首先让用户输入元素的数量,然后输入这些元素,最后对它们进行冒泡排序。

def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1):
        for i in range(passnum):
            if alist[i]>alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp


ntimes = raw_input("Enter the number of lines \n")

ntimes = int(ntimes)

alist = []

while (ntimes > 0):
    ntimes -= 1
    alist.append(raw_input('Enter the list to sort \n'))
bubbleSort(alist)
print (alist)

我的代码运行得很好,但如果输入中包含制表符,输出却显示为\t。我该如何让我的代码显示制表符?还有,怎么让输出中的每个值都显示在单独的一行呢?

1 个回答

2

将列表中的元素用换行符分开打印:

print '\n'.join(alist)

或者,如果你使用的是 print() 函数(在Python 3中,或者在使用 from __future__ import print_function 之后),可以把它们作为单独的参数传给 print()

print(*alist, sep='\n')

alist 前面的 * 符号告诉Python把列表中的值分开,并作为单独的参数传递,就像你调用 print(alist[0], alist[1], ..., alist[n]) 一样。sep 参数则告诉Python在这些参数之间使用换行符。

因为这样会分别打印每个参数,所以 print() 会对每个参数使用 str(),而不是让列表的表示使用 repr()

示例:

>>> alist = ['\tfirst with tab', 'second item', 'third\titem\twith\ttabs']
>>> print alist
['\tfirst with tab', 'second item', 'third\titem\twith\ttabs']
>>> print '\n'.join(alist)
    first with tab
second item
third   item    with    tabs
>>> from __future__ import print_function
>>> print(*alist, sep='\n')
    first with tab
second item
third   item    with    tabs

撰写回答