Python - 需要来自打印功能的输入

时间:2017-01-13 06:50:56

标签: python python-2.7

我正在测试一个打印功能,它看起来好像是在输入提示符,定义为type()

我想使用type函数存储原始输入:

from time import sleep
import sys
from random import uniform

def type(s):
    for c in s:
    sys.stdout.write('%s' % c)
    sys.stdout.flush()
    sleep(uniform(0, 0.3))

name = raw_input(type("What is your name? "))
type("Hello " + name +"\n")

这是代码的输出:

  

你叫什么名字?无

在“无”之后,仍然允许用户输入,输出将被正确打印,没有“无”。有没有办法规避这个?

在此提示中,我想使用类型函数打印所有内容。

3 个答案:

答案 0 :(得分:5)

raw_input将你传给它的arg变成一个字符串&用它作为提示。您正在传递raw_input类型函数的返回值,并且该函数返回默认值None,这就是为什么"无"得到印刷。所以,只需在调用raw_input之前使用您的函数,并在没有arg的情况下调用raw_input

顺便说一句,你应该使用type作为变量或函数名称,因为它是内置函数的名称。

from time import sleep
import sys
from random import uniform

def typer(s):
    for c in s:
        sys.stdout.write('%s' % c)
        sys.stdout.flush()
        sleep(uniform(0, 0.3))

typer("What is your name? ")
name = raw_input()
typer("Hello " + name + "\n")

答案 1 :(得分:1)

type("What is your name? ")
name = raw_input()
type("Hello " + name +"\n")

你去吧。 Python中没有定义return语句的任何函数默认返回None - 它出现在你的提示符上。

答案 2 :(得分:0)

函数的默认返回类型为None。因此,正在发生的事情是你的类型函数在函数的末尾返回一个None,然后raw_input放入stdout流。只需让type函数返回一个空字符串就可以解决问题:

    return ''

您可能希望使用其他函数名称,然后键入,因为type是内置函数,有时可能很有用。