使用if/else制作初学者系列的语义错误

0 python for-loop if-statement traversal

我的程序应该输出:Jack,Kack,Lack,Mack,Nack,Ouack,Pack和Quack.

suffix="ack"
prefix="JKLMNOPQ"

for i in prefix:
    if prefix=="Q" or "O":
        suffix="uack"
    else:
        suffix="ack"
    print i + suffix
Run Code Online (Sandbox Code Playgroud)

但相反,它输出Juack,Kuack,Luack,Muack Nuack Ouack Puack Quack

小智 5

  1. 您正在比较prefix(包含多个字母的字符串) - 而不是当前字符,i- 为单个字母.他们永远不平等.我建议更好的名字(这会使错误显而易见):prefixes = "JK..."for prefix in prefixes:.
  2. 您正在"O"使用它来强制转换为布尔值,而不使用任何比较运算符.如果prefix=="Q"为false,则转换"O"为布尔值 - 非空字符串被视为true.使用prefix == "Q" or prefix == "O"prefix in ("Q", "O")(更好地扩展以获得更多替代品).你不会相信这个错误有多常见......是的,它碰巧使用了一些从英语借来的关键词,但它不是英语</ rant>