你如果不遍历字符串中的每个字符,将会得到预期的结果。
我已经评论了你的代码,所以你可以看到你的脚本和我的区别。
非工作注释代码:
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)
P.S:,如果你想你的结果是为了,你可以改变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..
好的,我如何将字符串限制为仅用于运行代码的字母表。就像你的代码也会运行“22233377”一样。这就是我想要做的,“在TTT中为xx”运行 – wapadunk
您必须添加一个“if/else”子句。我已经更新了我的答案,请看一看。 –
帮助!我一直在试图将这个输出(['a','b','c'],6)转换为(“abc”,6)。 – wapadunk