Создайте функцию, которая принимает число в качестве входных данных и возвращает значение True, если сумма его цифр имеет ту же четность, что и все число. В противном случае вернуть False.
например
parity_function(243)
--> True
243
странно, и 9 (2 + 4 + 3)
тоже
def par_analy(num):
x = str(num)
sum = int(x[0])
if len(x)!=1:
for i in range(1,len(x)):
sum += int(x[i])
par = num % 2
sumi = sum % 2
if par and sumi == 0:
return True
elif par and sumi !=0:
return True
else:
return False
else:
return True
print(par_analy(13))
Вывод True
, хотя и par
, и sumi
не равны 0
или равны 0
Поскольку все, кажется, пытаются написать более короткий код в ответах, я хотел бы представить свое решение для тела функции. Одна строка кода: return sum(map(int, str(num))) % 2 == num % 2
.
Мы можем перейти к другой сокращенной форме, заметив, что «четность числа = четность суммы цифр» верно тогда и только тогда, когда сумма всех цифр, за исключением последней, четна. Итак, решение: return not sum(map(int, str(num)[:-1])) % 2
Я думаю, что это должно быть:
def par_analy(num):
x = str(num)
sum = int(x[0])
if len(x)!=1:
for i in range(1,len(x)):
sum += int(x[i])
par = num % 2
sumi = sum % 2
if par == 0 and sumi == 0:
return True
elif par != 0 and sumi !=0:
return True
else:
return False
else:
return True
print(par_analy(13))
Когда вы пишете что-то вроде if par and sumi == 0
, вы говорите, что par
имеет истинное значение, а суми равно нулю.
Вот функция Python, которая принимает число в качестве входных данных и возвращает True, если сумма его цифр имеет ту же четность, что и все число, и False в противном случае:
def parity_function(num):
digit_sum = sum(int(digit) for digit in str(num))
return num % 2 == digit_sum % 2
Вот как это работает:
Обратите внимание, что эта функция предполагает, что вход является положительным целым числом. Если вам нужно обрабатывать отрицательные целые числа или другие типы ввода, вам может потребоваться добавить дополнительный код проверки ошибок.
def par_analy(num):
x = str(num)
total_sum = 0
for i in range(len(x)):
total_sum += int(x[i])
parity = num % 2
sum_parity = total_sum % 2
return parity == sum_parity
Элиф пар и суми !=0: вернуть True
Разве вы не должны возвращать False в этом случае?
def parity_function(n):
# Convert the number to a string to extract its digits
digit_str = str(n)
# Calculate the sum of the digits
digit_sum = sum(int(d) for d in digit_str)
# Check if both the number and the sum of its digits have the same
parity
return (n % 2 == 0) == (digit_sum % 2 == 0)
# Test the function
print(parity_function(243)) # True
Эта функция сначала преобразует входное число n в строку, чтобы извлечь из нее цифры. Затем он вычисляет сумму этих цифр, используя выражение генератора внутри функции sum(). Наконец, она проверяет, имеют ли исходное число и сумма цифр одинаковую четность (четную или нечетную), сравнивая их остатки при делении на 2. Если остатки одинаковы, функция возвращает True, в противном случае - False.
if par and sumi == 0:
означаетif (par) and (sumi == 0):
. Возможно, вы хотите что-то вродеif par==0 and sumi==0:
?