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
相关产品推荐
相关产品推荐

