python - 为什么我的while循环只运行一次?
问题描述
我想让这个循环运行不止一次,但它只会运行一次然后停止。我究竟做错了什么?
a = 0
Let = input("Enter a sentence to decrypt : ")
Num = 0
b = 0
while b < 26 :
Num = Num + 1
num = int(Num)
while a < len(Let) :
if ord(Let[a]) > 96 and ord(Let[a]) < 123 and ord(Let[a]) + Num > 96 and ord(Let[a]) + Num < 123 :
print(chr(ord(Let[a]) + Num))
elif ord(Let[a]) > 64 and ord(Let[a]) < 91 and ord(Let[a]) + Num > 64 and ord(Let[a]) + Num < 91 :
print(chr(ord(Let[a]) + Num))
elif ord(Let[a]) > 96 and ord(Let[a]) < 123 and ord(Let[a]) + Num >= 123 :
while ord(Let[a]) + num >= 123 :
num = Num - 26
print(chr(ord(Let[a]) + num))
elif ord(Let[a]) > 64 and ord(Let[a]) < 91 and ord(Let[a]) + Num >= 91 :
while ord(Let[a]) + num >= 91 :
num = Num - 26
print(chr(ord(Let[a]) + num))
a = a + 1
b = b + 1
解决方案
在“b”循环中,“a”没有被重置为 0:
Let = input("Enter a sentence to decrypt : ")
Num = 0
b = 0
while b < 26 :
Num = Num + 1
num = int(Num)
a = 0
out = ""
while a < len(Let) :
if ord(Let[a]) > 96 and ord(Let[a]) < 123 and ord(Let[a]) + Num > 96 and ord(Let[a]) + Num < 123 :
out += (chr(ord(Let[a]) + Num))
elif ord(Let[a]) > 64 and ord(Let[a]) < 91 and ord(Let[a]) + Num > 64 and ord(Let[a]) + Num < 91 :
out += (chr(ord(Let[a]) + Num))
elif ord(Let[a]) > 96 and ord(Let[a]) < 123 and ord(Let[a]) + Num >= 123 :
while ord(Let[a]) + num >= 123 :
num = Num - 26
out += (chr(ord(Let[a]) + num))
elif ord(Let[a]) > 64 and ord(Let[a]) < 91 and ord(Let[a]) + Num >= 91 :
while ord(Let[a]) + num >= 91 :
num = Num - 26
out += (chr(ord(Let[a]) + num))
a = a + 1
print(out)
b = b + 1
更改为“for”循环:
Let = input("Enter a sentence to decrypt : ")
Num = 0
b = 0
while b < 26 :
Num = Num + 1
num = int(Num)
out = ""
for a in Let:
if ord(a) > 96 and ord(a) < 123 and ord(a) + Num > 96 and ord(a) + Num < 123 :
out += (chr(ord(a) + Num))
elif ord(a) > 64 and ord(a) < 91 and ord(a) + Num > 64 and ord(a) + Num < 91 :
out += (chr(ord(a) + Num))
elif ord(a) > 96 and ord(a) < 123 and ord(a) + Num >= 123 :
while ord(a) + num >= 123 :
num = Num - 26
out += (chr(ord(a) + num))
elif ord(a) > 64 and ord(a) < 91 and ord(a) + Num >= 91 :
while ord(a) + num >= 91 :
num = Num - 26
out += (chr(ord(a) + num))
print(out)
b += 1
推荐阅读
- javascript - 为什么 this.setState 不更新句柄删除数据?
- c - 从文件中读取一个单词并将其旁边的值存储在 c 中
- r - 在 R 中将 SpatialCollections 转换为 SpatialPolygonsDataFrame
- database - 在 SQLite 中选择月份范围
- python - 没有名为“object_detection”的模块
- javascript - 编程到 2D Array 复杂对齐
- android - 当片段更改时计时器重置,add() 将片段堆叠在一起
- java - 在枚举类中,如何将值转换为日期?
- javascript - 选择相同类型元素的每第 n 个,但不在同一个父元素中
- wordpress - 如何通过 ACF 字段过滤 BuddyPress 成员循环?