Blake Allen Ответов: 2

Как избавиться от None в Python


import sys
import socket
import time
ip=([(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])


x="........"

def print_word_slowly(word):
    for i in word:
        sys.stdout.write(i)
        sys.stdout.flush()
        time.sleep(0.2)
        
        
        
print "Loading...\n"
print print_word_slowly("obtaining IP address......."), "     \nIP Address obtained. IP Address is %s."%(ip)



Это распечатывает:
Loading...                                                                                                                               
                                                                                                                                         
obtaining IP address.......None                                                                                                          
IP Address obtained. IP Address is 172.17.29.xxx.

Как я могу избавиться от " Нет "после" получения IP-адреса..."?

Sergey Alexandrovich Kryukov

В Python никто не избавляется от вас. :-)
—СА

Blake Allen

ААА, как же никто не избавляется от меня!!?

Blake Allen

Хорошо, что я пытаюсь избавиться от него, я не хочу умирать

2 Ответов

Рейтинг:
2

Member 13865821

Вы должны удалить первую "печать" перед вашей функцией "print_word_slowly ()".
Попробуйте вызвать свою функцию напрямую, а не "печатать" ее.


Dave Kreskowiak

Ты опоздал всего на три года.

Рейтинг:
0

Richard MacCutchan

Проблема сводится к скрытому возвращаемому значению из функции Python. Если функция не включает в себя return оператор, затем он автоматически добавляет единицу и возвращает значение None, как описано в https://docs.python.org/3.3/reference/simple_stmts.html#index-21[^]. Так что ваш print оператор вызывает функцию, которая печатает сообщение, а затем получает возвращаемое значение None и печатает это, прежде чем печатать остальные его параметры.