使用if/else生成初步序列的语义错误

2024-03-29 12:11:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序应该输出: 杰克,卡克,拉克,麦克,纳克,乌克,打包,嘎嘎。在

suffix="ack"
prefix="JKLMNOPQ"

for i in prefix:
    if prefix=="Q" or "O":
        suffix="uack"
    else:
        suffix="ack"
    print i + suffix

但它却输出 胡克,夸克,卢克,穆克-努克 哎哟 普瓦克 庸医


Tags: orin程序forprefixifsuffixelse
3条回答

prefix == "Q" or "O"完全错误。在

  1. 前缀总是"JKLMNOPQ",因此永远不会等于"Q"。我不是想找你
  2. ==or结合得更紧密,因此它将计算为(prefix == "Q") or "O""O"总是真的,所以后缀总是“uack”`

如果你能修好这些,它应该能起作用。在

我想应该是if i=="Q" or i=="O"。在

您应该在循环中对比i,而不是{}。即使与if prefix == 'Q' or 'O'进行比较,if prefix == 'Q' or 'O'始终是{},因为{}不是{}。这应该是if i == 'Q' or i == 'O'。在

  1. 您正在将prefix(一个包含多个字母的字符串)与单个字母进行比较,而不是当前的字符i。他们永远不平等。我建议使用更好的名称(这会使错误显而易见):prefixes = "JK..."和{}。在
  2. 通过在逻辑or中不使用任何比较运算符,将"O"强制为布尔值。如果prefix=="Q"为false,则它将"O"转换为布尔值,非空字符串被视为true。使用prefix == "Q" or prefix == "O"prefix in ("Q", "O")(对于更多的替代方案,这两种方法的伸缩性更好)。你不会相信这个错误有多普遍。。。是的,它碰巧使用了一些从英语中借用的关键字,但它不是英语<;/rant>

相关问题 更多 >