<p>您需要在<code>print</code>中使用<code>end</code>关键字,以避免将每条消息打印到新行。我建议您构建要在每次迭代中显示的字符串,然后显示它。我不喜欢<code>cycle</code>方法,因为您无法很容易地索引到<code>cycle</code>对象。相反,我们可以使用常规的字符串索引和模运算符来确保我们不会越界,并且仍然可以一遍遍地“循环”字符串。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>import time
def scrolling_text(msg, n_chars):
"""
Displays scrolling text of whatever 'msg' and ensures that only n_chars
are shown at a time. If n_chars is greater than the length of msg, then
the string displayed may "loop" around.
Inputs:
msg: str - The message to display
n_chars: int - The number of characters to display at a time
Outputs: Returns None, displays the scrolling text indefinitely.
"""
len_msg = len(msg)
counter = 0
while True:
displayed = ""
for char in range(n_chars):
displayed += msg[(counter+char)%len_msg]
print(f"\r{displayed}", end="")
time.sleep(0.05)
counter = (counter + 1) % len_msg
return
scrolling_text("LOADING", 25)
</code></pre>
<p><code>while True</code>循环的每次迭代都将构建要显示的字符串(在嵌套的<code>for loop</code>中),然后显示它。在while循环结束时,拥有<code>counter += 1</code>就足够了,但是对于一个长时间运行的脚本,您可能会得到<code>counter</code>不必要的大。通过让<code>counter = (counter + 1) % len_msg</code>,我们可以确保<code>counter</code>永远不会超过消息的长度。你知道吗</p>