我必须创建两个函数。一个可以通过返回t / f来判断一个数字是奇数还是偶数,另一个可以调用第一个函数然后返回有多少个偶数。
到目前为止,这是我的代码:
Even = [0,2,4,6,8]
IsEvenInput = int(input("Please enter a number: "))
def IsEvenDigit(a):
if a in Even:
return True
else:
return False
y = IsEvenDigit(IsEvenInput)
print(y)
def CountEven(b):
count = 0
for a in b:
if IsEvenDigit(a):
count+=1
return count
d = input("Please enter more than one number: ")
y = CountEven(d)
print(y)
这会保持输出0并且实际上不会计数。我现在做错了什么?
答案 0 :(得分:1)
d = input("Please enter more than one number: ")
这将返回一串数字,可能用空格分隔。您需要将split()
字符串放入文本数字序列中,然后将其转换为整数。
有一种通用方法可以确定数字是奇数还是使用模数/余数运算符%
:如果除以2
之后的余数是0
那么数字是甚至。
答案 1 :(得分:0)
你在计算整数 - [0,2,4,6,8]等 - 是字符串中的字符 - “0”,“2”,“4”,“6”,“8”等目前,IsEvenDigit(a)永远不会成为现实,因为字符串中的字符不会出现在偶数整数列表中,因此if语句下面的代码永远不会被执行。您需要在CountEven函数中使用IsEvenDigit(int(a))
。
关于另一个主题,你的帖子的评论者建议阅读PEP 8.你的代码实际上格式很好,它只是在Python中,CamelCase仅用于类,而words_seperated_by_underscores用于变量和函数名。
或者,如果您想要简洁和不可读,请使用一些代码:
main = lambda: sum(map(lambda x: int(x) % 2 == 0, (i for i in input("Enter a number: "))))
main()
确实定义了2个(匿名)函数!
答案 2 :(得分:0)
这是另一种方法:
def is_even(number):
return number % 2 == 0
def even_count(numbers_list):
count = 0
for number in numbers_list:
if is_even(number): count += 1
return count
raw_numbers = input("Please enter more than one number: ")
numbers_list = [int(i) for i in raw_numbers.split()]
count = even_count(numbers_list)
print(count)
这也将照顾所有其他数字。
答案 3 :(得分:0)
因此,通过在函数CountEven范围之外调用CountEvent(d),您不使用递归,只需在定义函数后调用该函数即可。
尝试减少功能之外的代码量。
#Start by declaring your functions:
def isEven(n):
return n % 2 == 0
def countEven():
count = 0
string_of_numbers = input("Please enter numbers separated by spaces: ")
list_of_number_characters = string_of_numbers.split(' ')
for number in list_of_number_characters:
number_as_int = int(number)
if isEven(number_as_int) == True:
count = count + 1
print("There were " + str(count) + " even numbers found.")
countEven() #Call the function that runs your program
答案 4 :(得分:0)
可能的解决方案:
def is_even(n):
return not n % 2
def count_even(numbers)
return sum(map(is_even, numbers))
nums = input("Enter numbers separated by spaces: ")
nums = map(int, nums.split())
print(count_even(nums))