编写一个名为 的函数remove_duplicates
,它将接受一个名为 的参数string
。此string
输入将only have characters between a-z
. 该函数应该删除字符串中的所有重复字符并返回一个具有两个值的元组:
例如:
remove_duplicates('aaabbbac')
应该产生 ('abc')
remove_duplicates('a')
应该产生 ('a', 0)
remove_duplicates('thelexash')
应该产生 ('aehlstx', 2)
我的代码:
def remove_duplicates(string):
for string in "abcdefghijklmnopqrstuvwxyz":
k = set(string)
x = len(string) - len(set(string))
return k, x
print(remove_duplicates("aaabbbccc"))
预期输出:
我期待它打印({a, b, c}, 6)
而不是打印({a}, 0)
.
我上面的代码有什么问题?为什么它没有产生我所期望的?
如果您不迭代字符串中的每个字符,您将获得预期的结果。
我已经对您的代码进行了注释,以便您可以看到您的脚本和我的脚本之间的区别。
非工作注释代码:
def remove_duplicates(string):
#loop through each char in "abcdefghijklmnopqrstuvwxyz" and call it "string"
for string in "abcdefghijklmnopqrstuvwxyz":
#create variable k that holds a set of 1 char because of the loop
k = set(string)
# create a variable x that holds the difference between 1 and 1 = 0
x = len(string) - len(set(string))
#return these values in each iteration
return k, x
print(remove_duplicates("aaabbbccc"))
输出:
({'a'}, 0)
工作代码:
def remove_duplicates(string):
#create variable k that holds a set of each unique char present in string
k = set(string)
# create a variable x that holds the difference between 1 and 1 = 0
x = len(string) - len(set(string))
#return these values
return k, x
print(remove_duplicates("aaabbbccc"))
输出:
({'b', 'c', 'a'}, 6)
Ps:如果你希望你的结果是有序的,你可以return k, x
改为return sorted(k), x
,但输出将是一个列表。
(['a', 'b', 'c'], 6)
编辑:如果您希望代码仅在满足特定条件时运行 - 例如,仅在字符串没有任何数字时运行 - 您可以添加一个 if/else 子句:
示例代码:
def remove_duplicates(s):
if not s.isdigit():
k = set(s)
x = len(s) - len(set(s))
return sorted(k), x
else:
msg = "This function only works with strings that doesn't contain any digits.."
return msg
print(remove_duplicates("aaabbbccc"))
print(remove_duplicates("123123122"))
输出:
(['a', 'b', 'c'], 6)
This function only works with strings that doesn't contain any digits..
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句