鱼C论坛

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

[已解决]作业36课后作业

[复制链接]
发表于 2023-7-28 19:30:12 | 显示全部楼层 |阅读模式

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

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

x
请教各位大佬,用红线框出来的那一句if each.find(name)!=-1,有啥用,不是应该从0开始数嘛,为什么会等于-1呀
附上代码
movies = []
dates = []
directors = []
actors = []
scores = []
   
print("欢迎进入鱼C影评小程序")
print("1.数据录入")
print("2.查询数据")
print("3.退出程序")
op = int(input("请输入想要的功能(1/2/3):"))
   
while op != 3:
    if op == 1:
        go = True
        while go:
            movies.append(input("请输入电影名称:"))
            dates.append(input("请输入上映日期:"))
            directors.append([i.strip() for i in input("请输入导演名字(多人请用 / 分隔):").split('/')])
            actors.append([i.strip() for i in input("请输入演员名字(多人请用 / 分隔):").split('/')])
            scores.append(input("请输入电影评分:"))
   
            if 'N' == input("请问是否继续录入(Y/N):"):
                go = False
   
    if op == 2:
        name = input("请输入电影名称:")
        for each in movies:
            if each.find(name) != -1:
                print(f"电影名称:{each}")
                print(f"上映日期:{dates[movies.index(each)]}")
                print(f"导演名单:{directors[movies.index(each)]}")
                print(f"演员名单:{actors[movies.index(each)]}")
                print(f"当前评分:{scores[movies.index(each)]}")
                break
        else:
            print("查无此片!")
   
    op = int(input("\n请输入想要的功能(1/2/3):"))
最佳答案
2023-7-28 19:30:24
这段代码是一个简单的电影信息管理程序。在查询数据功能中,通过输入电影名称来查找是否存在该电影,并输出相关信息。

关于你提到的 if each.find(name) != -1 这一句,它的作用是判断变量 name 是否能在字符串 each 中找到位置(索引)。.find() 方法返回目标字符串在源字符串中的位置索引,如果找不到则返回 -1。所以这里的条件判断 != -1 的意思是,如果找到了,则执行后续的输出相关信息的代码;如果没有找到,则执行 else 分支,输出"查无此片!"。

虽然传统上索引是从 0 开始的,但 .find() 方法在找不到目标字符串时会返回 -1,这是为了方便判断是否找到了目标字符串。因此,这里使用 != -1 是为了判断是否找到了匹配的电影名称。

希望这个解释对你有帮助!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
7.28-1.png
7.28-2.png
7.28-3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-28 19:30:24 | 显示全部楼层    本楼为最佳答案   
这段代码是一个简单的电影信息管理程序。在查询数据功能中,通过输入电影名称来查找是否存在该电影,并输出相关信息。

关于你提到的 if each.find(name) != -1 这一句,它的作用是判断变量 name 是否能在字符串 each 中找到位置(索引)。.find() 方法返回目标字符串在源字符串中的位置索引,如果找不到则返回 -1。所以这里的条件判断 != -1 的意思是,如果找到了,则执行后续的输出相关信息的代码;如果没有找到,则执行 else 分支,输出"查无此片!"。

虽然传统上索引是从 0 开始的,但 .find() 方法在找不到目标字符串时会返回 -1,这是为了方便判断是否找到了目标字符串。因此,这里使用 != -1 是为了判断是否找到了匹配的电影名称。

希望这个解释对你有帮助!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 19:30:25 | 显示全部楼层
在这段代码中, if each.find(name) != -1  这一句的作用是在列表  movies  中查找是否包含输入的电影名称  name 。

find()  方法用于查找字符串中是否包含指定的子字符串,并返回第一次出现的索引位置。如果找不到该子字符串,则返回  -1 。

在这里, each  是  movies  列表中的每个电影名称,通过  find()  方法查找是否包含输入的电影名称  name 。如果  find()  方法返回的结果不等于  -1 ,说明找到了匹配的电影名称,即列表  movies  中的某个电影名称包含了输入的  name 。

为什么要判断是否等于  -1  呢?这是因为在 Python 中,字符串的索引是从 0 开始的,如果找不到子字符串, find()  方法会返回  -1 ,表示未找到。

如果  find()  方法返回  -1 ,则意味着  name  在  each  中未找到,即当前循环的电影名称不是我们要查找的电影。如果  find()  方法返回其他值(即不等于  -1 ),则说明找到了匹配的电影名称,程序会输出该电影的相关信息。

总结一下,这段代码通过输入的电影名称  name  在  movies  列表中查找匹配的电影,并输出该电影的相关信息。如果找不到匹配的电影,则输出"查无此片!"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 19:30:30 | 显示全部楼层
这段代码中的if each.find(name) != -1是用于判断输入的电影名称是否包含在已有的电影名称中。在Python字符串中,.find()方法用于寻找子字符串在主字符串中的位置,如果找到了则返回第一个匹配的索引位置,如果找不到则返回-1。

在这个例子中,each代表了movies列表中的每一个电影名称,而name代表了用户输入的电影名称。通过each.find(name)的返回值不等于-1的判断,可以确定用户输入的电影名称是否在已有的电影名称中出现过。如果找到了匹配的电影名称,就会输出该电影的详细信息;如果没有找到,则会输出"查无此片!"。

因此,这段代码中的if each.find(name) != -1的作用是用来判断输入的电影名称是否在已有的电影列表中,并进行相应的输出。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 19:35:01 | 显示全部楼层
find是一个方法,如果字符串里有这个内容返回这个子字符串第一个的下标,否则返回-1,这个-1指的是find方法的返回值,而不是你的数组,这个代码!=-1代表着不是没找到,也就是找到了
打不过脚本,求最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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