Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python上使用字符串。找不到错误_Python - Fatal编程技术网

在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>。看见