python 函数定义,用于查找列表中的所有值是否为偶数或都不是
python function definition to find if all values in a list are even odd or neither
我在大学初学者的计算机科学课程中苦苦挣扎,只需要简单的家庭作业帮助。
现在,我们正在研究函数定义,我必须编写一个程序来读取整数列表,并输出该列表是否包含所有偶数、奇数或两者都不包含。输入以一个整数开始,表示列表中整数的数量。第一个整数不在列表中(它只是告诉列表的长度)。
我的程序必须定义并调用以下两个函数。 def is_list_even()
returns 如果列表中的所有整数都是偶数则为真,否则为假。 def is_list_odd()
returns 如果列表中的所有整数都是奇数则为真,否则为假。如果列表全部为偶数,我还必须打印 'all even'。如果列表是奇数,我必须打印 'all odd'。如果列表有两者,我必须打印 'not even or odd'.
我已经能够将我需要的所有整数放入列表中,但是定义是我正在努力解决的问题(格式化、返回它等)。我已经将到目前为止的代码粘贴到下面(该网站已经更改了它的格式)但是我的程序没有产生任何输出。任何帮助,将不胜感激。谢谢。
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return True
else:
return False
def IsListOdd(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 1:
return True
else:
return False
def GetUserValues():
if IsListOdd(my_list) == True:
print("all odd")
elif IsListEven(my_list) == True:
print("all Even")
else:
print("not even or odd")
使用标志检查是否所有值都满足条件。
示例:
def IsListEven(my_list):
answer = True
for i in range(len(my_list)):
if my_list[i] % 2 == 0: # As pointed in comment, use != for isEven
answer = False
break
return answer
return
将立即中断循环,因此使用一个保持布尔变量,如:
def IsListEven(my_list):
allEven = True
for i in range(len(my_list)):
if my_list[i] % 2 != 0:
allEven = False
return allEven
def IsListOdd(my_list):
allOdd = True
for i in range(len(my_list)):
if my_list[i] % 2 != 1:
allOdd = False
return allOdd
def GetUserValues():
if IsListOdd(my_list) == True:
print("all odd")
elif IsListEven(my_list) == True:
print("all Even")
但是如果你使用all()
,你的函数可以是一个衬里,一个检查是否都是奇数的例子
my_list = [1,3,5]
print(all(x % 2 == 1 for x in my_list))
存在一个主要的逻辑错误,以及一些次要的语法修正。
目前,IsListEven()
和 IsListOdd()
函数在分别找到偶数或奇数元素时会立即 return。这导致列表被标记为“偶数”,即使只有第一个元素是偶数(反之亦然)。解决这个问题的一种方法是 return 发现相反的情况时为 false,否则为 true:
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 1:
return False
return True
和
def IsListOdd(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return False
return True
更明确地说,这可以用 for-else
语句定义(尽管这里不是完全必要的):
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return False
else:
return True
就语法而言,没有太多理由在 for 循环中使用列表索引。更简单的方法是直接访问数字:
def IsListEven(my_list):
for i in my_list:
if i % 2 == 1:
return False
else:
return True
此外,可以简化最终检查,因为 returned 值是布尔值:
if IsListOdd(my_list):
print("all odd")
elif IsListEven(my_list):
print("all Even")
else:
print("not even or odd")
我认为您的方向是正确的,您只需要稍微简化一下 for 循环中的逻辑即可:
def get_int_input(prompt: str) -> int:
num = -1
while True:
try:
num = int(input(prompt))
break
except ValueError:
print("Error: Enter an integer, try again...")
return num
def is_list_even(lst: list[int]) -> bool:
for x in lst:
if x % 2 != 0:
return False
return True
def is_list_odd(lst: list[int]) -> bool:
for x in lst:
if x % 2 == 0:
return False
return True
def main():
num_elements = get_int_input("Enter the number of elements: ")
my_list = []
for i in range(num_elements):
my_list.append(get_int_input(f"Enter element {i + 1}: "))
print(my_list)
if is_list_even(my_list):
print("all even")
elif is_list_odd(my_list):
print("all odd")
else:
print("mix of evens and odds")
if __name__ == "__main__":
main()
示例用法 1:
Enter the number of elements: 5
Enter element 1: 1
Enter element 2: 1
Enter element 3: 1
Enter element 4: 1
Enter element 5: 1
[1, 1, 1, 1, 1]
all odd
示例用法 2:
Enter the number of elements: 3
Enter element 1: 2
Enter element 2: 2
Enter element 3: 2
[2, 2, 2]
all even
用法示例 3:
Enter the number of elements: 4
Enter element 1: 1
Enter element 2: a
Error: Enter an integer, try again...
Enter element 2: 2
Enter element 3: 1
Enter element 4: 7
[1, 2, 1, 7]
mix of evens and odds
我在大学初学者的计算机科学课程中苦苦挣扎,只需要简单的家庭作业帮助。
现在,我们正在研究函数定义,我必须编写一个程序来读取整数列表,并输出该列表是否包含所有偶数、奇数或两者都不包含。输入以一个整数开始,表示列表中整数的数量。第一个整数不在列表中(它只是告诉列表的长度)。
我的程序必须定义并调用以下两个函数。 def is_list_even()
returns 如果列表中的所有整数都是偶数则为真,否则为假。 def is_list_odd()
returns 如果列表中的所有整数都是奇数则为真,否则为假。如果列表全部为偶数,我还必须打印 'all even'。如果列表是奇数,我必须打印 'all odd'。如果列表有两者,我必须打印 'not even or odd'.
我已经能够将我需要的所有整数放入列表中,但是定义是我正在努力解决的问题(格式化、返回它等)。我已经将到目前为止的代码粘贴到下面(该网站已经更改了它的格式)但是我的程序没有产生任何输出。任何帮助,将不胜感激。谢谢。
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return True
else:
return False
def IsListOdd(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 1:
return True
else:
return False
def GetUserValues():
if IsListOdd(my_list) == True:
print("all odd")
elif IsListEven(my_list) == True:
print("all Even")
else:
print("not even or odd")
使用标志检查是否所有值都满足条件。 示例:
def IsListEven(my_list):
answer = True
for i in range(len(my_list)):
if my_list[i] % 2 == 0: # As pointed in comment, use != for isEven
answer = False
break
return answer
return
将立即中断循环,因此使用一个保持布尔变量,如:
def IsListEven(my_list):
allEven = True
for i in range(len(my_list)):
if my_list[i] % 2 != 0:
allEven = False
return allEven
def IsListOdd(my_list):
allOdd = True
for i in range(len(my_list)):
if my_list[i] % 2 != 1:
allOdd = False
return allOdd
def GetUserValues():
if IsListOdd(my_list) == True:
print("all odd")
elif IsListEven(my_list) == True:
print("all Even")
但是如果你使用all()
,你的函数可以是一个衬里,一个检查是否都是奇数的例子
my_list = [1,3,5]
print(all(x % 2 == 1 for x in my_list))
存在一个主要的逻辑错误,以及一些次要的语法修正。
目前,IsListEven()
和 IsListOdd()
函数在分别找到偶数或奇数元素时会立即 return。这导致列表被标记为“偶数”,即使只有第一个元素是偶数(反之亦然)。解决这个问题的一种方法是 return 发现相反的情况时为 false,否则为 true:
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 1:
return False
return True
和
def IsListOdd(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return False
return True
更明确地说,这可以用 for-else
语句定义(尽管这里不是完全必要的):
def IsListEven(my_list):
for i in range(len(my_list)):
if my_list[i] % 2 == 0:
return False
else:
return True
就语法而言,没有太多理由在 for 循环中使用列表索引。更简单的方法是直接访问数字:
def IsListEven(my_list):
for i in my_list:
if i % 2 == 1:
return False
else:
return True
此外,可以简化最终检查,因为 returned 值是布尔值:
if IsListOdd(my_list):
print("all odd")
elif IsListEven(my_list):
print("all Even")
else:
print("not even or odd")
我认为您的方向是正确的,您只需要稍微简化一下 for 循环中的逻辑即可:
def get_int_input(prompt: str) -> int:
num = -1
while True:
try:
num = int(input(prompt))
break
except ValueError:
print("Error: Enter an integer, try again...")
return num
def is_list_even(lst: list[int]) -> bool:
for x in lst:
if x % 2 != 0:
return False
return True
def is_list_odd(lst: list[int]) -> bool:
for x in lst:
if x % 2 == 0:
return False
return True
def main():
num_elements = get_int_input("Enter the number of elements: ")
my_list = []
for i in range(num_elements):
my_list.append(get_int_input(f"Enter element {i + 1}: "))
print(my_list)
if is_list_even(my_list):
print("all even")
elif is_list_odd(my_list):
print("all odd")
else:
print("mix of evens and odds")
if __name__ == "__main__":
main()
示例用法 1:
Enter the number of elements: 5
Enter element 1: 1
Enter element 2: 1
Enter element 3: 1
Enter element 4: 1
Enter element 5: 1
[1, 1, 1, 1, 1]
all odd
示例用法 2:
Enter the number of elements: 3
Enter element 1: 2
Enter element 2: 2
Enter element 3: 2
[2, 2, 2]
all even
用法示例 3:
Enter the number of elements: 4
Enter element 1: 1
Enter element 2: a
Error: Enter an integer, try again...
Enter element 2: 2
Enter element 3: 1
Enter element 4: 7
[1, 2, 1, 7]
mix of evens and odds