整数 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))
问题:以数字为例,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))