简单地说就是对Python的一个简单的打字机效果。当它不在'def'中时,它工作正常。但是当它被定义时,没有定义错误行...出于什么原因?
import time
def typing():
global line
for letter in line:
time.sleep(0.03)
print(letter, end='')
def loop():
line ='I am gay'
typing()
print('')
line ='Are you also gay?'
typing()
print('')
loop()
loop()
答案 0 :(得分:2)
我会简化它以传递line
作为参数,使其更清洁。此外,它不起作用的原因是因为在功能完成运行之前输出实际上没有打印!见How to flush output of Python print?
以下是您的计划的工作版本:
import sys
import time
def typing(l):
for letter in l:
print(letter, end='')
sys.stdout.flush()
time.sleep(.14)
def loop():
line ='I am gay'
typing(line)
print('')
line ='Are you also gay?'
typing(line)
print('')
loop()
如果你正在使用python 3.3+,你可以在print上设置flush参数。
print(letter, end='', flush=True)
以避免使用sys
。
def typing(l):
for letter in l:
print(letter, end='', flush=True)
time.sleep(.03)
有趣的问题!
答案 1 :(得分:2)
这是因为您在错误的地方宣布global line
;
尝试在loop()
中声明它,因为它是你的主要功能(或最初称为功能):
import time
def typing():
for letter in line:
time.sleep(0.03)
print(letter, end='')
def loop():
global line
line ='I am gay'
typing()
print('')
line ='Are you also gay?'
typing()
print('')
loop()
loop()
DEMO https://repl.it/G7Zw
答案 2 :(得分:1)
这是因为当您使用.gitignore
时,您的代码应该全局定义global line
变量。
line