我正在测试一个打印功能,它看起来好像是在输入提示符,定义为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")
这是代码的输出:
你叫什么名字?无
在“无”之后,仍然允许用户输入,输出将被正确打印,没有“无”。有没有办法规避这个?
在此提示中,我想使用类型函数打印所有内容。
答案 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是内置函数,有时可能很有用。