鱼C论坛

 找回密码
 立即注册
查看: 2233|回复: 9

[已解决]第16讲 课后题4 求解

[复制链接]
发表于 2015-1-19 10:44:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序如下:
name = input('请输入待查找的用户名:')
score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]]
IsFind = False


for each in score:
    if name in each:
        print(name + '的得分是:', each[1])
        IsFind = True
        break
   
if IsFind == False:name取值为each[0]?
    print('查找的数据不存在!')

提问:
for each in score:
    for name in each:
        print (name)
结果为:
迷途
85
黑夜
80
小布丁
65
福禄娃娃
95
怡静
90
name遍历each的所有项。


为什么源程序中的
if name in each:
        print(name + '的得分是:', each[1])
name取值为each[0]?




最佳答案
2015-1-19 12:01:26
说实话我没看明白问的问题。。
列表的下标是从0开始的。
  1. for each in score:
  2.     for name in each:
  3.         print (name)
复制代码

前面有个name接受的是input的输入,这里的for循环再用name则会替换掉之前的name。
结果就是把列表里的列表迭代出来。
  1. if name in each:
  2.         print(name + '的得分是:', each[1])
复制代码

这段的name取值并非是each[0],只要输入的name存在于each中就会显示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-19 12:01:26 | 显示全部楼层    本楼为最佳答案   
说实话我没看明白问的问题。。
列表的下标是从0开始的。
  1. for each in score:
  2.     for name in each:
  3.         print (name)
复制代码

前面有个name接受的是input的输入,这里的for循环再用name则会替换掉之前的name。
结果就是把列表里的列表迭代出来。
  1. if name in each:
  2.         print(name + '的得分是:', each[1])
复制代码

这段的name取值并非是each[0],只要输入的name存在于each中就会显示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-19 12:52:45 | 显示全部楼层
wei_Y 发表于 2015-1-19 12:01
说实话我没看明白问的问题。。
列表的下标是从0开始的。

那假如我输入85,它也存在于each中,为什么不会显示85 的得分是85?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-19 12:56:49 | 显示全部楼层
Enlu 发表于 2015-1-19 12:52
那假如我输入85,它也存在于each中,为什么不会显示85 的得分是85?

因为input是字符串,'85'和85是不一样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-19 13:12:08 | 显示全部楼层
原来如此。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-19 13:21:29 | 显示全部楼层
wei_Y 发表于 2015-1-19 12:56
因为input是字符串,'85'和85是不一样的。

了解了,谢谢版主,还有个问题就是,如果反过来,想打印出的结果是  print(分数 + ‘分的是:’,each[0])
程序应该怎么改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-19 13:24:39 | 显示全部楼层
本帖最后由 wei_Y 于 2015-1-19 13:25 编辑
Enlu 发表于 2015-1-19 13:21
了解了,谢谢版主,还有个问题就是,如果反过来,想打印出的结果是  print(分数 + ‘分的是:’,each[0] ...

可以把score里的分数如85改成'85',或者把name = input()改成name(任意) = int(input()),或者两个都不改,写成print(each[1],'分数是',each[0])反正让name和score里需要判断的内容一致就行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-19 13:41:36 | 显示全部楼层
wei_Y 发表于 2015-1-19 13:24
可以把score里的分数如85改成'85',或者把name = input()改成name(任意) = int(input()),或者两个都不改 ...

谢谢,解决了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-19 20:57:58 | 显示全部楼层
顶~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-20 10:53:55 | 显示全部楼层
OKhaode
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表