【问题标题】:Converting 16 bit binary number to decimal using only if-else statements仅使用 if-else 语句将 16 位二进制数转换为十进制数
【发布时间】:2013-09-06 09:09:24
【问题描述】:

我需要编写一个程序,要求用户输入一个 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 语句(和赋值语句)。

谢谢。 尤尔

【问题讨论】:

  • C=A or B or is logical or not bitwise, and Logical and, or Python中的运算符返回操作数的值而不是布尔值True, False。
  • 您是否在寻找| 和&?并不是说它们是必需的,因为您已经使用int(),您需要做的就是添加, 2).. :-P
  • 是的,我在找 | .
  • 为什么要添加 ,2) ?它有什么作用?

标签: python if-statement numbers decimal


【解决方案1】:

注意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

【讨论】:

  • 对不起,我的意思是没有真正将二进制转换为十进制的函数。
  • 使用 if 的好方法
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 2010-12-08
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
相关资源
最近更新 更多