鱼C论坛

 找回密码
 立即注册
查看: 1143|回复: 3

萌新之问

[复制链接]
发表于 2023-8-31 16:00:29 | 显示全部楼层 |阅读模式

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

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

x
题目是小甲鱼学python(最新版)p21课后作业问答题第6题
这是我的代码
experiment = [1,3,2,7,6,9,5,2,1,4,7,9,3,5]
a = experiment.count(9)
for i in experiment:
    if i == 9:
        a=a-1
    if a == 0:
        print(experiment.index(i))
        break
结果打印出来是5?
求解答,呱呱呱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-31 16:00:57 | 显示全部楼层
根据你提供的代码,你想要找到列表  experiment  中第一个出现数字 9 的索引位置。代码的逻辑基本正确,但是在每次找到数字 9 的时候,你将变量  a  减去了1,但是在判断  a  是否等于0之前,没有重置  a  的值,导致判断条件始终为假,无法打印出正确的索引位置。

为了解决这个问题,你可以将变量  a  的更新放在判断条件之后,这样可以保证在找到数字 9 之后,才将  a  减去1。修改后的代码如下所示:
experiment = [1, 3, 2, 7, 6, 9, 5, 2, 1, 4, 7, 9, 3, 5]
a = experiment.count(9)
for i in experiment:
    if i == 9:
        if a == 0:
            print(experiment.index(i))
            break
        a = a - 1

这样修改后,代码会正确地打印出数字 9 在列表  experiment  中的第一个索引位置,即 5。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-31 16:04:03 | 显示全部楼层
isdkz 发表于 2023-8-31 16:00
根据你提供的代码,你想要找到列表  experiment  中第一个出现数字 9 的索引位置。代码的逻辑基本正确,但 ...

有没有一种可能,我想找最后一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-31 16:47:18 | 显示全部楼层
本帖最后由 hellomyprogram 于 2023-8-31 16:50 编辑

你要实现反向索引可以这么做:
len(experiment) - (experiment[::-1].index(9) + 1)
experiment[::-1] 代表列表反转后的副本,等于 [5, 3, 9, 7, 4, 1, 2, 5, 9, 6, 7, 2, 3, 1]。
你这样找 9 就相当于原先 experiment 的最后一个 9 。
在这里,experiment[::-1].index(9) 应该是 2,因为 9 在 [5, 3, 9, 7, 4, 1, 2, 5, 9, 6, 7, 2, 3, 1] 的第三项。
所以 experiment 的倒数第三项是最后一个 9 ,我们将 experiment[::-1].index(9) 减去 1 就获得了原来的 experiment 的最后一个 9 的负数索引(的绝对值)。
再用 experiment 的总长度减去这个索引就是最后的 9 的位置。



非要用遍历也不是不行:
experiment = [1, 3, 2, 7, 6, 9, 5, 2, 1, 4, 7, 9, 3, 5]
index = len(experiment) # 从最后一个开始
for each_item in reversed(experiment):
        index -= 1
        if each_item == 9:
                print(index)
                break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-6 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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