输出字符串前10不同字符
- 题目
- 原题答案
- 代码运行效果
- 完整代码
练习题目
原题答案
我的想法:用列表存放不同字符,如输入多于10个不同字符,够10停止遍历输入字符,最后用’'字符联接字符列表输出,代码性能应该优于“集合与字符串相加”组合。(有文章说Python字符串相加,相当于每次都会遍历字符串,性能不咋滴。而联接字符串列表,就一次操作,代码性能优于前者。所以,我一般能用列表联接都不用字符串相加的了。)这样子,是真的好些么?🤪
我的代码运行效果
可以看出,Python字符串对齐排版,对中文字符是不“友好”滴。😭😭
python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8
'''输出字符串中不重复的字符'''
s = '''
输入一个字符串,把左边
10个不重复的字符(大小写算不
同字符),挑选出来。如不重复的
字符不到10个则按实际数目输出。
'''
blank = ' '
line = '﹊'*21
print(f'\n\n{line}\n{s}\n{line}\n')
s = input(f'\n\n{"输入字符串":_^37}\n\n$>> ')
s_out = [] #定义列表盛放前10不同字符(不足10以实际数目输出)。
for i in s:
if len(s_out)==10:
break #不同字符够10,退出遍历循环。
if i not in s_out: #字符不在前10列表,追加字符。
s_out.append(i)
print(f'\n\n输入字符串:{s}\n{line}\n\n不重复的字符:\n{"".join(s_out):_^36}\n\n{line}\n')