str.count(i) > 1
должно быть s.count(i) > 1
, это исправит вашу ошибку.
Вы можете использовать for i in set(i):
или collections.Counter
для более эффективного решения вашей задачи:
>>> from collections import Counter
>>> s = 'abbc'
>>> Counter(s).most_common(1)[0][1] == 1
False
Тайминги:
s = 'abcdefghijklmnopqrstuvwxyzz' # a worst case?
%timeit Counter(s).most_common(1)[0][1] == 1
13.2 µs ± 27.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit len(set(s)) == len(s)
1.33 µs ± 3.46 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit
for i in set(s):
if s.count(i) > 1:
break
1.72 µs ± 17.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%%timeit
for i in s:
if s.count(i) > 1:
break
6.78 µs ± 14.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)