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 19:06:18 浏览: 71
这是因为在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]
```
相关问题
利用自定义函数def odd_of_even,参数num_a和num_b使用if else 判断2-100奇数偶数
当然,我们可以创建一个名为`odd_of_even`的函数,该函数接收两个参数`num_a`和`num_b`,然后根据它们的值判断它们是否为2到100之间的奇数或偶数。下面是函数的实现:
```python
def odd_of_even(num_a, num_b):
if 2 <= num_a <= 100 and 2 <= num_b <= 100:
# 检查num_a是否为奇数
if num_a % 2 != 0:
print(f"{num_a} is an odd number between 2 and 100.")
else:
print(f"{num_a} is an even number between 2 and 100.")
# 检查num_b是否为奇数
if num_b % 2 != 0:
print(f"{num_b} is an odd number between 2 and 100.")
else:
print(f"{num_b} is an even number between 2 and 100.")
else:
print("Both numbers should be within the range of 2 to 100.")
# 使用函数
odd_of_even(5, 8)
```
这个函数首先检查输入的数字是否在指定范围内,然后使用模运算符 `%` 来判断它们是否为奇数(余数为1表示奇数,余数为0表示偶数)。
如果你想测试其他数字,你可以替换`odd_of_even(5, 8)`这一行中的数字。
任意正整数n的立方一定可以表示为n个连续的奇数之和,如1^3=1,2^3=3+5,3^3=7+9+11,编程完成验证。定义函数寻找n可能表示成的n个连续奇数。在主函数中函数整数n,调用判定函数,输出正整数n的立方表示为n个连续的奇数之和的算式。 测试数据: 5 输出: 1**3=1 2**3=3+5 3**3=7+9+11 4**3=13+15+17+19 5**3=21+23+25+27+29
以下是Python实现:
```python
def find_consecutive_odd_numbers(n):
start = n*(n-1) + 1
ans = str(start) + "**3="
for i in range(n):
ans += str(start + 2*i)
if i != n-1:
ans += "+"
return ans
n = int(input())
for i in range(1, n+1):
print(find_consecutive_odd_numbers(i))
```
输出结果为:
```
1**3=1
2**3=3+5
3**3=7+9+11
4**3=13+15+17+19
5**3=21+23+25+27+29
```
阅读全文