【问题标题】:Returning a True statement if number is 3 and sum contains 3 [duplicate]如果数字为 3 且总和包含 3,则返回 True 语句 [重复]
【发布时间】:2021-09-15 00:15:02
【问题描述】:
def working_with_three(num1, num2):
    if num1 or num2 == 3 and 3 in str(num1 + num2):
        return True
    else:
        return False

working_with_three(-6, 19)

我正在尝试创建一个函数,该函数仅在其中一个数字为 3 且总和包含 3 时才返回 True,但是当我运行它时,我一直得到 True,即使我应该得到 False

【问题讨论】:

  • 这是一个非常常见的问题(所以也许应该作为重复关闭)但不容易搜索。你真的想要num1==3 or num2==3,因为所有andor 所做的都是将不同的事物联系在一起,这些事物可能是对的,也可能是错的。
  • 3 in str(num1 + num2) 会给你一个错误。您正在检查str 中是否存在int。使用'3' in str(num1 + num2)
  • 另外:由于将num1 + num2转换为字符串,所以必须检查该字符串中是否包含'3',而不是整数3

标签: python function contains


【解决方案1】:
def working_with_three(num1, num2):
sum1 = num1+num2
if ((num1 ==3 or num2==3) and str(3) in str(sum1)):
    return True
return False

【讨论】:

  • 感谢大家的见解。尤其是对初学者的突出问题。这个笔记将非常适合我。问题现已解决。
  • @SifisoMabaso 我认为您的意思可能是对不同答案的评论...您至少应该投票,并且,如果您有足够的声誉,请选择一个答案!
【解决方案2】:

因此,这里有许多有趣的“初学者”问题。

首先 num1 or num2 == 3 被评估为(num1) or (num2==3),然后我们必须弄清楚如何将(num1) 转换为真假。碰巧在python中,数字0是假的,而所有其他数字都是真的。

所以你真正想要的是num1==3 or num2==3

您还需要考虑if的另一部分:您要检查字符“3”是否在您由数字组成的字符串中,而不是number 3 在字符串中(这甚至没有意义)。所以'3' in str(num1 + num2)

但是等等,还有更多。每当你看到图案时

if something:
    return True
else:
    return False

您应该深入思考正在发生的事情:something 变成了TrueFalse,然后例程返回TrueFalse。这意味着您可以改为这样做

return something

【讨论】:

  • 要使return something 等同于if 语句,您需要编写return bool(something) 来捕获它的"truthiness"
  • 嗯,这取决于例程的目的是返回一个布尔值还是仅仅返回一个具有“真实性”的东西——当然,在这种情况下,它实际上是一个布尔值。
  • 我只是指出“……你可以做”的断言是不正确的。
猜你喜欢
  • 2013-07-21
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 2023-03-11
  • 2014-05-26
  • 2016-01-04
相关资源
最近更新 更多