Python 仅使用if-else语句将16位二进制数转换为十进制数
我需要编写一个程序,要求用户输入16位二进制数,然后将其转换为十进制数。我只允许使用if-else语句(没有for/while等,也没有函数) 我的问题不是转换本身 我的问题是,一旦用户输入的数字少于16位,就将其数字表示为16位数字。例如,如果用户输入“1111”,我需要将其转换为“0000 0000 1111” 我试过: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
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做这件事的好方法