我在编程时遇到问题。我试图在print()中使用sleep()。输入是:
print(f'New year in 5{sleep(1)}.4{sleep(1)}.3{sleep(1)}.2{sleep(1)}.1{sleep(1)}. NEW YEAR!')
输出是:
New year in 5None.4None.3None.2None.1None. NEW YEAR!
延迟发生在屏幕上打印之前。 我正在使用最新版本的python。 我会等待答案。
答案 0 :(得分:0)
可以使用end
属性调用打印。默认值是换行符,但您可以选择只放置一个空格。
print('New year in 5', end=' ')
所以你打印的下一件事就是在同一条线上。
这允许您在打印之外移动睡眠功能。
print('New year in 5', end=' ')
sleep(1)
print('4', end=' ')
sleep(1)
print('3', end=' ')
# ...
答案 1 :(得分:0)
您的代码无法正常工作,因为传递给打印功能的所有对象都可以一次性解析和打印。
因此,当您通过多个sleep()时,它们都被编译并且有一个初始等待,最后您的消息被打印出来..
结果中的None是time.sleep()函数的返回
解决方案: 实现倒计时功能 确保每次都打印到同一行,只更改时间。这是通过使用' \ r'来实现的。并结束=""在python3打印功能
但是有一个小问题,你的时间中的te数字减少一个,可以通过用所有空格替换现有的打印行来处理
#!/usr/bin/python3
import time
def countdown(start):
while start > 0:
msg = "New year starts in: {} seconds".format(start)
print(msg, '\r', end="")
time.sleep(1)
# below two lines is to replace the printed line with white spaces
# this is required for the case when the number of digits in timer reduces by 1 i.e. from
# 10 secs to 9 secs, if we dont do this there will be extra prints at the end of the printed line
# as the number of chars in the newly printed line is less than the previous
remove_msg = ' ' * len(msg)
print( remove_msg, '\r', end="")
# decrement timer by 1 second
start -= 1
print("Happy New Year!!")
return
if __name__ == '__main__':
countdown(10)