为了将一些数字打印为其二进制格式,我们只需使用.format()
方法,像这样:
# Binary
for i in range(5+1):
print("{0:>2} in binary is {0:>08b}".format(i))
Output:
0 in binary is 00000000
1 in binary is 00000001
2 in binary is 00000010
3 in binary is 00000011
4 in binary is 00000100
5 in binary is 00000101
以其他格式(十六进制和八进制)打印的情况类似,只需将后面的大括号替换为我们想要打印的数字。但有没有办法使用新的f""
字符串来替换.format()
命令?我知道这可能看起来微不足道,但我在使用新功能时遇到了这个问题,此外f""
使代码更短、更具可读性。
for i in range(5+1):
print(f'{0:>2} in binary is {0:>08b}')
# This prints out just 0s
您的 f 字符串中应该包含表达式而不是索引:
f'{i:>2} in binary is {i:>08b}'
任何你曾经有过的地方0
原始格式字符串中的内容应替换为实际的第一个参数:在本例中i
.
Caveat
f 字符串中的表达式被计算两次,但参数format
当您通过索引访问它时仅评估一次。这对于更复杂的表达式很重要。例如:
"{0:>2} in binary is {0:>08b}".format(i + 10)
这里补充一下i + 10
只发生一次。另一方面
f"{i+10:>2} in binary is {i+10:>08b}"
进行两次加法,因为它相当于
"{:>2} in binary is {:>08b}".format(i + 10, i + 10)
Or
"{0:>2} in binary is {1:>08b}".format(i + 10, i + 10)
解决方法是预先计算多次出现在 f 字符串中的表达式的结果:
j = i + 10
f"{j:>2} in binary is {j:>08b}"
Now j
被评估了多次,但这只是一个简单的参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)