Py学习  »  Python

编写Python函数来检查字符串是否为pangram

Malik Abdullah • 5 年前 • 1810 次点击  
def pangram(s):
    check=""
    small=s.lower()
    combine=small.replace(" ","")
    for i in combine:
        if i in check:
            return False
        else:
            check+=i
    return True
print(pangram("The quick brown fox jumps over the lazy dog"))

注:拼图是至少包含一次字母表中每个字母的单词或句子。

例如:“敏捷的棕色狐狸跳过懒惰的狗”

我找不到我的代码有什么问题,求救!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52304
文章 [ 6 ]  |  最新文章 5 年前
Hive minD
Reply   •   1 楼
Hive minD    6 年前
import re
def pangram(s):
    s = s.lower()
    s = re.compile('[^a-z]').sub('',s) # string after removing non English alphabets
    return len(set(s)) == 26

试试这个代码。 在这里,我们将字符串转换为小写,然后消除所有不需要的字符。 然后找出唯一值并检查长度是否与英文字母表中的字符数相同。

Hive minD
Reply   •   2 楼
Hive minD    6 年前
import string
import re
def pangram(s):
    s = s.lower() # convert the string to lowercase
    s = re.compile('[^a-z]').sub('',s) # string after removing non English alphabets
    return len(set(s)) == len(string.ascii_lowercase)

我希望这能解决你的问题。

在这里,我们将字符串转换为小写,然后消除所有不需要的字符。然后找出唯一值并检查长度是否与英文字母表中的字符数相同。

Eto Demerzel
Reply   •   3 楼
Eto Demerzel    6 年前

你的策略会失败的。对于字符串“combine”中的每个字符,您将检查以前是否见过该字符。盘羊可以有重复的字符。您要做的是检查输入字符串“s”是否包含字母表中的每个字符。下面的代码简单快速,演示了两个非常有用的工具:string和set。

import string

def is_pangram(s):
    s = s.lower().replace(" ","")
    return set(s.lower()) >= set(string.ascii_lowercase)
Sumana
Reply   •   4 楼
Sumana    6 年前
    import string
    alphabet = set(string.ascii_lowercase) 
    def ispangram(str):
         return not set(alphabet) - set(str)
    string = 'the quick brown fox jumps over the lazy dog'
    if(ispangram(string) == True): 
        print("Yes") 
    else: 
        print("No") 
Vlad Bezden
Reply   •   5 楼
Vlad Bezden    6 年前

你可以用 set 为了它。

set对象是不同散列对象的无序集合。

import string


def is_pangram(s, alphabet=string.ascii_lowercase):
    return set(alphabet) == set(s.replace(" ", "").lower())


text = "The quick brown fox jumps over the lazy dog"
assert is_pangram(text) is True

text = "Some text for testing"
assert is_pangram(text) is False
Matthias Tr4cEr
Reply   •   6 楼
Matthias Tr4cEr    6 年前

你可以使用这个片段

import string

def ispangram(sentence, alphabet=string.ascii_lowercase): 
    return set(alphabet) <= set(sentence.lower()) 

print(ispangram(input('Sentence: ')))

set(alphabet) 创建给定字母表中所有字符的集合。

set(sentence.lower()) 以小写形式创建输入语句的所有字符集。

比较 set(alphabet) <= set(sentence.lower() 检查句子中的字符是否至少是字母表中的字符。