鱼C论坛

 找回密码
 立即注册
查看: 1215|回复: 4

[已解决]根据输入的名字打印对应的分数问题

[复制链接]
发表于 2020-4-8 10:27:12 | 显示全部楼层 |阅读模式

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

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

x
各位大佬,以下代码打印出来永远只有迷途,其他的都无法操作,而且会把else后面的也打印出来,不知道错哪了, 正确的应该怎么写呢,请大神指教!

name = input('请输入待查找的用户名:')
score = [['迷途',85],['黑夜',80],['小布丁',65],['娃娃',95],['怡景',90]]
for i in score:
    if name == i[0]:
        print(name,i[1])
        break
    else:
        name = input('您输入的名字有误,请重新输入:')
最佳答案
2020-4-8 10:48:03
你的程序,遍历score的第一个后,若不是你输入的名字,你就从新输入,肯定有问题啊。
应该是遍历完整个列表之后发现没找到,然后重新输入。
应该用for…else…
然后在for循环外再套一层循环,对重新输入的用户名进行遍历
  1. name = input('请输入待查找的用户名:')
  2. score = [['迷途',85],['黑夜',80],['小布丁',65],['娃娃',95],['怡景',90]]
  3. flag=1
  4. while flag:
  5.     for i in score:
  6.         if name == i[0]:
  7.             print(name,i[1])
  8.             flag=0
  9.             break
  10.     else:
  11.         name = input('您输入的名字有误,请重新输入:')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-8 10:48:03 | 显示全部楼层    本楼为最佳答案   
你的程序,遍历score的第一个后,若不是你输入的名字,你就从新输入,肯定有问题啊。
应该是遍历完整个列表之后发现没找到,然后重新输入。
应该用for…else…
然后在for循环外再套一层循环,对重新输入的用户名进行遍历
  1. name = input('请输入待查找的用户名:')
  2. score = [['迷途',85],['黑夜',80],['小布丁',65],['娃娃',95],['怡景',90]]
  3. flag=1
  4. while flag:
  5.     for i in score:
  6.         if name == i[0]:
  7.             print(name,i[1])
  8.             flag=0
  9.             break
  10.     else:
  11.         name = input('您输入的名字有误,请重新输入:')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 11:33:36 | 显示全部楼层
还可以用自定义函数来写:
  1. def finduser(name):
  2.     for i in score:
  3.         if name == i[0]:
  4.             print(name,i[1])
  5.             return True
  6.    
  7. score = [['迷途',85],['黑夜',80],['小布丁',65],['娃娃',95],['怡景',90]]
  8. print('请输入待查找的用户名:',end='')
  9. while True:
  10.     if not finduser(input()):
  11.         print('您输入的名字有误,请重新输入:',end='')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 11:42:54 | 显示全部楼层
本帖最后由 TJBEST 于 2020-4-8 11:44 编辑

我理解,你的意思是这样的。
  1. name = input('请输入待查找的用户名:')
  2. score = [['迷途',85],['黑夜',80],['小布丁',65],['娃娃',95],['怡景',90]]
  3. for i in score:
  4.     if name == i[0]:
  5.         print(name,i[1])
  6.         break
  7.     else:
  8.         continue
  9. else:
  10.     name = input('您输入的名字有误,请重新输入:')
复制代码

如果if - else 当if 不满足 就会执行 else的语句,所以你的程序会打印多次'您输入的名字有误,请重新输入:'。
加入continue表示 尚未着找到,但是还有未遍历的内容,所以仅这次啥也不干遍历继续。
如果有问题继续询问,如果觉得好,请采纳。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 11:57:27 | 显示全部楼层
第一个name和else后面的name不是同一个,后面的name是局部变量,楼主写的时候是想后面的name改变前面的name吧,需要申明全局变量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 01:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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