You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python条件判断逻辑异常排查:jantina != ('L' or 'P')错误问题

解决Python中判断输入不在指定选项的逻辑错误

问题根源

你写的判断语句 if jantina != ("L" or "P"): 存在逻辑错误,因为Python的逻辑或运算(or)会返回第一个真值——这里"L"是字符串,属于真值,所以"L" or "P"的结果直接是"L"。这就导致你的判断等价于 if jantina != "L",完全不符合你“输入既不是L也不是P时触发分支”的需求。

同理,如果你换成and,"L" and "P"会返回最后一个真值"P",判断就变成if jantina != "P",同样达不到预期。

正确写法

有两种简洁且符合逻辑的写法:

  1. 逻辑与组合两次不等于判断
if jantina != "L" and jantina != "P":

这种写法直白表达“既不是L,也不是P”的逻辑。

  1. 用not in判断是否不在指定集合中
if jantina not in {"L", "P"}:

这种写法更简洁,尤其是当可选值较多时,用集合({})的查询效率也更高,也可以用列表["L", "P"]替代。

修正后的完整函数

from time import sleep
from os import system

def kalkulatorKalori():
  print("1. Sedentari: Anda jarang melakukan aktiviti senaman, hanya yang melibatkan aktiviti seharian")
  print("2. Moderasi: Anda melakukan aktiviti senaman lebih kurang 2-5 kali seminggu")
  print("3. Aktif: Anda melakukan aktiviti senaman 6-7 kali seminggu")
  jantina = input(str("Masukkan jantina anda [L/P]: "))
  # 修正后的判断语句
  if jantina not in {"L", "P"}:
    print("Itu bukan pilihan yang dibenarkan.")
    sleep(3)
    system("clear")
    kalkulatorKalori()
  umur = input(str("Masukkan umur anda: "))
  if int(umur) < 13:
    print("Itu bukan pilihan yang dibenarkan.")
    sleep(3)
    system("clear")
    kalkulatorKalori()
  activity = input(str("Masukkan kadar keaktifan anda [1-3]: "))
  if activity == "3":
    keaktifan = 3
  elif activity == "2":
    keaktifan = 2
  elif activity == "1":
    keaktifan = 1
  else:
    print("Pilihan anda perlulah [1-3]")
    sleep(3)
    system("clear")
    kalkulatorKalori()
  return keaktifan, jantina, umur

额外提示

如果需要兼容小写输入(比如用户输入l或p),可以在获取输入后转成大写:

jantina = input(str("Masukkan jantina anda [L/P]: ")).upper()

内容的提问来源于stack exchange,提问作者Ryan Avery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:01:25