我希望输出为
[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
答案 0 :(得分:2)
这是因为ord(str[i])
永远不会超过107
:
>>> ord("j") > 107
False
>>> ord("j")
106
因此永远不会达到mainstr.append("#")
。
你应该解决的其他问题:
str
,str
已经意味着什么(它是string class)"a" <= str[i] <= "k"
。您可以在没有计数器的情况下迭代字符串中的字符:
for character in theString:
if "a" <= character <= "k":
# ...
答案 1 :(得分:1)
字符107是'k'
。字符串中没有按字典顺序排列'k'
的字符,因此永远不会触发包含if
的{{1}}语句。将mainstr.append('#')
添加到列表中的代码永远不会执行。