簡體   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