Python 仅使用布尔和逻辑比较将二进制转换为十进制

Python 仅使用布尔和逻辑比较将二进制转换为十进制,python,Python,我正在参加Python认证课程,并参加了两次实践考试,为即将安排的定时考试做准备。然而,与教授的互动有限,讨论板大多是学生。我有一个问题在两次练习考试中都出现过,所以我想它也会出现在真正的考试中,我不知道该如何解决它。在课堂上没有办法看到如何解决你弄错的编码问题,这是一个很大的失望,因为这对我以后有帮助。我知道有解决二进制/十进制转换的内置函数,但教授希望使用布尔逻辑和数值比较来实现这一点,因为我们仍处于课程的早期阶段。如果有人能帮助我“走”完答案的“为什么”,我将不胜感激。多谢各位 数字=11

我正在参加Python认证课程,并参加了两次实践考试,为即将安排的定时考试做准备。然而,与教授的互动有限,讨论板大多是学生。我有一个问题在两次练习考试中都出现过,所以我想它也会出现在真正的考试中,我不知道该如何解决它。在课堂上没有办法看到如何解决你弄错的编码问题,这是一个很大的失望,因为这对我以后有帮助。我知道有解决二进制/十进制转换的内置函数,但教授希望使用布尔逻辑和数值比较来实现这一点,因为我们仍处于课程的早期阶段。如果有人能帮助我“走”完答案的“为什么”,我将不胜感激。多谢各位

数字=1101

您可以修改上面的代码行,但不要移动它们!当你 提交您的代码,我们将更改这些行以指定不同的值 对变量进行修改

上面的数字代表一个二进制数。这将永远取决于 八位数字,所有八位数字将始终为1或0

字符串给出了数字的二进制表示形式。在二进制中, 该字符串的每个数字都对应于的幂 2.最左数字表示128,然后是64,然后是32,然后是16,然后是8,然后是4,然后是2,最后是最右边的1。 因此,要将数字转换为十进制数字,您需要(对于 示例)如果第一位数字为1,则在总数中加128;如果第一位数字为1,则在总数中加64 第二个数字是1,如果第三个数字是1,则为32,以此类推

例如,00001101是数字13:128s中有一个0 位、64位、32位、16位和2位。有1个 8s、4s和1s位置。8+4+1=13

请注意,尽管我们经常使用“如果”来描述这个问题,但是 完全可以进行布尔逻辑和数值比较

打印此转换产生的数字

number=“00001101”#在Python中,不允许前导零,因此请使用字符串
total=0#此变量将以十进制形式跟踪数字
index=len(number)-1#例如1100有4位数字,最大功率为3,2^3。
对于数字中的str#数字:#对于数字中的每个数字(作为字符串),
#总计+=int(str_位)*2**索引#将值(0或1)乘以2乘以索引幂
if int(str_数字):#if 0或if 1
总计+=2**指数#指数幂加2
指数-=1#降低指数
打印(总计)
请注意,如果使用注释行
total+=int(str\u digit)*2**index
,则行
if int(str\u digit):
实际上是多余的,但我将其包括在内,因为您的问题指定要测试布尔值

如果0:或如果1:,则该行与
相同,如果为False:
如果为True:
,则该行与
相同。
您需要的只是以下内容:

int(数字,基数=2)

很好地向OP解释了您的程序。感谢您的解释。我是一个非常直观的学习者,所有的理论行话让我困惑,除非我能同时看到它的实际行动。今天下班回家后,我将尝试一下这一点,并逐步完成代码行。这些问题中最大的问题是需要不断调整,因为您当前的结果会影响您以前的结果,然后所有这些都会联系在一起。没问题,希望这对您有所帮助,祝您学习Python好运!如果这个答案有帮助的话,如果你能将它标记为答案,我将不胜感激,谢谢。你在这里的努力是想弄清楚如何将二进制数转换成十进制数。这个概念在Wikipedia中有很好的描述。是的,我读过关于int()和bin()函数的书,这些函数可以方便地进行转换,但是由于我们没有介绍这些更简单的方法,我不愿意在这些问题中使用它们。谢谢你提供的信息