Как убрать 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()

- Вопрос задан более трёх лет назад
- 6861 просмотр
None (null), или немного о типе NoneType

Ключевое слово 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