【问题标题】:Having a function return a true of false bool [closed]有一个函数返回一个假布尔值的真[关闭]
【发布时间】:2021-09-09 14:15:03
【问题描述】:

我是 python 新手,我无法弄清楚这一点。这是我想要做的:

我正在尝试编写一个将字符串作为参数的函数,并检查字符串是否仅包含数字 5 和 6。如果是,则返回布尔值 True。如果不是,则返回布尔值 False。函数示例:numberCheck(string)。

我知道这对某些人来说很简单,但我还无法弄清楚其中的逻辑。

【问题讨论】:

  • 如果这是一个学习练习,我们只是说set(string) <= {*"56"} 可能不会有太大帮助。你试过什么了?你在纠结什么?
  • 嗨!我们不是代码编写服务,但我们很乐意在您遇到问题时提供帮助。向我们展示您迄今为止所做的工作!
  • 这可能根本不正确,但我尝试过的是: def numberCheck(string): return bool([string== 5 | 6])
  • 如果你作为一个人类必须确定一串数字是否都是 5 和 6,你认为这可能需要什么过程?

标签: python function boolean


【解决方案1】:

你可以使用pythonsets

他们有很多不错的方法,例如issubset 来比较集合:

def fivesix(s):
    return set(s).issubset(set('56'))

例子:

>>> fivesix('123')
False
>>> fivesix('156')
False
>>> fivesix('565')
True
>>> fivesix('5')
True

【讨论】:

    【解决方案2】:

    你说这就是你目前所拥有的,让我们来看看:

    def numberCheck(string):
        return bool([string == 5 | 6])
    

    这并不是在 Python 中解决此问题的好方法,因为您正在创建一个列表,其中包含检查 5 或 6 是否在字符串中的逻辑(您尝试执行此操作的方式不起作用,但这是不同的事情)。然后你将该列表转换为布尔值。由于列表中总是有一个值,所以函数总是返回 true。在 python 中,非空列表为真,空列表为假。所以我们需要将你的代码重写为

    1. 返回正确的值
    2. 正确检查是否存在 5 或 6。

    看看这个例子:

    def numberCheck(string):
        if string == "":                     # If our string is empty we want to return False
            return False
        five_or_six = set({'5','6'})         # We want every number to be in this domain...
        for character in string:             # So we look at every character in the string
            if character not in five_or_six: # and if it isnt in our accepted set
                return False                 # return False.
        return True                          # if every character is a five or a six return True
    
    
    print(numberCheck('123'))
    print(numberCheck('565'))
    

    【讨论】:

    • {'5','6'} 已经是set。在上面调用set 没有任何好处。
    • @MisterMiyagi 我想让这个例子很明显,但我明白你的意思
    • @Upuls263 没什么不好,只是想指出来。我真的很喜欢您的回答不仅提供了代码,而且还提供了一些内容。
    • @MisterMiyagi 为了清楚起见,我可能会保留它,谢谢
    猜你喜欢
    • 2022-10-05
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2020-01-21
    • 2021-01-06
    • 2014-05-16
    • 1970-01-01
    相关资源
    最近更新 更多