社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Malik Abdullah • 5 年前 • 1687 次点击  
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
 
1687 次点击  
文章 [ 6 ]  |  最新文章 5 年前
Hive minD
Reply   •   1 楼
Hive minD    5 年前
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    5 年前
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    5 年前

你的策略会失败的。对于字符串“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    5 年前
    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    5 年前

你可以用 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    5 年前

你可以使用这个片段

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() 检查句子中的字符是否至少是字母表中的字符。