Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

python

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("\n\nWhat is your name?   (EASTER EGG CODE: \"blackbeard\")\n>>")))

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?

like image 472
Ali Sadiq Avatar asked Mar 13 '23 21:03

Ali Sadiq


1 Answers

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("\n\nWhat is your name?   (EASTER EGG CODE: \"blackbeard\")\n>>")
s_name = input()

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

like image 172
Martijn Pieters Avatar answered Mar 15 '23 11:03

Martijn Pieters