如果是楼主的题目反向,不import不容易写短,因为没有字符串转数值的简便方法,即只转换能转成数值的部分。
如下程序
输入'A4a2B1C3D2e1',输出'AAAAaaBCCCDDe'
输入'ab12c3de5fg',输出'abbbbbbbbbbbbcccdeeeeefg'(这里假设1可以忽略)
def g(s):
p=0
d=''
i0=s[0]
while p<len(s)-1:
c=0
p+=1
i=s[p]
while i.isdigit():
c=c*10+int(i)
p+=1
if p>=len(s):
break
i=s[p]
if c>0:
d+=i0*c
else:
d+=i0
i0=i
if not i.isdigit():
d+=i
return d
你这里只改变了s,不需要同时变更循环变量i。
之前那个程序,需要改变循环变量,而python的for xx in yyy是在循环开始前就已经初始化了xx所需的各个值。
ps:如果本版回复时,代码格式化不多加那个空格就好了。
【 在 pinkpeach 的大作中提到: 】
: 发现一开始那位网友如果不写else:break其实也在字数内
: 刚刚才看到你这个写法 感觉好巧妙 我觉得我打死也想不到。。。
: 之前做的一道题是和这个相反,把字母按数字乘以展开,能再看看我这个为啥for循环是可以的吗 我死活看不出来。。
: ...................
--
修改:k7amd FROM 111.196.241.*
FROM 111.196.241.*