if 函数的迭代器 return 错误

Iterator of if-functions return errors

我刚刚开始一个可以对消息进行编码的编码项目。尝试使用 if 和 elif 函数时,repl.it 返回错误,无论我尝试用什么结束 if 函数。

代码:

    ConvertString = input("Enter a string: ")
    StringList = list(ConvertString)
    print (StringList)
    for x in list(range(len(StringList))
      if StringList[x] == "a":
        print("Letter found: a")
      elif StringList[x] == "b"
        print("Letter found: b")
      elif StringList[x] == "c"
        print("Letter found: c")
      elif StringList[x] == "d"
        print("Letter found: d")
      elif StringList[x] == "e"
        print("Letter found: e")
      elif StringList[x] == "f"
        print("Letter found: f")
      x += 1

您有语法错误。 Python 的 for 循环定义为 for x in y:。你忘了 :ifselifselses

后也需要冒号

此外,您不必将 range() 转换为列表。 range() in Python3 returns 一个生成器,您可以安全地对其进行迭代(在 Python2 中您必须使用 xrange)。

此外,您不必递增 x,因为它由 Python for 循环递增。

然后,不要使用类似 C 语言的循环。您不必对索引进行操作。最好编写更多 pythonic 代码,像其他语言一样使用 Pythons for 循环 foreach:

ConvertString = input("Enter a string: ")
StringList = list(ConvertString)
print (StringList)
for x in StringList:
  if x == "a":
    print("Letter found: a")
  elif x == "b":
    print("Letter found: b")
  elif x == "c":
    print("Letter found: c")
  elif x == "d":
    print("Letter found: d")
  elif x == "e":
    print("Letter found: e")
  elif x == "f":
    print("Letter found: f")

最后一个,如果你只关心a-f个字母,好吧,你可以写这样的代码。但是最好检查一下字母是>= a还是<= f。但是如果你想检查整个字母表,最好这样写:

ConvertString = input("Enter a string: ")
StringList = list(ConvertString)
print (StringList)
for x in StringList:
  print(f"Letter found: {x}")