woshizhangpengp 发表于 2023-7-26 21:26:55

作业33课后作业

这个程序是求给定的数中找出最大的奇数,其中划红线那里是不是应该是range(n-1,0,-1)从后往前查找,不应该是从最后一个n-1找到第0个嘛,为啥作业里面这个程序写的是range(n-1,-1,-1),运行了之后发现正常运行。

陶远航 发表于 2023-7-26 21:27:10

对于这个问题,让我们来分析一下。

在给定的程序中,range(n-1,-1,-1) 用于从后往前遍历数列,其中 n 是指数列的长度。这个遍历会从索引 n-1 开始,一直到索引 0。而在每次循环中,程序会检查当前数字是否为奇数,并将其与当前最大奇数进行比较。

为什么使用 range(n-1,-1,-1) 而不是 range(n-1,0,-1)?

这是因为在 Python 中,range(start, stop, step) 函数生成了一个包含了 范围内的整数序列,步长为 step。其中,stop 是不包括在范围内的。

如果我们使用 range(n-1, 0, -1),那么我们将会遗漏掉最开始的索引 0。也就是说,我们的遍历将会从索引 n - 1 开始,一直到索引 1。

相反地,使用 range(n-1, -1, -1) 我们将包含索引 0,以确保在循环中也能检查到第一个数字。

所以,通过在程序中使用 range(n-1, -1, -1) 可以确保我们正确地遍历整个数列,包括索引 0。

希望这个解答对你有帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

woshizhangpengp 发表于 2023-7-26 21:27:15

s = "43383"
   
n = len(s)
for j in range(n-1, -1, -1):
    if int(s) % 2 == 1:
      # 找到第一个值为奇数的字符,返回 s
      print(s[:j+1])
      break
# 未找到值为奇数的字符,返回空字符串
else:
    print(0)

附上作业里面的程序

Mike_python小 发表于 2023-7-26 21:27:27

关于最大奇数查找的程序

在给定的程序中,使用 range(n-1, -1, -1) 来遍历给定的数从最后一个元素到第一个元素,判断并找出最大的奇数。正如你所说,这是从后往前查找。

你可能对此有些困惑,因为我们常用 range(start, stop, step) 来生成一个范围序列,其中 start 是起始点,stop 是终止点(不包括),step 是步长(每次增加或减少的值)。在这种情况下,我们从 n-1 开始,递减到 -1(不包括),步长为 -1,即从最后一个元素向前逐个遍历。

为什么要这样做呢?

这是因为列表、数组和字符串的索引是从 0 开始的,而不是从 1 开始的。所以当我们使用 range(n-1, -1, -1) 时,它会从最后一个元素的索引开始,一直遍历到索引为 0 的元素。因此,这个程序正确地从后往前查找并找到最大的奇数。

这样的写法是为了确保代码的正确性和一致性,并避免在索引上出现偏差。请放心使用这种写法,它是合理且常见的方式。

希望这个解释能够帮助你理解程序中的 range(n-1, -1, -1) 语句。如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-7-26 21:29:28

在 Python 中, range()函数的工作原理是,它会生成一个从开始值到结束值(但不包括结束值)的整数序列。 range()函数的语法如下:

range(start, stop[, step])


其中:

·start : 可选参数,序列的开始值。默认为0。
·stop : 必选参数,序列的结束值(不包括)。
·step : 可选参数,步长(即每次增加的值)。默认为1。

你提到的range(n-1, -1, -1)的意思是,生成一个从n-1开始,到-1结束(不包括-1 ),步长为-1的整数序列。这样的话,就会从n-1开始,逐个往下减,直到0。

换句话说,这个range()函数会生成以下的序列: n-1, n-2, ..., 2, 1, 0 。

这是为什么你的程序能正常运行的原因。如果你写range(n-1, 0, -1) ,那么生成的序列就是n-1, n-2, ..., 2, 1 ,不包括0,可能就不符合你的需求了。

hellomyprogram 发表于 2023-7-26 21:32:16

本帖最后由 hellomyprogram 于 2023-7-26 21:33 编辑

因为range函数是不包含最后一个项目的。range是包含开头而不包含结尾的,无论步长是多少。

学习编程中的Ben 发表于 2023-7-26 21:35:38

不会
页: [1]
查看完整版本: 作业33课后作业