到目前为止,这是我的代码:
import sys
import time
import random
from sys import *
from random import *
from time import sleep
def intro():
global lives
lives = 2
intro1() def intro1():
global lives
text1 = 'please enter (Yes or No)'
for x in text1:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print()
answer = input()
if 'yes' in answer:
lives = lives + 1
text1 = 'Thank you'
text2 = '+ 1 life'
text3 = lives
text4 = ' lives now.'
for x in text1:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print()
for x in text2:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print()
for x in range(text3):
print (x, end='')
sys.stdout.flush()
sleep(0.007)
for x in text4:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print()
intro1()
if 'no' in answer:
lives = lives - 1
if lives <= 0:
text1 = 'Out of lives. Game Over.'
for x in text1:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
end()
elif lives >= 0:
text1 = 'That\'s rude'
text2 = '- 1 life!'
text3 = lives
text4 = ' lives left'
for x in text1:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print ()
for x in text2:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print ()
for x in range(text3):
print (x, end='')
sys.stdout.flush()
sleep(0.007)
for x in text4:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
print()
intro1()
else:
intro1() def end():
text1 = 'done.'
for x in text1:
print (x, end='')
sys.stdout.flush()
sleep(0.007) intro()
我知道这看起来很长,令人困惑。程序运行正常我已经测试过了。我唯一的问题是它会打印所有数字。
例如:
生命+ 1 谢谢 0123现在生活。
或
太粗鲁了 - 1直播 01生命离开了。
我只想要打印最后一个数字,但是我希望它能用我的动画打印。非常感谢帮助。
答案 0 :(得分:1)
你应该改变:
for x in range(text3):
print (x, end='')
sys.stdout.flush()
sleep(0.007)
到
for x in str(text3):
print (x, end='')
sys.stdout.flush()
sleep(0.007)
注意差异,range(num)
将返回一个数字列表,而str(num)
会将其转换为一个字符串,您可以从中一次打印一个字符。
def type_output(text):
for x in str(text): # Use str to coerce the input to a string
print (x, end='')
sys.stdout.flush()
sleep(0.007)
这样你的代码就会变得更具可读性。
答案 1 :(得分:0)
将range(text3)
更改为str(text3)
。
range(text3)
会返回一个列表[0,1,2...text3-1]
。因此,当您希望循环遍历数字的字符串表示形式中的字符时,for循环将循环遍历整数列表。要解决此问题,只需将整数text3
更改为字符串并循环遍历字符,就像循环其他字符串一样。
答案 2 :(得分:0)
我猜你不喜欢你的代码正在打印,例如0123?您的代码所在的位置,例如:
for x in range(text3):
print (x, end='')
sys.stdout.flush()
sleep(0.007)
x in range(text3)
正在做的是先返回0,然后返回1,然后连续的数值最多比text3的整数值小1。在这里查看python文档中的内置范围函数:https://docs.python.org/3/library/functions.html
相反,您可能只需要一行代码:
print( text3, end='' )
这会将text3转换为字符串并打印出来,并且你不会得到前导零: - )
也是您的代码所在的地方。
for x in text2:
print (x, end='')
sys.stdout.flush()
sleep(0.007)
您正在做的是一次打印一个字符的text2内容。写起来会简单得多:
print( text2, end='' )
虽然你可能不需要end =''如果你接下来打电话给print()来开始新的一行。
我不知道你为什么会有那些同花顺和短暂的延迟 - 我认为不需要它们,从未见过以前使用过的。啊,我想这就是你所指的动画。你有没有考虑过一次定义一个函数来简化你的编码生活,它会进行动画打印,并在需要时简单地调用它?
def aniprint( stringtoprint ):
for c in stringtoprint:
print( c,end='' )
sys.stdout.flush()
sleep(0.007)
然后简单地称之为:
aniprint( text1 )
aniprint( text2 )
HTH 巴尼
答案 3 :(得分:0)
致电时
for x in range(text3):
它将遍历&#34;列表&#34; [0,1]当text3 = 2时,[0,1,2]当text3 = 3时 如果您只想要3,请尝试:
for x in [3]:
或类似的东西,但你可以简单地打印也没有迭代。