我是Python的新手,目前正在在线学习课程。这是作业给我的问题之一。看起来我已经正确解决了问题,但是看一下我的代码,它看起来非常复杂。我想知道还有什么其他方法可以解决此问题,以便我可以更好地学习。谢谢。
问题是:
编写一个Python函数来检查字符串是否为pangram。 (假设传入的字符串没有任何标点符号)
注意:连字是指至少每个字母包含一个字母的单词或句子。 例如:“敏捷的棕色狐狸跳过了懒狗”
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
答案 0 :(得分:1)
将其转换为函数,它使用生成器表达式并使用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。并返回结果。
答案 1 :(得分:0)
假设使用英文字符集,可以执行以下步骤:
在代码方面,该代码的简洁版本(上面的文本已合并,以便将来的开发人员可以清楚地了解其工作方式):
# Returns true if and only if the given sentence
# contains all English letters at least once:
# 1. Lowercase sentence.
# 2. Make list from letters in sentence.
# 3. Make set from list to remove duplicates.
# 4. Ensure set has exactly 26 letters.
def isPangram(sentence):
return len(set([letter for letter in sentence.lower() if letter.isalpha()])) == 26