a = [1, 10, 9, 7, 2, 3] b = [1, 3, 7, 9] def odd_numbers(list_arg): for item in list_arg: new_list = [] if ((item % 2) != 0): new_list.append(item) return sorted(new_list, reverse = False) odd_numbers(a)为什么只输出一个值
时间: 2023-11-29 10:06:18 浏览: 35
这是因为在for循环中,每次都会重新创建一个空列表`new_list`,因此只有最后一个奇数被添加进去并进行了排序。要解决这个问题,可以将`new_list`的创建放在for循环外部,这样就可以将所有的奇数都添加进去并排序。修改后的代码如下:
```
a = [1, 10, 9, 7, 2, 3]
b = [1, 3, 7, 9]
def odd_numbers(list_arg):
new_list = []
for item in list_arg:
if ((item % 2) != 0):
new_list.append(item)
return sorted(new_list, reverse = False)
print(odd_numbers(a)) # 输出 [1, 3, 7, 9]
```
相关问题
7-1 求[a,b]间奇数的和
这道题可以用循环来解决。首先,需要判断 a 和 b 的奇偶性,如果 a 是偶数,则将 a 加 1,使得 a 成为一个奇数;如果 b 是偶数,则将 b 减 1,使得 b 成为一个奇数。然后就可以用循环遍历 [a, b] 中的所有奇数,将它们累加起来即可。
下面是 Python 的实现代码:
```python
def sum_odd_numbers(a, b):
if a % 2 == 0:
a += 1
if b % 2 == 0:
b -= 1
sum = 0
for i in range(a, b+1, 2):
sum += i
return sum
```
在上面的代码中,我们先通过 if 语句判断了 a 和 b 的奇偶性,然后用一个 for 循环遍历 [a, b] 中的所有奇数,并将它们累加到 sum 变量中。最后返回 sum 的值即为 [a, b] 间奇数的和。
编程题: 利用递归方法求s=1+3+5+...+(2n+1)
好的,这是一个简单的递归题目。我们可以将这个问题分解成两个部分:求前n个奇数的和以及求第n个奇数。然后利用递归的思想进行求解。
具体实现如下:
```python
def sum_of_odd_numbers(n):
if n == 0:
return 0
else:
return sum_of_odd_numbers(n - 1) + 2 * n - 1
n = int(input("请输入一个正整数:"))
s = sum_of_odd_numbers(n)
print("s =", s)
```
我们定义一个函数 `sum_of_odd_numbers(n)`,它的功能是求前n个奇数的和。当n等于0时,返回0;否则,返回 `sum_of_odd_numbers(n - 1) + 2 * n - 1`。这里的 `2 * n - 1` 就是第n个奇数。
最后,我们输入一个正整数n,调用 `sum_of_odd_numbers(n)` 函数求解,并输出结果。