Python 需要帮助理解代码吗
有人能解释一下这个代码吗。我不明白Python 需要帮助理解代码吗,python,python-3.x,Python,Python 3.x,有人能解释一下这个代码吗。我不明白n在这里做什么?我们已经将N=int(input())作为输入,那么为什么N=len(bin(N))-2?我想不出来 N = int(input()) n = len(bin(N))-2 for i in range(1,N+1): print(str(i).rjust(n) + " " + format(i,'o').rjust(n) + " " + format(i,'X').rjust(n) + " " + format(i,'b').rjust(
n
在这里做什么?我们已经将N=int(input())
作为输入,那么为什么N=len(bin(N))-2
?我想不出来
N = int(input())
n = len(bin(N))-2
for i in range(1,N+1):
print(str(i).rjust(n) + " " + format(i,'o').rjust(n) + " " + format(i,'X').rjust(n) + " " + format(i,'b').rjust(n))
n
统计数字中的位数n
bin()
生成二进制表示形式(零和一),如带有0b
前缀的字符串:
>>> bin(42)
'0b101010'
因此len(bin(n))
采用该输出字符串的长度减去2作为前缀
见:
将整数转换为前缀为“0b”的二进制字符串
长度用于设置列的宽度(via,它在字符串前面添加空格以创建n
字符宽的输出)。了解最宽的二进制表示法需要多少字符在这里很有帮助
但是,可以通过以下方式直接从号码中获取相同的信息:
其他列的数字也过大。您可以计算每列的最大宽度,并使用str.format()
或f字符串进行格式化:
from math import log10
N = int(input())
decwidth = int(log10(N) + 1)
binwidth = N.bit_length()
hexwidth = (binwidth - 1) // 4 + 1
octwidth = (binwidth - 1) // 3 + 1
for i in range(1, N + 1):
print(f'{i:>{decwidth}d} {i:>{octwidth}o} {i:>{hexwidth}X} {i:>{binwidth}b}')
n
统计数字中的位数n
bin()
生成二进制表示形式(零和一),如带有0b
前缀的字符串:
>>> bin(42)
'0b101010'
因此len(bin(n))
采用该输出字符串的长度减去2作为前缀
见:
将整数转换为前缀为“0b”的二进制字符串
长度用于设置列的宽度(via,它在字符串前面添加空格以创建n
字符宽的输出)。了解最宽的二进制表示法需要多少字符在这里很有帮助
但是,可以通过以下方式直接从号码中获取相同的信息:
其他列的数字也过大。您可以计算每列的最大宽度,并使用str.format()
或f字符串进行格式化:
from math import log10
N = int(input())
decwidth = int(log10(N) + 1)
binwidth = N.bit_length()
hexwidth = (binwidth - 1) // 4 + 1
octwidth = (binwidth - 1) // 3 + 1
for i in range(1, N + 1):
print(f'{i:>{decwidth}d} {i:>{octwidth}o} {i:>{hexwidth}X} {i:>{binwidth}b}')