在Python上使用字符串。找不到错误
在输入中,我们得到了字符串在Python上使用字符串。找不到错误,python,Python,在输入中,我们得到了字符串 asdfssgAAatG 输出必须是具有字母计数的压缩字符串。例如输入 aabggtttf 必须给予 a2b1g2t3f1 a1b1c1 那个么字母和它在输出行中重复了多少次。输入 abc 必须给予 a2b1g2t3f1 a1b1c1 在输出方面。所以我为它写了一些代码: a=str(input())+' ' count=1 b=1 r='' for i in range (a.count('')-2): if a[i]==a[i+1]:
asdfssgAAatG
输出必须是具有字母计数的压缩字符串。例如输入
aabggtttf
必须给予
a2b1g2t3f1
a1b1c1
那个么字母和它在输出行中重复了多少次。输入
abc
必须给予
a2b1g2t3f1
a1b1c1
在输出方面。所以我为它写了一些代码:
a=str(input())+' '
count=1
b=1
r=''
for i in range (a.count('')-2):
if a[i]==a[i+1]:
b+=1
else:
count=b
b=1
r=r+a[i]+str(count)
if a!=' ':
print(result=r[0:-1]+str(count))
对我来说,代码工作完美无瑕,当我输入测试时,它会给出正确的答案。但在我需要插入代码“steptic.org”的网站上,一些自动测试给出了错误,我无法完成这项任务。所以这里的问题是:这段代码有什么错误,什么输入会导致错误?也许这里有更简单的方法在Python上执行此任务?
我英语不好的原因是:)
顺便说一下,我看不到考试内容,我试了一些考试数据——都成功了,似乎我想不出什么数据给出了不正确的答案。不清楚哪些测试失败了,以什么方式失败了,所以我不能对此发表评论 但是,您可以使用
itertools.groupby()
来实现所需的结果:
In [13]: s = 'aabggtttf'
In [14]: ''.join(('%s%d' % (l, sum(1 for _ in g))) for l, g in itertools.groupby(s))
Out[14]: 'a2b1g2t3f1'
在这里:
迭代相同字母的运行李>用于itertools中的l,g。groupby
生成一个由字母和运行长度组成的字符串“%s%d%”(l,sum(g中的u为1))
集合。计数器
>>> from collections import Counter
>>> my_string = 'asdfssgAAatG'
>>> "".join(sorted([x+str(y) for x,y in Counter(my_string).items()],key=lambda x:my_string.index(x[0])))
'a2s3d1f1g1A2t1G1'
创建一个函数并返回它:
>>> def count_it(my_string):
... return "".join(sorted([x+str(y) for x,y in Counter(my_string).items()],key=lambda x:my_string.index(x[0])))
...
>>> count_it('aabggtttf')
'a2b1g2t3f1'
>>> count_it('abc')
'a1b1c1'
使用itertools.groupby
:
>>> "".join([ x+str(len(list(y))) for x,y in itertools.groupby('aabggtttf')])
'a2b1g2t3f1'
哪些测试会给出错误?错误消息是什么?改进标题。关于测试:自己编写一些测试用例。你们该怎么处理这个案子?资本化重要吗?ASDFSSGAATG的期望输出是什么?对于ASDFSSGAATG,必须是A1D1F1S2G1A2A1T1G1,我不知道什么测试出现错误-这里只显示测试10出现错误的消息我无法查看测试内容-我尝试了一些测试输入-所有工作正常,我找不到给出和错误的数据
sum(1代表u in g)
中的下划线是什么?谢谢@NPE@Tico:它和其他变量一样,只是一个变量。它需要有一个名称,但不使用该名称。根据一个常见的约定,我将变量命名为\ucode>。看见