6

好的,所以我在 vpython 中做这个小小的倒计时功能,我现在做的方式是

import time
print "5"
time.sleep(1)
print "4"
time.sleep(1)
print "3"
time.sleep(1)
print "2"
time.sleep(1)
print "1"
time.sleep(1)
print "0"
time.sleep(1)
print "blastoff"

当然,这实际上不是我的代码,但它很好地展示了它。所以我想要做的不是打印它 5 4 3 2 1 Blastoff 我想要 54321 Blastoff 在同一行。我将如何等待一秒钟并在同一行上打印字符。请让我知道,这将是一个很大的帮助

4

3 回答 3

3

尝试这个:

import time

for i in range(5, 0, -1):
    print i, # print in the same line by adding a "," at the end
    time.sleep(1)
    if i == 1:
        print 'Blastoff!'

它会按预期工作:

5 4 3 2 1 Blastoff!

编辑

...或者如果您想打印所有没有空格的内容(问题中没有明确说明):

import time
from __future__ import print_function # not necessary if using Python 3.x

for i in range(5, 0, -1):
    print(i, end="")
    time.sleep(1)
    if i == 1:
        print(' Blastoff!')

以上将打印:

54321 Blastoff!
于 2013-11-27T21:19:57.490 回答
2

在 Python 3 中,应该传递end=""给 print 函数。

于 2013-11-28T15:13:22.893 回答
1

以下代码适用于 Python 2 和 Python 3。
但对于 Python 3,请参阅 Ramchandra Apte 的好答案。

from sys import stdout
from time import sleep

for i in xrange(5,0,-1):
    stdout.write(str(i))
    sleep(1)
stdout.write(' Blastoff')

str(i)是必要的,以便此代码在命令行窗口中执行。在 EDIT shell 窗口中,它可以被写入,stdout.write(i)'\b'信号不会将光标移回,它会出现一个正方形来代替它。

.

顺便说一下,试试下面的代码看看会发生什么。'\b'触发光标向后移动一个位置,替换前面的字符,因此每个字符都写在时间前面的那个位置。这仅适用于命令行窗口,不适用于 EDIT shell 窗口。

from sys import stdout
from time import sleep

for i in xrange(5,0,-1):
    stdout.write(str(i))
    sleep(1)
    stdout.write('\b')
stdout.write('Blastoff')


raw_input('\n\npause')

复杂化(仍然在命令行窗口中执行):

from sys import stdout
from time import sleep

tu = (' End in 24 seconds',
      ' It remains 20 seconds',
      ' Still only 16 seconds',
      ' Do you realize ? : 12 seconds left !',
      ' !!!! Hey ONLY 8 seconds !!')
for s in tu:
    stdout.write('*')
    sleep(1)
    stdout.write(s)
    sleep(2)
    stdout.write(len(s)*'\b' + len(s)*' ' + len(s)*'\b')
    sleep(1)

stdout.write(len(tu)*'\b' + len(tu)*'!' + ' ')
n = 4
for x in xrange(n,0,-1):
    stdout.write('\b!'+str(x))
    sleep(1)

stdout.write(len(tu)*'\b' + n*'\b' + '\b')
stdout.write('       # !! BLASTOUT !! #\n')
sleep(0.8)
stdout.write('      ## !! BLASTOUT !! ##\n')
sleep(0.8)
stdout.write('     ### !! BLASTOUT !! ##\n')
sleep(0.8)
stdout.write('    #### !! BLASTOUT !! ####\n')
sleep(3)
于 2013-11-28T13:09:20.970 回答