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

Python新手求助:判断花瓣奇偶的爱情函数错误排查

代码错误分析与修正

你的代码存在以下几个关键问题:

  • 循环逻辑完全错误:for lovetest in "yes" 是遍历字符串"yes"的每个字符(共3个),所以会连续打印3次"You are in love";而for循环的else块会在循环正常结束(未被break中断)时执行,因此又会打印一次"You aren't in love",这就是你看到重复输出的原因。
  • 判断奇偶的方法冗余且绕远:通过两数相加除以2判断是否为float来区分奇偶组合,虽然偶+奇=奇、除以2是float的逻辑成立,但这种方式既不直观也没必要,完全可以用取模运算直接判断奇偶性。
  • 函数没有返回值:题目要求函数返回True或False,但你的函数里没有return语句,所以调用print(lovefunc(...))时会输出None。

修正后的代码

先将输入直接转为整数,再用简洁逻辑实现函数:

flower1 = int(input("Number of petals in the first flower: "))
flower2 = int(input("Number of petals in the second flower: "))

def lovefunc(flower1, flower2):
    # 判断两个数的奇偶性是否不同(一个偶、一个奇)
    return (flower1 % 2) != (flower2 % 2)

# 根据函数返回值输出结果
if lovefunc(flower1, flower2):
    print("You are in love")
else:
    print("You aren't in love")

简化逻辑说明

  • flower % 2 会返回0(偶数)或1(奇数),只要两个数的取模结果不相等,就说明一个是偶数一个是奇数,直接返回True,否则返回False。
  • 也可以用异或运算进一步简化:return (flower1 % 2) ^ (flower2 % 2),因为10=1(对应True),00和1^1都等于0(对应False),效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:55:27