python作业求助
str1 = '''拷 贝 过 来 的 字 符 串'''list1 = []
for each in str1:
if each not in list1:
if each == '\n':
print('\\n', str1.count(each))
else:
print(each, str1.count(each))
list1.append(each)
那个\\n是什么,为啥我把\\n改成\n结果也一样
本帖最后由 weiter 于 2020-8-6 19:14 编辑
\ 是转义符
\\ 就是用转义符转义转义符,这样是解除 \ 的特殊含义,让 \ 变成可以打印出来的普通字符
\n 是用于输出换行
\\n 是用于输出 \n 这个字符串 本帖最后由 Twilight6 于 2020-8-6 19:16 编辑
结果一样是因为你测试的字符串没有多行字符,所以没有 \n 字符
只要你的字符串大于 1 行,那么结果一定不一样的,\\n 是将 \ 转义了,才能使得 \n 成功打印
也就是因为 each 循环到换行符\n的时候,我们直接打印 each 会导致换行,所以统计 \n 换行符时候要将这个字符单独 if 判断并列出打印
需要转义后才能成功打印出 \n ,如果没转义,那么是个换行的效果
Twilight6 发表于 2020-8-6 19:12
结果一样是因为你测试的字符串没有多行字符,所以没有 \n 字符
只要你的字符串大于 1 行,那么结果一 ...
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'
为啥结果不是这样:
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3
拷 3
贝 3
过 3
来 3
的 3
字 3
串 3
\n 2
符 3
为啥不是向上面那样,按理说第一次遇到’拷‘的时候就已经统计了出现次数并打印一次‘拷 3’,那么下一次再轮到第二个‘拷’,就应该又打印一次‘拷 3’。对吗
4399king 发表于 2020-8-6 19:34
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'
不是,因为每打印一次都会把 each 添加到 list1 中,然后下次判断 each 在不在 list1 中,如果存在于 list1 就代表这个元素已经打印过了,就不再打印了。 4399king 发表于 2020-8-6 19:34
str1='拷贝过来的字符串
拷贝过来的字符串
拷贝过来的字符串'
为啥不是向上面那样,按理说第一次遇到’拷‘的时候就已经统计了出现次数并打印一次‘拷 3’,那么下一次再轮到第二个‘拷’,就应该又打印一次‘拷 3’。对吗
不对哈,因为每次统计完字符,就会将这个字符加到列表进去,而因为你的 if 判断不在列表内的字符
才开始打印,所以每个字符只打印一次, count 直接统计了这个字符串的所有字符的个数了
页:
[1]