繁体   English   中英

输出格式化Python 3.3

[英]Output formatting Python 3.3

所以这可能是一个非常基本的问题,关于使用'.format'的python中的输出格式化,因为我是初学者,我无法想象我的生活。 我试图尽可能详细,只是为了确保没有混乱。

让我举个例子,以便您更好地理解我的困境。 考虑以下程序

list = (['wer', 'werwe', 'werwe' ,'wer we'])   # list[0], list[1], list[2], list[3]
list.append(['vbcv', 'cvnc', 'bnfhn', 'mjyh']) # list[4]
list.append(['yth', 'rnhn', 'mjyu', 'mujym'])  # list[5]
list.append(['cxzz', 'bncz', 'nhrt', 'qweq'])  # list[6]

first = 'bill'
last = 'gates'

print ('{:10} {:10} {:10} {:10}'.format(first,last,list[5], list[6]))     

可以理解的是,这将产生输出:

bill       gates      ['yth', 'rnhn', 'mjyu', 'mujym'] ['cxzz', 'bncz', 'nhrt', 'qweq']

所以这是我真正的问题。 我从书中做了这个练习题,我不明白答案。 下面的程序将让您了解我们的输出类型:

students = []
students.append(['DeMoines', 'Jim', 'Sophomore', 3.45]) #students[0]
students.append(['Pierre', 'Sophie', 'Sophomore', 4.0]) #students[1]
students.append(['Columbus', 'Maria', 'Senior', 2.5])   #students[2]
students.append(['Phoenix', 'River', 'Junior', 2.45])   #students[3]
students.append(['Olympis', 'Edgar',  'Junior', 3.99])  #students[4]
students.append(['van','john', 'junior', 3.56])         #students[5]
def Grades(students):
    print ('Last       First      Standing        GPA')
    for students in students:
        print('{0:10} {1:10} {2:10} {3:8.2f}'.format(students[0],students[1],students[2],students[3]))

我们想要获得的输出是一种表格,可以为所有学生提供所有统计数据 -

Last       First      Standing        GPA
DeMoines   Jim        Sophomore      3.45
Pierre     Sophie     Sophomore      4.00
Columbus   Maria      Senior         2.50
Phoenix    River      Junior         2.45
Olympis    Edgar      Junior         3.99
van        john       junior         3.56

所以这就是我不明白的地方。 我们在两个示例中基本相同,即列表中的列表。 对于我的第一个例子,print语句是:

print('{:10} {:10} {:10} {:10}'.format(first, last, list[5], list[6]))  

list[5]list[6]本身就是列表,它们是完整打印的,正如您从输出中看到的那样。 但这不会发生在书籍问题上 在那里,印刷声明说

print('{0:10} {1:10} {2:10} {3:8.2f}'.format(students[0], students[1], students[2], students[3])) 

从表格输出中可以看出, students[0]仅指'DeMoines' 但是如果你只是在Python解释器中运行students[0]语句,它就会给出整个子列表。

['DeMoines', 'Jim', 'Sophomore', 3.45]

所以,基本上,我有两个问题,为什么students[0]有两种不同的含义,为什么students[0]不像list[5]list[6]那样打印整个列表?

看看for循环

for students in students:
#   ^^^^^^^^

因此, students (内部循环)实际上并不是指列表 并且students[0]按照预期从列表列表中的 元素引用第一个元素

我建议用all_students或类似的东西替换函数参数中的students

尝试将变量list重命名为不是保留字或内置函数或类型的内容。

让初学者感到困惑的是 - 如果你以非预期的方式重新定义或使用保留词或内置词,那么它迟早会发生在每个人身上。

如果你这样做

list = [1, 2, 3, 4]

您重新绑定名称list不再指向内置list数据类型,而是指向当前作用域中的实际列表[1, 2, 3, 4] 这几乎总是不是你打算做的。 使用变量dir是一个类似的陷阱。

也不要在列表赋值的方括号周围使用额外的parantheses () words = ['wer', 'werwe', 'werwe' ,'wer we']就足够了。

通常考虑为变量选择的名称。 students是描述性的,有用的评论, list不是。 此外,如果list当前包含列表,则稍后可能会使用包含set或任何其他容器类型的变量更改您的算法。 那么基于类型的变量名称甚至会产生误导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM