Как убрать none в функции в python
Перейти к содержимому

Как убрать none в функции в python

  • автор:

Как убрать none?

Не очень ваш алгоритм похож на решето Эратосфена. Там же вроде не список используется, а выделяется битовый массив.

1 дек 2021 в 17:30

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

  • Замените print(prime_eratosthenes(5)) на prime_eratosthenes(5) .

Если вы не используете return , зачем использовать print(функция) ?!

Отслеживать
ответ дан 1 дек 2021 в 17:50
Çℏėτᶄắɤẵ Çℏėτɤᶉᶄắ Çℏėτᶄắɤẵ Çℏėτɤᶉᶄắ
3,149 2 2 золотых знака 11 11 серебряных знаков 36 36 бронзовых знаков

В данном случае внутри цикла вызывается вывод значений через print(i) . А в конце добавляется None — это возвращаемое значение ваше функцией. Она ничего не возвращает, поэтому её не нужно помещать в print() , её следует просто вызвать.

Следовательно, последнюю строчку следует заменить на простой вызов без print()

Отслеживать
ответ дан 1 дек 2021 в 17:52
2,107 1 1 золотой знак 9 9 серебряных знаков 14 14 бронзовых знаков
мой ответ с дополнениями))
1 дек 2021 в 17:54

Я увидел твой после того, как ответил. И дело в том, что мы решали одну и и ту же проблему, а не в том, чей это ответ. Мы просто оба дали верный ответ.

Как убрать вывод None после выполнения функции?

Всем привет. Изучаю Python и дошёл до функций, Решил написать мини игру «камень / ножницы / бумага».
Всё работает, но после выполнения одной из трёх функций (победа, поражение, ничья) в коде появляется None. Долго пробовал исправить, но пока не хватает знаний). Подскажите как можно это исправить? Искал в гугле так и не нашёл)

import random import time #Приветствие def hello(): hello = "Привет. Это игра камень / ножницы / бумага." print(hello) time.sleep(2) hello() #код на победу def wingame(): winning_comb = ["камень", "ножницы", "бумага"] comp1 = ["камень", "ножницы", "бумага"] comp2 = ["камень", "ножницы", "бумага"] comp3 = ["камень", "ножницы", "бумага"] while True: player = input( "Что выберете: камень / ножницы / бумага?\n" + "\nИгрок: ") time.sleep(2) if player not in ["камень", "ножницы", "бумага"]: print("Вы ничего не выбрали!") continue time.sleep(2) if player in winning_comb: if player == "камень": r_comp1 = comp1.remove("камень") r_comp2 = comp1.remove("бумага") print("Компьютер: " + random.choice(comp1)) print("Победа") break elif player == "ножницы": r_comp3 = comp2.remove("камень") r_comp4 = comp2.remove("ножницы") print("Компьютер: " + random.choice(comp2)) print("Победа") break elif player == "бумага": r_comp5 = comp3.remove("ножницы") r_comp6 = comp3.remove("бумага") print("Компьютер: " + random.choice(comp3)) print("Победа") break #код на поражение def losegame(): losing_comb = ["камень", "ножницы", "бумага"] comp1 = ["камень", "ножницы", "бумага"] comp2 = ["камень", "ножницы", "бумага"] comp3 = ["камень", "ножницы", "бумага"] while True: player = input( "Что выберете: камень / ножницы / бумага?\n" + "\nИгрок: ") time.sleep(2) if player not in ["камень", "ножницы", "бумага"]: print("Вы ничего не выбрали!") continue time.sleep(2) if player in losing_comb: if player == "камень": r_comp1 = comp1.remove("камень") r_comp1 = comp1.remove("ножницы") print("Компьютер: " + random.choice(comp1)) print("Поражение") break elif player == "ножницы": r_comp3 = comp2.remove("бумага") r_comp4 = comp2.remove("ножницы") print("Компьютер: " + random.choice(comp2)) print("Поражение") break elif player == "бумага": r_comp5 = comp3.remove("камень") r_comp6 = comp3.remove("бумага") print("Компьютер: " + random.choice(comp3)) print("Поражение") break #код на ничью def drawngame(): drawn_game = ["камень", "ножницы", "бумага"] comp1 = ["камень", "ножницы", "бумага"] comp2 = ["камень", "ножницы", "бумага"] comp3 = ["камень", "ножницы", "бумага"] while True: player = input( "Что выбирете: камень / ножницы / бумага?\n" + "\nИгрок: ") time.sleep(2) if player not in ["камень", "ножницы", "бумага"]: print("Вы ничего не выбрали!") time.sleep(2) continue if player in drawn_game: if player == "камень": r_comp1 = comp1.remove("ножницы") r_comp2 = comp1.remove("бумага") print("Компьютер: " + random.choice(comp1)) print("Ничья") break elif player == "ножницы": r_comp3 = comp2.remove("камень") r_comp4 = comp2.remove("бумага") print("Компьютер: " + random.choice(comp2)) print("Ничья") break elif player == "бумага": r_comp5 = comp3.remove("ножницы") r_comp6 = comp3.remove("камень") print("Компьютер: " + random.choice(comp3)) print("Ничья") break #рандомный выбор кода def funcs(): if True: f = [wingame, losegame, drawngame] rand_func = random.choice(f) rand_func() #выбор кода из функции funcs def gameon(): if True: print(funcs()) time.sleep(2) gameon() #повтор игры def regame(): import time replay = True while replay: que = input("\nБудем ещё играть да / нет?\n" + "\nИгрок: ") time.sleep(2) if que == "да": print("Продолжаем:\n") time.sleep(2) gameon() elif que == "нет": print("Конец.") time.sleep(2) print("Завершение программы.") time.sleep(2) break else: print("Вы ничего не выбрали. Попробуйте снова:") time.sleep(2) continue regame()

5ed3bccc16db4272521499.png

  • Вопрос задан более трёх лет назад
  • 6861 просмотр

None (null), или немного о типе NoneType

Python 3 логотип

Ключевое слово null обычно используется во многих языках программирования, таких как Java, C++, C# и JavaScript. Это значение, которое присваивается переменной.

Концепция ключевого слова null в том, что она дает переменной нейтральное или «нулевое» поведение.

А что же в Python?

Эквивалент null в Python: None

Он был разработан таким образом, по двум причинам:

Многие утверждают, что слово null несколько эзотерично. Это не наиболее дружелюбное слово для новичков. Кроме того, None относится именно к требуемой функциональности — это ничего, и не имеет поведения.

Присвоить переменной значение None очень просто:

Существует много случаев, когда следует использовать None.

Часто вы хотите выполнить действие, которое может работать либо завершиться неудачно. Используя None, вы можете проверить успех действия. Вот пример:

Python является объектно-ориентированным, и поэтому None - тоже объект, и имеет свой тип.

Проверка на None

Есть (формально) два способа проверить, на равенство None.

Один из способов — с помощью ключевого слова is.

Второй — с помощью == (но никогда не пользуйтесь вторым способом, и я попробую объяснить, почему).

Посмотрим на примеры:

Данный код выведет:
Отлично, так они делают одно и то же! Однако, не совсем. Для встроенных типов - да. Но с пользовательскими классами вы должны быть осторожны. Python предоставляет возможность переопределения операторов сравнения в пользовательских классах. Таким образом, вы можете сравнить классы, например, MyObject == MyOtherObject.
И получаем немного неожиданный результат:
Интересно, не правда ли? Вот поэтому нужно проверять на None с помощью ключевого слова is.

А ещё (для некоторых классов) вызов метода __eq__ может занимать много времени, и is будет просто-напросто быстрее.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Почему функция выводит none в Python?

Достаточно часто возникают вопросы: "почему моя функция ничего не возвращает?!", "почему из функции возвращается None?", "не могу понять откуда появляется None. ".

Для начала необходимо понимать и помнить, что любая функция в Python всегда что-то возвращает и если не используется оператор return для возврата значения (такие случаи бывают, но об этом позднее), то функция возвращает объект None . В случае если return используется, но после него ничего не указывается явно, то по умолчанию считается, что там стоит объект None .

# Не используем оператор return, поэтому результат не возвращается. def func(x): x * x print(func(10)) #=> None # Используем оператор return, но не задаем явное значение/используем некорректно def func(x): x * x return print(func(10)) #=> None # Корректно возвращаем результат с использованием оператора return def func(x): return x * x print(func(10)) #=> 100 

Порой бывает, что по ошибке указывается возврат вместе с функцией print() . Для информации функция print() в Python выводит переданные аргументы на стандартное устройство вывода (экран), но при этом не возвращает значений, т.е. можно считать, что возвращает None .

def func(x): return print(x * x) a = 5 b = func(a) # Присваиваем результат функции переменной b # Результат работы функции выводится на экран, благодаря print() в теле функции. #=> 25 # Но при этом данный результат не присваивается переменной b. print(b) #=> None 

Если дальше по коду проводятся манипуляции с переменной b, например сложение, то возникнет ошибка TypeError :

c = b + 1 # Пытаемся сложить None и 1 print(c) # => TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 

Возможен вариант, когда функция и не должна ничего возвращать, она производит какие-либо действия с объектами в глобальной зоне видимости и на этом ее функционал заканчивается. В таком случае return может и не использоваться, но необходимо помнить, что в этом случае функция возвращает None .

# Бесполезная функция необходимая только в качестве примера. def extend_list(list1, list2): list1.extend(list2) list1 = [1, 2] list2 = [3, 4] print(extend_list(list1, list2)) # => None # При этом поставленную задачу функция выполнила - изменила list1 print(list1) # => [1, 2, 3, 4] 

В примере выше использовался метод работы со списками extend() и необходимо понимать, что метод изменяет объект, к которому применен, а не возвращает результат изменения объекта.

list3 = extend_list(list1, list2) print(list3) # => None 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *