Python挑战练习-21
编写一个程序来检查一个单词是否为同源词。 同源词是指不包含任何重复字母的单词,例如brown
,fox
,quick
等。
- 定义函数
is_string_isogram()
,参数为一个单词word
。 - 在函数内,如果单词是同源词,则返回
True
,否则返回False
。
# 将单词转换为小写 word = word.lower()
方法一:使用集合来辅助判断
def is_string_isogram(word):
word = word.lower()
seen_letters = set()
for char in word:
if char in seen_letters:
return False
seen_letters.add(char)
return True
代码解释:
创建一个空集合 seen_letters
,用于记录已经出现过的字母。通过 for
循环遍历单词中的每一个字母,在循环中,使用if
判断当前字母是否已经在集合中出现过,如果已经出现过,说明单词存在重复字母,不符合同源词的定义,直接返回 False
;如果当前字母不在集合中,就将其添加到集合中,标记这个字母已经出现过了。当整个单词遍历完后,如果都没有发现重复的字母,说明这个单词是同源词,通过 return True
返回 True
。
方法二:使用字典
def is_string_isogram(word):
word = word.lower()
letter_count = {}
for char in word:
letter_count[char] = letter_count.get(char, 0) + 1
if letter_count[char] > 1:
return False
return True
代码解释:
-
创建一个空字典
letter_count
,用于统计每个字母在单词中出现的次数。 -
在循环遍历单词的过程中,对于每个字母
char
,通过letter_count[char] = letter_count.get(char, 0) + 1
来更新其出现次数。如果这个字母是第一次出现,letter_count.get(char, 0)
会返回默认值0
,然后加1
表示出现了1
次;如果已经出现过,就获取其当前次数并加1
。接着使用if letter_count[char] > 1:
判断该字母的出现次数是否大于1
,如果大于1
,说明存在重复字母,返回False
。 -
当整个单词遍历完后,如果没有出现字母次数大于
1
的情况,说明单词是同源词,返回True
。