Python:每日一题 81(答题领鱼币)
实在抱歉,帖子出了点问题!!!$
题目:
写一个函数 increment_string(string)
$def increment_string(string):
pass
函数将有一个参数string,并且它是一个字符串如果字符串已经以数字结束,那么这个数字应该增加1。如果字符串不以数字结尾,就在字符串string结尾加一个 1 返回处理过的字符串
For example:
>>>increment_string('This is an example!')
#'This is an example!1
increment_string('MSK是帅锅~6')
#MSK是帅锅~7
'
{:10_297:}
答案:
**** Hidden Message *****,strng)
if a:
str_num = a
return '%s%d' % (strng[::-1].replace(str_num,'',1)[::-1],int(str_num)+1)
return '%s%d' % (strng,1)
如果要处理的是形如 'AB99C99'这样的字符串
需要处理的是末尾的字符串数字99,对于之间的99不进行处理
匹配末尾数字,返回一个列表:
接下来将末尾数字+1
楼楼使用的是replace方法
因为replace是从左到右查找,所以楼楼先将字符串颠倒,使用replace后,在将字符串进行一次颠倒
那如果结尾的数字是9应该变成10? jerryxjr1220 发表于 2017-8-18 19:34
那如果结尾的数字是9应该变成10?
是的~ 没有re,直接从右到左查看字符串。
def increment_string(string):
lst = list(string)
d = ''
while lst:
if lst[-1].isdigit() and (d == '' or d == '9'):
d = lst.pop() + d
else:
break
return ''.join(lst) + str(int(d) + 1) if d else string + '1'
>>> increment_string('This is an example!')
'This is an example!1'
>>> increment_string('MSK是帅锅~6')
'MSK是帅锅~7'
>>> increment_string('MSK是帅锅~66')
'MSK是帅锅~67'
>>> increment_string('MSK是帅锅~69')
'MSK是帅锅~70'
>>> increment_string('MSK是帅锅~69999')
'MSK是帅锅~70000'
MSK 发表于 2017-8-18 19:37
是的~
import re
def inc_string(string):
return re.findall('(.*)(\d+), string)+str(int(re.findall('(.*)(\d+), string))+1) if re.match('.*\d+, string) else string+'1' 你怎么能这么自恋,,, 新手·ing 发表于 2017-8-18 20:58
你怎么能这么自恋,,,
,,,{:10_278:} import re
def increment_string(string):
matchString = re.match('(.*\D)(\d+)', string)
if matchString:
return matchString.group(1) + str(int(matchString.group(2)) + 1)
else:
if re.findall('\d', string):
return str(int(string) + 1)
else:
return string + '1' 楼主的解法有问题吧?试试这个:increment_string('MSK99是帅锅~9')
jerryxjr1220 发表于 2017-8-18 20:33
我运行了下你的代码,发现这个例子:inc_string('MSK99是帅锅~999')的结果是不对的,能麻烦您解释下您的代码吗?我是新手刚学python,也不是很懂python的正则表达式,所以也可能是我的问题.. 回复才能看? 刚加入论坛,没有鱼币,买不了课后习题怎么破? 查看 Greenland 发表于 2017-8-19 11:35
我运行了下你的代码,发现这个例子:inc_string('MSK99是帅锅~999')的结果是不对的,能麻烦您解释下您的 ...
你说的是对的,应该在正则表达式上加上美元符号$,表示以数字结尾,不然可能匹配到前面的数字。 jerryxjr1220 发表于 2017-8-19 16:49
你说的是对的,应该在正则表达式上加上美元符号$,表示以数字结尾,不然可能匹配到前面的数字。
我在代码里一加美元符号系统就会添加一大些重复内容,,,
不加又没事{:10_266:}
所以先把帖子隐藏{:10_245:} MSK 发表于 2017-8-19 16:56
我在代码里一加美元符号系统就会添加一大些重复内容,,,
不加又没事
所以先把帖子隐藏{:10_24 ...
我记得我贴代码的时候应该是有美元符号的,不知道现在怎么显示不出来了 九九八十一 发表于 2017-8-19 14:28
回复才能看?
抱歉,是帖子出了点小问题,我将帖子内容隐藏了~ def increment_string(a):
try:
int(a[-1])
a = a[:-1]+str(int(a[-1])+1)
except:
a += "1"
return a def increment_string(string):
return(string[:-1]+str(int(string[-1])+1) if string[-1].isdigit() else string+'1')
str0 = input('请输入一个字符串:')
print(increment_string(str0))
运行结果:
============== RESTART: C:\Users\每日一题\81.py ==============
请输入一个字符串:从前有座山
从前有座山1
>>>
============== RESTART: C:\Users\每日一题\81.py ==============
请输入一个字符串:MSK是帅锅~6
MSK是帅锅~7 jerryxjr1220 发表于 2017-8-19 17:12
我记得我贴代码的时候应该是有美元符号的,不知道现在怎么显示不出来了
好的,我再研究下。谢谢~
页:
[1]
2