断弦冷訫 发表于 2023-8-31 16:00:29

萌新之问

题目是小甲鱼学python(最新版)p21课后作业问答题第6题
这是我的代码
experiment =
a = experiment.count(9)
for i in experiment:
    if i == 9:
      a=a-1
    if a == 0:
      print(experiment.index(i))
      break
结果打印出来是5?
求解答,呱呱呱

isdkz 发表于 2023-8-31 16:00:57

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

为了解决这个问题,你可以将变量a的更新放在判断条件之后,这样可以保证在找到数字 9 之后,才将a减去1。修改后的代码如下所示:

experiment =
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。

断弦冷訫 发表于 2023-8-31 16:04:03

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

有没有一种可能,我想找最后一个{:10_277:}

hellomyprogram 发表于 2023-8-31 16:47:18

本帖最后由 hellomyprogram 于 2023-8-31 16:50 编辑

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


非要用遍历也不是不行:
experiment =
index = len(experiment) # 从最后一个开始
for each_item in reversed(experiment):
        index -= 1
        if each_item == 9:
                print(index)
                break
页: [1]
查看完整版本: 萌新之问