整数 111 转二进制 111(十进制 7)

int 111 to binary 111(decimal 7)

问题:以数字为例,37 是(二进制 100101)。 计算二进制 1 并创建一个类似 (111) 的二进制并打印该二进制的十进制数 (7)

num = bin(int(input()))
st = str(num)
count=0

for i in st:
    if i == "1":
        count +=1

del st
vt = ""
for i in range(count):
    vt = vt + "1"
vt = int(vt)
print(vt)

我是新手,卡在这里。

获得所需的二进制文件后尝试此操作。

def binaryToDecimal(binary): 
  
binary1 = binary 
decimal, i, n = 0, 0, 0
while(binary != 0): 
    dec = binary % 10
    decimal = decimal + dec * pow(2, i) 
    binary = binary//10
    i += 1
print(decimal)

我不推荐你的方法,但要指出你哪里出错了:

num = bin(int(input()))
st = str(num)
count = 0

for i in st:
    if i == "1":
        count += 1

del st
# start the string representation of the binary value correctly
vt = "0b"
for i in range(count):
    vt = vt + "1"
# tell the `int()` function that it should consider the string as a binary number (base 2)
vt = int(vt, 2)
print(vt)

请注意,下面的代码与您的完全相同,但更加简洁:

ones = bin(int(input())).count('1')
vt = int('0b' + '1' * ones, 2)
print(vt)

它在字符串上使用标准方法 count() 来获取 ones 中的个数,并使用 Python 重复字符串多次的能力乘法运算符 *.

一行:

print(int(format(int(input()), 'b').count('1') * '1', 2))

让我们从里到外分解它:

format(int(input()), 'b')

这个built-in function takes an integer number from the input, and returns a formatted string according to the Format Specification Mini-Language。在这种情况下,参数 'b' 为我们提供了二进制格式。

那么,我们有

.count('1')

这个str methodreturns'1'format函数返回的字符串中出现的总次数

在Python中,您可以将一个字符串乘以一个数字,得到相同的字符串重复连接n次:

x = 'a' * 3
print(x)  # prints 'aaa'

因此,如果我们将 count 方法返回的数字与字符串 '1' 相乘,我们将得到一个仅包含 1 的字符串,并且与原始字符串的数量相同输入二进制数。现在,我们可以通过将其转换为基数 2 来用二进制表示该数字,如下所示:

int(number_string, 2)

所以,我们有

int(format(int(input()), 'b').count('1') * '1', 2)

最后,打印整个内容:

print(int(format(int(input()), 'b').count('1') * '1', 2))