我不明白这种意想不到的输出,任何人都可以解释一下吗?

时间:2017-01-27 01:47:55

标签: python

我希望输出为

[1,4,9,10,#]

但我正在

[1,4,9,10]

任何人都可以解释为什么会发生这种情况的原因吗?

str = "adij"
mainstr = []
for i in range(0, len(str)):
    if 97 <= ord(str[i]) <= 107:
        mainstr.append(ord(str[i]) - 96)
    if ord(str[i]) > 107:
        mainstr.append(ord(str[i]) - 96)
        mainstr.append('#')
print mainstr

2 个答案:

答案 0 :(得分:2)

这是因为ord(str[i])永远不会超过107

>>> ord("j") > 107
False
>>> ord("j")
106

因此永远不会达到mainstr.append("#")

你应该解决的其他问题:

  • 你永远不应该调用你的变量strstr已经意味着什么(它是string class
  • 在Python中,您可以直接比较字符串。使用"a" <= str[i] <= "k"
  • 您可以在没有计数器的情况下迭代字符串中的字符:

    for character in theString:
        if "a" <= character <= "k":
            # ...
    

答案 1 :(得分:1)

字符107是'k'。字符串中没有按字典顺序排列'k'的字符,因此永远不会触发包含if的{​​{1}}语句。将mainstr.append('#')添加到列表中的代码永远不会执行。