นี่เป็นเธรดที่เก่ามาก แต่นี่เป็นคำตอบและตัวอย่างโค้ดอย่างละเอียด
\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()