我对编码非常陌生,我有一个关于dict()函数的问题
最初,我需要制作一个程序,该程序接受一个字符串参数,并返回一个新字符串,其中包含字母表中所有不在参数字符串中的字母
要求包括使用以下两个全局参数和直方图功能
alphabet = "abcdefghijklmnopqrstuvwxyz"
test_miss = ["zzz","subdermatoglyphic","the quick brown fox jumps over the lazy dog"]
def histogram(s):
d = dict()
for c in s:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
答案是
def missing_letters(s):
h = histogram(s)
m = []
for c in alphabet:
if c not in h:
m.append(c)
return ''.join(m)
for s in test_miss:
m = missing_letters(s)
if len(m):
print(s,"is missing letters",m)
else:
print(s,"uses all the letters")
**Output**
zzz is missing letters abcdefghijklmnopqrstuvwxy
subdermatoglyphic is missing letters fjknqvwxz
the quick brown fox jumps over the lazy dog uses all the letters
>>>
现在我试图通过创建一个新的本地字典来摆脱直方图函数,我想如果我用新的本地字典替换直方图函数,它会起作用
def missing_letters(s):
l = [1,2,3]
h = dict(zip(s,l))
m = []
for c in alphabet:
if c not in h:
m.append(c)
return ''.join(m)
for s in test_miss:
m = missing_letters(test_miss)
if len(m):
print(s,"is missing letters",m)
else:
print(s,"OK")
然而,它不起作用
您可以看到输出与预期的不同:
zzz is missing letters abcdefghijklmnopqrstuvwxyz
subdermatoglyphic is missing letters abcdefghijklmnopqrstuvwxyz
the quick brown fox jumps over the lazy dog is missing letters abcdefghijklmnopqrstuvwxyz
为什么我的代码这次不起作用
附言
*我想知道如何用不同的本地字典替换直方图(这是一个字典)的返回值
您仅使用前3个字母。而不是
我建议使用一套:
但是,当您调用函数时,您试图传递整个列表:
因此,它是在列表元素而不是字符串中的字符上循环
你的意思是:
通过在一个函数中使用两个列表,您应该能够模拟它。此代码实现以下功能:
之后,您所要做的就是调用该函数并向其传递一个参数
编辑:作为对注释的解释,您实际上可以使用missing_测试来传递多个句子并从中运行函数。最简单的方法是:
至于我为什么使用这些列表,我将尝试一步一步地简要解释代码的作用
1-
def lettercheck(sentence):
存储传递给变量的任何字符串参数2-
letters
等于您所说的alphabet
,然后将其转换为letters = list(letters)
行上的列表。如果在该点之后打印字母,输出将为[a,b,c,(...)]
3-你传递的字符串被降低(这样你也可以检查大写字母),然后变成一个列表,所以zzz变成[z,z,z]
4-创建一个空列表(缺少字母),因为稍后它将作为输出
5-此处的for循环检查字母表中的每个字母,然后检查它是否在为您传递的参数创建的列表中。如果它在列表中,它什么也不做。如果不是,则会将该字母添加到缺失字母列表中
6-
return ''.join(missing_letters)
将丢失的字母列表作为字符串返回相关问题 更多 >
编程相关推荐