{:^3.0f}是一种格式化输出的写法,用于将一个浮点数格式化为一个宽度为3个字符的字符串。
^表示居中对齐,即数字在字符串中居中显示。
3表示最终字符串的宽度为3个字符。如果数字的长度小于3个字符,那么在数字的两侧会填充空格。
.0f表示浮点数保留0位小数。在这种情况下,浮点数会被四舍五入,并转换为字符串。
举个例子,假设有一个浮点数 x = 2.5,那么将使用{:^3.0f}将其格式化后的结果为 " 3 ",格式化后的字符串长度为3个字符,浮点数四舍五入后变为整数3,并在字符串两侧填充空格以实现居中对齐。
如果在格式化字符串中不添加对齐标志^,默认情况下数字将会使用右对齐。
例如,假设有一个浮点数 x = 2.5,如果使用{:3.0f}格式化,那么结果将会是" 3"。在这种情况下,浮点数被四舍五入为整数3,并且由于宽度为3个字符,则在数字前面填充了两个空格,使得数字在字符串中右对齐显示。
另外,如果使用{:<3.0f}进行格式化,则数字将被左对齐显示。对于浮点数2.5来说,"{:<3.0f}".format(2.5)的结果将会是"3 ",浮点数被四舍五入为整数3,并在字符串的末尾填充了两个空格,使得数字在字符串中左对齐显示。
print("\r...", end="")中的\r是回车字符(Carriage Return),它的作用是将光标移动到当前行的开头。
print("\r...", end="")
的意思是,在输出之前先将光标移动到当前行的开头,并将光标停留在开头的位置。然后,打印...这个字符串,输出的结果将会覆盖当前行的内容。
这种用法常见于实时更新输出的场景,比如进度条、计时器等。通过不断使用\r移动光标到行首,可以实现定时更新输出内容的效果。使用end=""是为了禁止print()函数自动换行,确保多次输出结果覆盖在同一行显示。
以下是一个示例,模拟一个进度条的输出:
import time
total = 10
for i in range(total+1):
progress = i * 10
print("\rProgress: [{}{}] {}%".format("#"*i, "."*(total-i), progress), end="")
time.sleep(1)
在这个例子中,根据i的取值,计算当前的进度,并使用\r将光标移动到行首。然后,打印进度条的字符串,并将进度以百分比的形式显示出来。在每次输出之后,使用time.sleep(1)暂停1秒钟,模拟处理过程。最终的结果将会是一个实时更新的进度条输出在同一行上。