Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
449 views
in Technique[技术] by (71.8m points)

python - I want to print text slowly and also have it as a input, however at the end it says None

I have defined this function to print text slowly:

import sys
from time import sleep

def print_slow(s):
    for letter in s:
        sys.stdout.write(letter)
        sys.stdout.flush()
        time.sleep(0.075)

s_name = str(input(print_slow("

What is your name?   (EASTER EGG CODE: "blackbeard")
>>")))

The slow text works, however at the end of the input it outputs:

What is your name?   (EASTER EGG CODE: "blackbeard")
>>None

How do I get rid of the None?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

print_slow() returns None which you pass to the input() function. That function uses that argument as the prompt to show the user when asking for input:

>>> input(None)
None

None is the default return value of any function, unless you give it an explicit return value with a return statement, which your function lacks.

Call input() separately, you don't have to give it a prompt to print:

print_slow("

What is your name?   (EASTER EGG CODE: "blackbeard")
>>")
s_name = input()

The str() call is redundant, in Python 3, input() returns a string, always.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...