查看单词是否为等值图的函数

Function to see if word is isogram

An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case.

我已经做到了以下几点。但目标是试图说明 'moOse' 不是等值线图。它说不用担心套管。我不确定如何区分 'o' 和 'O'。

    char_list = []
    for char in string:
        if char.isalpha():
            if char.islower():
                if char in char_list:
                    return False
                else:
                    char_list.append(char)
    return True

我的脚本 returns 正确,因为它对 'o' 和 'O' 的看法不同。我如何让它不区分?我尝试添加 .islower(),但它似乎不起作用。

简短直接的解决方案:

def check_isogram(text):
 return len(set(text.lower())) == len(text)

在检查是否包含重复字母之前,您可以将字符串大写:

def is_isogram(string):
    char_list = []
    for char in string.upper():
        if char in char_list:
            return False
        char_list.append(char)
    return True

您可以使用集合而不是列表来加快速度:

def is_isogram(string):
    char_list = set()
    for char in string.upper():
        if char in char_list:
            return False
        char_list.add(char)
    return True

您可以使用 len() 函数使其更加简洁:

def is_isogram(string):
    return len(string) == len(set(string.upper()))