นี่เป็นเธรดที่เก่ามาก แต่นี่เป็นคำตอบและตัวอย่างโค้ดอย่างละเอียด
\rคือการแสดงสตริงของCarriage Returnจากชุดอักขระ ASCII มันเป็นเช่นเดียวกับฐานแปด015[ chr(0o15)] หรือ hexidecimal 0d[ chr(0x0d)] หรือทศนิยม13[ chr(13)] ดูman asciiการอ่านที่น่าเบื่อ มัน ( \r) เป็นการนำเสนอแบบพกพาที่สวยและง่ายสำหรับผู้อ่าน มันง่ายมากที่จะเคลื่อนย้ายแคร่บนเครื่องพิมพ์ดีดไปจนถึงจุดเริ่มต้นโดยไม่ต้องเลื่อนกระดาษ เป็นCRส่วนCRLFที่หมายถึงCarriage Return และ Line Feedกลับบินและสายฟีด
print()เป็นฟังก์ชั่นใน Python 3 ใน Python 2 (เวอร์ชันใด ๆ ที่คุณสนใจจะใช้) printสามารถบังคับเข้าฟังก์ชั่นได้โดยการนำเข้าคำจำกัดความของมันจาก__future__โมดูล ประโยชน์ของprintฟังก์ชั่นคือคุณสามารถระบุสิ่งที่จะพิมพ์ในตอนท้ายเอาชนะพฤติกรรมเริ่มต้นของ\nการพิมพ์ขึ้นบรรทัดใหม่ในตอนท้ายของทุกprint()สาย
sys.stdout.flushบอก Python ให้ล้างเอาต์พุตของเอาต์พุตมาตรฐานซึ่งเป็นตำแหน่งที่คุณส่งเอาต์พุตด้วยprint()เว้นแต่คุณจะระบุเป็นอย่างอื่น คุณยังสามารถรับลักษณะการทำงานเดียวกันได้โดยการรันpython -uหรือการตั้งค่าตัวแปรสภาพแวดล้อมPYTHONUNBUFFERED=1ดังนั้นการข้ามimport sysและการsys.stdout.flush()โทร จำนวนเงินที่คุณได้รับจากการทำเช่นนั้นเกือบเป็นศูนย์และไม่ใช่เรื่องง่ายที่จะทำการดีบั๊กถ้าคุณลืมว่าคุณต้องทำตามขั้นตอนนั้นก่อนที่ใบสมัครของคุณจะทำงานอย่างถูกต้อง
และเป็นตัวอย่าง โปรดทราบว่าสิ่งนี้ทำงานได้อย่างสมบูรณ์ใน Python 2 หรือ 3
from __future__ import print_function
import sys
import time
ANS = 42
FACTORS = {n for n in range(1, ANS + 1) if ANS % n == 0}
for i in range(1, ANS + 1):
if i in FACTORS:
print('\r{0:d}'.format(i), end='')
sys.stdout.flush()
time.sleep(ANS / 100.0)
else:
print()