亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一臉正態懵逼,求大神賜教

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
? ? if score < 60:
? ? ? ? return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)
? ? return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]
print '<table border="1">'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

這復雜表達式怎么理解怎么玩?

如果我們用一個函數來替換字符串的格式化代碼,可以得到更清晰的代碼:

def generate_tr(name, score):
? ?return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]

這樣,只需要修改 generate_tr() 函數,必要的時候把score標紅。

這又怎么理解?



正在回答

2 回答

1、這是列表生成式 :tds = [generate_tr(name, score) for name, score in d.iteritems()] 它等同于

for name,score in d.iteritems():

????generate(name,score)

2、for name,score in d.iteritems 的那么相當于d字典中的每個key,socre相當于d字典中的每個value

3、?'<tr><td>%s</td><td>%s</td></tr>' % (name, score)’字符串中的%s相當于占位符字符輸出是會被?(name, score)的值對應更替的

0 回復 有任何疑惑可以回復我~
  1. tds =?[generate_tr(name, score) for name, score in d.iteritems()] 中,generate_tr(name, score)函數,這里需要傳入的參數,就是 in 后面?d.iteritems() 迭代出來的值,假設第一個值是 ('abc',80) 那么, 就回返回:?'<tr><td>%s</td><td>%s</td></tr>' %??(name, score) ,傳入的參數就回去替代返回字符串的兩個%s,即'<tr><td>abc</td><td>80</td></tr>'


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758382    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

一臉正態懵逼,求大神賜教

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號