gpt4 book ai didi

python - 我需要帮助在不使用 bin 的情况下将代码中的二进制转换为十进制

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:51 26 4
gpt4 key购买 nike

我必须在我的编码课上制作一个菜单。用户可以在菜单上选择一个数字,然后菜单可以关闭。除了二进制到十进制,我什么都记下来了。到目前为止,我的代码如下所示。

base10 是我正在研究的。我只是不知道获取它的代码,因为我不得不缺课,而他在类里面复习了它。

#Name: Menu
#Input:
#Output:
#Description:
def menu():
while(True):
print("Welcome The Menu")
print("\t 1. Convert Binary to Decimal")
print("\t 2. Convert Decimal to Binary")
opt=input("Input a number or 9 to Quit. ")
if(int(opt)==1):
base10()
elif(int(opt)==2):
base2()
elif(int(opt)=="9"):
break;
else:
print("Invalid Input")

#Name: Reverse
#Input: String s
#Output: String r
#Description: This function takes a string as input and reverses that string
#returning it as output.

def reverse():
r=""
for i in s:
r=i + r
return r

#Name: Base 10
#Input:
#Output:
#Description

def base10():
num=int(input("Enter a binary number:"))

sum=0
for i in range(0,len()):
sum+=(int([i])*(2**i))
print(sum)


#Name: Base 2
#Input: num
#Output: b
#Description: It takes the number from the user and divides it by two. B is the binary number and num is the decimal number.

def base2():
b=""
num=int(input("Enter a decimal number: "))
while(num != 0):
b=str(num % 2) + b
num=num // 2
int(num == 10)
print(b)

menu()

预期的结果是我在菜单中输入一个数字以选择二进制到十进制或十进制到二进制。然后我应该能够输入 base2base10 数字并得到相反的结果。 (我不能使用 bin!)

最佳答案

(正)整数的二进制表示可以看作是加权和。

考虑 1011 = 11。

1011abcdIn other words: a = c = d = 1           and: b = 0

Can be represented as a weighted sum:

8*a + 4*b + 2*c + 1*d

By plugging in a,b,c,d as defined you'll get 11, but another way to look at the weighted sum is:

(2**3)*a  +  (2**2)*b  +  (2**1)*c  +  (2**0)*d

 (2**3)*a  +  (2**2)*b  +  (2**1)*c  +  (2**0)*d
└ exponent └ exponent └ exponent └ exponent

在这里,2 以递减指数乘以二进制数字。

换句话说:

(2**3)*1 + (2**2)*0 + (2**1)*1 + (2**0)*1 == 11

先反转字符串,然后指数从零开始向上计数可能更容易:

(2**0)*1 + (2**1)*1 + (2**2)*0 + (2**3)*1 == 11

在不透露太多的情况下,假设您在变量 binstr 中有二进制字符串,我会看一下输出:

print(list(enumerate(reversed(binstr))))

for (i, x) in enumerate(reversed(binstr)):
print(i, x)

一种方式最终可能看起来像:

intval = sum(<something> for (i,x) in enumerate(reversed(binstr)))

但这不是唯一的方法。还有其他方法,包括使用 reduce(或类似方法)。

当然,总是有 int(binstr, 2) 但我猜这也是不允许的。

关于python - 我需要帮助在不使用 bin 的情况下将代码中的二进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com