我正在尝试使用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 DOES等于hashlist [247],但不是识别它并继续使用print wordlist [247]的代码,python会挂起嵌套的While循环。任何想法或建议?
谢谢!
编辑:修复缩进并删除不相关的变量。
编辑#2:所有变量都在前面的脚本中定义。这只是一段给我带来麻烦的代码片段。 Hash和Hashlist [247]相等(print hash和print hashlist [247],每个都给出848作为输出)。
编辑#3:已解决 - 感谢您的帮助!
答案 0 :(得分:3)
您发布的代码不会嵌套任何循环。
while count != 10:
for x in rawinput[pos]:
a = ord(x)
hash = hash + a
这是唯一相关的代码。这是一个无限循环,假设计数没有从10开始。
答案 1 :(得分:3)
事情1: Pythonic做10次做事的方式是
for _ in range(10):
...
事情2:显然Python认为hash != hashlist[247]
,或者它不会无限循环。请尝试print hash, hashlist[247], hash == hashlist[247]
进行检查。
事3:反正while cond: pass
有什么意义?你想尝试做多线程的东西吗?
答案 2 :(得分:1)
考虑更新的帖子(使用缩进代码):如果while
的初始值大于count
,则顶级10
将是无限的。
此外,如果hash != hashlist[247]
,以下循环也将是无限的(如果没有自定义__getitem__, __eq__
并且从另一个线程更改值):
...
while hash != hashlist[247]:
pass
...
答案 3 :(得分:0)
这是由于散列和散列表的类型不同:/。 str和int。我忽略了这一点,因为python解释器没有提到任何关于类型错误的东西,我已经习惯了它,我只是忘了检查。
感谢大家的帮助!
对任何有类似问题的人:
双重检查您的类型!!!