Я получаю вывод True, хотя он должен быть False

Создайте функцию, которая принимает число в качестве входных данных и возвращает значение 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

Я получаю вывод True, хотя он должен быть False

if par and sumi == 0: означает if (par) and (sumi == 0):. Возможно, вы хотите что-то вроде if par==0 and sumi==0:?
slothrop 19.04.2023 22:19

Поскольку все, кажется, пытаются написать более короткий код в ответах, я хотел бы представить свое решение для тела функции. Одна строка кода: return sum(map(int, str(num))) % 2 == num % 2.

Matthias 19.04.2023 23:38

Мы можем перейти к другой сокращенной форме, заметив, что «четность числа = четность суммы цифр» верно тогда и только тогда, когда сумма всех цифр, за исключением последней, четна. Итак, решение: return not sum(map(int, str(num)[:-1])) % 2

slothrop 20.04.2023 09:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
91
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я думаю, что это должно быть:

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

Вот как это работает:

  • Вызов str(num) преобразует введенное число в строку, чтобы мы могли перебирать его цифры с помощью цикла.
  • Преобразование int(digit) внутри цикла преобразует каждую цифру из строки в целое число.
  • Функция sum() суммирует все цифры.
  • Выражение num % 2 == digit_sum % 2 сравнивает четность (четность или нечетность) входного числа num с четностью суммы цифр digit_sum и возвращает True, если они совпадают, и False, если они разные.

Обратите внимание, что эта функция предполагает, что вход является положительным целым числом. Если вам нужно обрабатывать отрицательные целые числа или другие типы ввода, вам может потребоваться добавить дополнительный код проверки ошибок.

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.

Другие вопросы по теме