Внутри массива есть целые числа, каждое целое число имеет либо нечетное количество цифр, либо четное количество цифр.
Мой вывод: просматривает каждый элемент в массиве и печатает, если индивидуально, четное число или нечетное количество цифр -
1
1
Ожидаемый результат: получает общее количество четных целых чисел внутри массива -
2
exampl=[22,234,2463]
def findEven(f):
countz=0
LengthOfInt=len(str(f))
if (LengthOfInt%2)==0: #if it is even, add 1 to count
countz+=1
print(countz)
for i in exampl:
findEven(i)
Вы хотите передать массивы в функцию?
exampl=[22,234,2463]
def findEven(f):
return len(str(f))%2==0
count=0
for i in exampl:
if findEven(i)==True:
count+=1
print(count)
exampl=[22,234,2463]
def findEven(f):
count=0
for i in f:
if len(str(i))%2==0:
count+=1
return count
print(findEven(exampl))
Настраивать:
exampl=[22,234,2463]
Решение:
l = [x for x in exampl if x%2 == 0]
len(l)
Отвечать:
l
Out[23]: [22, 234]
len(l)
Out[24]: 2
Объяснение:
Мы берем все числа из списка exampl
в список l
, если они делятся на два, и тогда просто просмотр len()
из l
даст нам счет.
Самый питонический ответ из всех.
Спасибо @sotmot! Надеюсь, это поможет кому-то понять!
Здесь происходит то, что ваша переменная countz
находится внутри функции findEven
. Он устанавливается на 0
каждый раз, когда функция запускается. Кроме того, функция print
запускается каждый раз, когда у вас есть четное число.
Вместо этого вы хотите сделать функцию, которая возвращает логическое значение - независимо от того, имеет ли число четное количество цифр или нет. Затем вы можете подсчитать значения True
или False
.
example = [22, 234, 2463]
def is_even(value):
length = len(str(value))
return length % 2 == 0
count = 0
for i in example:
if is_even(i):
count += 1
print(count)
Просто используйте это:
sum(len(str(x))%2==0 for x in exampl)
при этом вывод печатается i раз? я поместил эту строку после оператора if
@VoidS Это просто дает вам результат, целое число 2.
Этот ответ остается максимально близким к коду, написанному в исходном сообщении.
Ваш цикл for
должен быть внутри findEven()
, чтобы вы могли найти все четные числа внутри этой одной функции.
Ваша функция findEven()
должна быть return countz
вместо print(countz)
, и эта строка должна иметь отступ на одну табуляцию меньше.
Следующий код очень близок к оригиналу, но он должен выполнять то, что вы хотите.
exampl = [22,234,2463]
def findEven(f):
countz = 0
for i in f:
LengthOfInt = len(str(i))
if LengthOfInt % 2 == 0: #if it is even, add 1 to count
countz += 1
return countz
print(findEven(exampl))
спасибо это точно. однако не могли бы вы объяснить обратный отсчет? мы можем оставить эту часть? или заменить на печать?
Цель функции — дать вам ответ. Если вы print
, то ответ просто отобразится на экране. Вместо этого, если вы return
, то ответ будет подставлен в то место, где вы вызвали функцию, что в целом гораздо полезнее. Поэтому, когда вы вызываете print(findEven(exampl))
, часть findEven(exampl)
заменяется на число countz
, которое вы return
ввели.
Какой у Вас вопрос?