为了账号安全,请及时绑定邮箱和手机立即绑定

一脸正态懵逼,求大神赐教

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
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

一脸正态懵逼,求大神赐教

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信