Python 仅使用if-else语句将16位二进制数转换为十进制数

Python 仅使用if-else语句将16位二进制数转换为十进制数,python,if-statement,numbers,decimal,Python,If Statement,Numbers,Decimal,我需要编写一个程序,要求用户输入16位二进制数,然后将其转换为十进制数。我只允许使用if-else语句(没有for/while等,也没有函数) 我的问题不是转换本身 我的问题是,一旦用户输入的数字少于16位,就将其数字表示为16位数字。例如,如果用户输入“1111”,我需要将其转换为“0000 0000 1111” 我试过: A=int(input("Please enter a 16-bit decimal number:")) B=0000000000000000 C

我需要编写一个程序,要求用户输入16位二进制数,然后将其转换为十进制数。我只允许使用if-else语句(没有for/while等,也没有函数)

我的问题不是转换本身

我的问题是,一旦用户输入的数字少于16位,就将其数字表示为16位数字。例如,如果用户输入“1111”,我需要将其转换为“0000 0000 1111”

我试过:

    A=int(input("Please enter a 16-bit decimal number:"))
    B=0000000000000000
    C=A or B
    print (C)
这给了我A中的原始数字(我真的不明白为什么)

我还试图将用户的输入视为字符串,但据我所知,Python开始从左到右对字符进行编号,因此在a=1111的情况下,我只有[0]-a[3] 所以我有点受不了了

我知道我可以使用一些函数,但是,作业是只使用我们在课堂上学习的主题,基本上只有if-else语句(和作业语句)

多谢各位。 Yul

请注意,
int()
input()
都是函数

还要注意的是,
int()
完全按照您所说的在没有函数的情况下应该执行的操作,即它将字符串转换为数字

这很令人困惑

假设您有一个字符串
s
,其中正好有16个二进制数字,您可以将其转换为如下所示的整数:

num = 0
if s[0] == '1':
  num += 1
if s[1] == '1':
  num += 2
if s[2] == '1':
  num += 4
以此类推,直到
s[15]
,这将
32768
添加到
num

通过这样做,您可以“挤出”ifs的

num = 0
num += (s[0] == '1') * 1
num += (s[1] == '1') * 2
num += (s[2] == '1') * 4
...
num += (s[15] == '1') * 32768
请注意,
int()
input()
都是函数

还要注意的是,
int()
完全按照您所说的在没有函数的情况下应该执行的操作,即它将字符串转换为数字

这很令人困惑

假设您有一个字符串
s
,其中正好有16个二进制数字,您可以将其转换为如下所示的整数:

num = 0
if s[0] == '1':
  num += 1
if s[1] == '1':
  num += 2
if s[2] == '1':
  num += 4
以此类推,直到
s[15]
,这将
32768
添加到
num

通过这样做,您可以“挤出”if
s的

num = 0
num += (s[0] == '1') * 1
num += (s[1] == '1') * 2
num += (s[2] == '1') * 4
...
num += (s[15] == '1') * 32768

C=A或B
或是逻辑的
不是按位的,并且逻辑的
运算符在Python中返回操作数的值,而不是布尔值
True
False
。您是否在寻找
&
?并不是说需要它们,因为您已经使用了
int()
,只需添加
,2)
:-派斯,我在找|。我为什么要加上,2)?它是做什么的?
C=A或B
或者是逻辑的
或者
不是按位的,并且是逻辑的
或者
运算符在Python中返回操作数的值,而不是布尔值
真的
假的
。您是否在寻找
&
?并不是说需要它们,因为您已经使用了
int()
,只需添加
,2)
:-派斯,我在找|。我为什么要加上,2)?它是做什么的?对不起,我的意思是没有真正把二进制转换成十进制的函数。用if'sSorry做这件事的好方法,我的意思是没有真正把二进制转换成十进制的函数。用if's做这件事的好方法