编写一个带有字符串参数并返回新字符串的函数,该字符串包含参数字符串中未包含的所有字母

时间:2019-08-03 19:45:19

标签: python python-3.x

编写一个名为 missing_letters 的函数,该函数带有一个字符串参数,并返回一个新字符串,该字符串包含字母字符串中不在参数字符串中的所有字母。返回的字符串中的字母应按字母顺序排列。

它还应该使用全局变量 alphabet 。它应直接使用此全局变量,而不要通过参数或本地副本使用。它应该循环遍历字母,以确定输入参数中缺少哪些字母。 函数 missing_letters 应该将缺少字母的列表组合成一个字符串并返回该字符串。

在列表 test_miss 中的字符串上编写一个循环,并为每个字符串调用 missing_letters 。为每个字符串打印一行,列出缺少的字母。例如,对于字符串“ aaa”,输出应为以下内容。

  

aaa缺少字母bcdefghijklmnopqrstuvwxyz

我尽力解决了这个问题。该程序正在运行,但没有提供  所需的输出。

test_miss = ["b","zzz"] 
def missing_letters(s):
    missingAlphabets = ""
    global alphabet
    for c in s:
        i=0
        while i < len(alphabet):
            if alphabet[i] not in c:
                missingAlphabets += alphabet[i]
            i += 1
    sortedmissingAlphabetslists = sorted(missingAlphabets)
    sortedmissingAlphabets = ''.join(sortedmissingAlphabetslists)
    return sortedmissingAlphabets

for i in test_miss:
    print('{} is missing letters {}'.format(i,missing_letters(i)))
  

程序为任何带有单个字符的字符串提供适当的输出,例如-“ b”

     

即:b缺少字母acdefghijklmnopqrstuvwxyz

     

但是对于具有多个字符的字符串,例如:“ zzz”,输出为:

     

zzz缺少字母aaabbbcccdddeeefffggghhhjjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyy

     

但我想要:   zzz缺少字母abcdefghijklmnopqrstuvwxy

3 个答案:

答案 0 :(得分:2)

src类型已经为您处理了大部分工作。

<script>

如果设置了setimport string def missing_letters(s): return ''.join(sorted(set(string.lowercase) - set(s))) ,则xy中出现但x - y中没有的项的集合。一个有一组丢失的字符,您可以对它们进行排序,然后将排序后的元素重新加入一个字符串中。

x

答案 1 :(得分:1)

保持已经定义的精神。问题是您要多次测试missing_letters函数中的每个字母。因此,您只想检查字符(来自字母)是否在字符串中。因此,请取出多余的for loop,它会循环遍历参数中的字母-像这样

alphabet = 'abcdefghijklmnopqrstuvwxyz'    
test_miss = ["b","zzz"] 
def missing_letters(s):
    missingAlphabets = ""
    global alphabet
    i = 0
    while i < len(alphabet):
        if alphabet[i] not in s:
            missingAlphabets += alphabet[i]
        i += 1
    sortedmissingAlphabetslists = sorted(missingAlphabets)
    sortedmissingAlphabets = ''.join(sortedmissingAlphabetslists)
    return sortedmissingAlphabets

for i in test_miss:
    print('{} is missing letters {}'.format(i,missing_letters(i)))

b is missing letters acdefghijklmnopqrstuvwxyz
zzz is missing letters abcdefghijklmnopqrstuvwxy

答案 2 :(得分:0)

def has_duplicates(t):
   t= histogram(t)
   for i in t:
     a=(t[i])
     if a > 1:
        return True
   else:
         return False

for i in test_dups:
   f = has_duplicates(i)
   if f == True:
      print(i +' '+ 'has duplicates')
   else:
      print(i +' '+ 'has no duplicates')