首页 > 解决方案 > 寻找简单问题的更简单解决方案

问题描述

我是 Python 新手,目前正在学习在线课程。这是我在作业中遇到的问题之一。看起来我已经正确解决了它,但看看我的代码,它看起来很复杂。我想知道还有什么其他方法可以解决这个问题,这样我才能学得更好。谢谢你。

问题是:

编写一个 Python 函数来检查字符串是否为 pangram。(假设传入的字符串没有任何标点符号)

注意:Pangrams 是包含字母表中的每个字母至少一次的单词或句子。例如:“敏捷的棕狐跳过懒惰的狗”

ispangram("敏捷的棕狐跳过了懒狗")

回答 :

import string

space = ""

def ispangram(str1, alphabet=string.ascii_lowercase):
    str1 = sorted(str1.replace(" ", "").lower())
    if set(space.join(str1)) == set(string.ascii_lowercase):
        return True
    else:
        return False

标签: pythonfunction

解决方案


您将其转换为函数,这使用生成器表达式并使用 ASCII 代码:

s = "A quick brown fox jumps over the lazy dog"
print(all(chr(x).lower() in s for x in range(65,91)))

布尔值将指示是否所有字符都存在。一个功能:

def ispangram(s):
  return all(chr(x).lower() in s for x in range(65,91))

它将首先遍历 65 到 91 的范围,然后将它们从 ascii 代码转换为它们的字符并检查它是否在 s 中,并将所有 26 个条件与all()AND 结合起来。并返回结果。


推荐阅读