鱼C论坛

 找回密码
 立即注册
查看: 5258|回复: 39

[技术交流] Python:每日一题 81(答题领鱼币)

[复制链接]
发表于 2017-8-18 19:28:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实在抱歉,帖子出了点问题!!!



$
题目:

写一个函数 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
'





答案:

游客,如果您要查看本帖隐藏内容请回复
,strng)
        if a:
                 str_num = a[zxsq-anti-bbcode-0]
                 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后,在将字符串进行一次颠倒
[/hide]

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-18 19:34:35 | 显示全部楼层
那如果结尾的数字是9应该变成10?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-18 19:37:29 | 显示全部楼层
jerryxjr1220 发表于 2017-8-18 19:34
那如果结尾的数字是9应该变成10?

是的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-18 20:26:03 | 显示全部楼层
没有re,直接从右到左查看字符串。
def increment_string(string):
    lst = list(string)
    d = ''
    while lst:
        if lst[-1].isdigit() and (d == '' or d[0] == '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'

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-18 20:33:30 | 显示全部楼层

import re
def inc_string(string):
        return re.findall('(.*)(\d+), string)[0][0]+str(int(re.findall('(.*)(\d+), string)[0][1])+1) if re.match('.*\d+, string) else string+'1'

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-18 20:58:44 | 显示全部楼层
你怎么能这么自恋,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-18 23:36:24 | 显示全部楼层
新手·ing 发表于 2017-8-18 20:58
你怎么能这么自恋,,,

,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 11:14:50 | 显示全部楼层
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'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 11:21:51 | 显示全部楼层
楼主的解法有问题吧?试试这个:increment_string('MSK99是帅锅~9')

评分

参与人数 1贡献 +3 收起 理由
MSK + 3 谢谢提醒^-^~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 11:35:13 | 显示全部楼层

我运行了下你的代码,发现这个例子:inc_string('MSK99是帅锅~999')的结果是不对的,能麻烦您解释下您的代码吗?我是新手刚学python,也不是很懂python的正则表达式,所以也可能是我的问题..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 14:28:00 | 显示全部楼层
回复才能看?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 15:15:00 | 显示全部楼层
刚加入论坛,没有鱼币,买不了课后习题怎么破?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 16:46:54 | 显示全部楼层
查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-19 16:49:10 From FishC Mobile | 显示全部楼层
Greenland 发表于 2017-8-19 11:35
我运行了下你的代码,发现这个例子:inc_string('MSK99是帅锅~999')的结果是不对的,能麻烦您解释下您的 ...

你说的是对的,应该在正则表达式上加上美元符号$,表示以数字结尾,不然可能匹配到前面的数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-19 16:56:19 | 显示全部楼层
jerryxjr1220 发表于 2017-8-19 16:49
你说的是对的,应该在正则表达式上加上美元符号$,表示以数字结尾,不然可能匹配到前面的数字。

我在代码里一加美元符号系统就会添加一大些重复内容,,,
不加又没事
所以先把帖子隐藏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 17:12:37 From FishC Mobile | 显示全部楼层
MSK 发表于 2017-8-19 16:56
我在代码里一加美元符号系统就会添加一大些重复内容,,,
不加又没事
所以先把帖子隐藏{:10_24 ...

我记得我贴代码的时候应该是有美元符号的,不知道现在怎么显示不出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-19 17:36:39 | 显示全部楼层

抱歉,是帖子出了点小问题,我将帖子内容隐藏了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 18:35:26 | 显示全部楼层
def increment_string(a):
    try:
        int(a[-1])
        a = a[:-1]+str(int(a[-1])+1)
    except:
        a += "1"
    return a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 22:30:04 | 显示全部楼层
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 23:14:55 | 显示全部楼层
jerryxjr1220 发表于 2017-8-19 17:12
我记得我贴代码的时候应该是有美元符号的,不知道现在怎么显示不出来了

好的,我再研究下。谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表