Python正在打印所有内容,我只希望它打印最后一个数字

时间:2015-11-25 17:02:02

标签: python

到目前为止,这是我的代码:

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生命离开了。

我只想要打印最后一个数字,但是我希望它能用我的动画打印。非常感谢帮助。

4 个答案:

答案 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)会将其转换为一个字符串,您可以从中一次打印一个字符。

BTW ......遵守DRY(不要重复自己)的原则,你应该考虑将打印因素分解为单一功能,

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]: 

或类似的东西,但你可以简单地打印也没有迭代。