嵌套的 while 循环不起作用

1 投票
4 回答
938 浏览
提问于 2025-04-16 08:35

我正在尝试用一个while循环来找出两个值是否匹配。一个值是固定的,而另一个值是列表中的一个条目。以下是我的代码:

 while count != 10:

    for x in rawinput[pos]:
       a = ord(x)
       hash = hash + a

    print hashlist[247]
    print hash
    print wordlist[247]

    while hash != hashlist[247]:
       pass


    print wordlist[247]
    hash = 0 
    count = count + 1

实际上,hash确实等于hashlist[247],但是Python没有识别到这一点,导致它在嵌套的while循环中卡住了。有没有什么想法或建议?

谢谢!

编辑:修正了缩进,并去掉了不相关的变量。

编辑 #2:所有变量在脚本的前面都有定义。这只是一个让我头疼的代码片段。Hash和Hashlist[247]是相等的(打印hash和打印hashlist[247]都输出848)。

编辑 #3:解决了——谢谢大家的帮助!

4 个回答

3

事情 1: 在Python中,想要做某件事情10次的标准方法是

for _ in range(10):
    ...

事情 2: 很明显,Python认为 hash != hashlist[247],要不然它就不会一直循环下去。你可以试试 print hash, hashlist[247], hash == hashlist[247] 来检查一下。

事情 3: 那么 while cond: pass 这个有什么用呢?你是在尝试做多线程的事情吗?

3

你发的代码里没有嵌套任何的 while 循环。

while count != 10:

    for x in rawinput[pos]:
       a = ord(x)
       hash = hash + a

这段代码是唯一相关的代码。如果 count 不是从 10 开始的话,这会变成一个无限循环。

0

这是因为哈希和哈希列表的类型不一样:一个是字符串(str),一个是整数(int)。我没有注意到这一点,因为Python解释器没有提示我有类型错误,这让我有些习惯了,所以我就忘了检查。

感谢大家的帮助!

对任何遇到类似问题的人:

一定要仔细检查你的数据类型!!!

撰写回答