0

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

我的问题不在于转换本身。

我的问题是将用户的号码表示为 16 位数字,一旦他输入了一个少于 16 位的数字。例如,如果用户输入“1111”,我需要将其转换为“0000 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 的情况下,我只有 A[0]-A[3] 所以我有点坚持下去。

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

谢谢你。尤尔

4

1 回答 1

3

请注意,两者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]可以添加32768num.

if您可以像这样“挤出” s:

num = 0
num += (s[0] == '1') * 1
num += (s[1] == '1') * 2
num += (s[2] == '1') * 4
...
num += (s[15] == '1') * 32768
于 2013-09-06T09:11:59.390 回答