首页 > 解决方案 > 你如何逃避这个while循环?

问题描述

我目前在 10 年级(9 年级),我正在为学校制作一个程序,在 python 上将二进制数转换为十进制数,反之亦然。我的编码知识不是很好,所以程序可能没有那么高效,所以请多多包涵。

下面的代码检查用户输入是否只包含 1 和 0,并且它不超过 8 位的最大值。当我运行它并输入一个无效的数字时,它可以正常工作并循环,但是当我输入一个有效的数字时,它会继续返回输入命令并要求我输入一些内容而不是转义循环并移动到下一件事. 请帮忙!

max_8bits = 1
only_bin = 1
while max_8bits > 0 or only_bin > 0:

    b2d_num = input("Enter a binary number:")

    for i in range(len(b2d_num)):
        if b2d_num[i] == "0" or b2d_num[i] == "1":
            if i == len(b2d_num):
                only_bin -= 1
        else:
            print("Only enter a binary number! (0's and 1's)")
            break

    if len(b2d_num) > 8:
        print("Only enter up to 8 bits!")
    elif len(b2d_num) <= 8:
        max_8bits -= 1

标签: pythonbinary

解决方案


条件i == len(b2d_num)是 neverTrue因为最后一个循环迭代是 with i == len(b2d_num) - 1

例如

>>> for i in range(10):
       pass

>>> print(i)
9

推荐阅读