if函数的迭代器返回错误

时间:2018-11-21 22:57:31

标签: python if-statement syntax-error code-formatting

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

代码:

    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

1 个答案:

答案 0 :(得分:1)

您遇到语法错误。用于循环的Python定义为for x in y:。您忘记了:。在ifselifselses

之后也需要冒号

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

此外,您不必增加x,因为Python for循环正在增加它。

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

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}")