[英]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.