python - 你如何逃避这个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
解决方案
条件i == len(b2d_num)
是 neverTrue
因为最后一个循环迭代是 with i == len(b2d_num) - 1
。
例如
>>> for i in range(10):
pass
>>> print(i)
9
推荐阅读
- python - 使用嵌套列表索引列表
- mongodb - Meteor Mongo 更新($set 对象;$push 数组)
- html - 在中心 CSS 中对齐单个列表项
- c++ - 查找 .txt 文件中的项目数
- postgresql - 如何以其他用户身份连接到数据库?
- angular - Angular `ng update @angular/...` 返回 `401 Unauthorized`
- c# - Akka.net .net 标准到 .net 核心思想 接待员
- amazon-web-services - aws 私有子网访问
- vb.net - 表单之间的启动画面
- python - 没有名为“glob2”的模块