鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: MSK

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

[复制链接]
发表于 2017-8-20 17:31:22 | 显示全部楼层
要寻找字符串最后的数字,考虑进位问题
def increment_string(s):
    nums = [i if i.isdigit() else -1 for i in s[::-1]]
    num = "".join(nums[:nums.index(-1)])[::-1]
    return s[:len(s)-nums.index(-1)]+ (str(int(num)+1) if num else '1')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-23 16:35:38 | 显示全部楼层
答题了,为什么大神没给我鱼币呢?缺鱼币啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-24 09:07:10 | 显示全部楼层
本帖最后由 sunnychou 于 2017-8-24 09:52 编辑

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

使用道具 举报

发表于 2017-8-24 09:50:04 | 显示全部楼层
本帖最后由 sunnychou 于 2017-8-24 09:52 编辑

import re

p = re.compile(r'\d+$')
string='This is1 an example!299'

t = p.findall(string)

print(string[:-len(t[0])] + str(int(t[0])+1) if t else string + '1')

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
MSK + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2017-8-24 12:02:35 | 显示全部楼层
def increment_string(string):
        a=string[len(string)-1:len(string)]
        try :
                a =int(a)
                a += 1
                print(string[0:len(string)-1]+str(a))
        except:
                print(string[0:len(string)]+'1')

if __name__=='__main__':
        increment_string('我是个天才!!!!')


'''
新手一枚练习中,发现try是个好东西。不过性能不行。
'''
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-8-24 12:20:28 From FishC Mobile | 显示全部楼层
应该把return改成 print
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-24 22:39:10 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-24 23:37:17 | 显示全部楼层
鱼币可以充值吗? 在哪里充值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-25 11:27:57 | 显示全部楼层
def increment_string(string):
    if not string[-1].isdigit():
        return string + '1'
    num = ''
    count = 0
    for i in string[::-1]:
        if not i.isdigit():
            break
        num = i + num
        count += 1
    num = str(int(num)+1)
    return string[:len(string)-count] + num

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
MSK + 5 + 5 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2017-8-25 14:03:41 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-7 19:57:31 | 显示全部楼层
g
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-4 14:16:08 | 显示全部楼层
本帖最后由 shigure_takimi 于 2017-12-4 14:32 编辑
def increment_string(string):
    if string[-1].isdigit():
        return string[:-1]+str(int(string[-1])+1)
    else:
        return string+'1'

print(increment_string('This is an example!'))  # ->This is an example!1
print(increment_string('MSK是帅锅~6')) # ->MSK是帅锅~7


## 题主出题有歧义。我还以为只看最后一位数字呢。
## 如果结尾是19,就会变成110,而看题主的意思应是变成20,
## 这样就要判断结尾连续有几位数字,我还没有学习正则表达式,要多写好几行代码。
def countDigit(string):
    # 判断结尾连续有几位数字
    index = -1
    count = 0
    while string[index].isdigit():
        count += 1
        index -= 1
    return count

def increment_string(string):
    count = countDigit(string) # 字符串结尾数字位数
    if count == 0:
        return string+'1'
    else:
        return string[:-count]+str(int(string[-count:])+1)

print(increment_string('This is an example!'))  # ->This is an example!1
print(increment_string('MSK是帅锅~6')) # ->MSK是帅锅~7
print(increment_string('MSK是帅锅~9999999')) # ->MSK是帅锅~10000000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-27 05:23:19 | 显示全部楼层
import re
def increment_string(string):
    rs = list(re.match(r'(\D+\d*\D+)(\d+)?',string).groups('0'))
    rs[1] = str(int(rs[1])+1)
    return ''.join(rs)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-28 21:53:50 | 显示全部楼层
12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-28 22:29:30 | 显示全部楼层
本帖最后由 凌九霄 于 2018-7-28 23:14 编辑
import re
def increment_string(string):
    nums = re.findall(r"\d+$",string)
    return string.replace(nums[0],str(int(nums[0]) + 1)) if nums else string + '1'

晕,系统总是过滤了我的$字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 09:59:50 | 显示全部楼层
import re
def increment_string(string: str):
    num = re.findall(r'\d+?, string)
    if num:
        string = string[:len(string) - len(num[0])]
        num = int(num[0]) + 1
        string = string + str(num)
    else:
        string = string + str(1)
    return string
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 19:56:24 | 显示全部楼层
def increment_string(string):
    return string[-1] += 1 if string[-1].isnumeric() else string += '1'

print(increment_string('This is an example!'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 20:10:07 | 显示全部楼层
holiday_python 发表于 2020-6-30 19:56
def increment_string(string):
    return string[-1] += 1 if string[-1].isnumeric() else string += ' ...

上一个答案有点小问题,已修改:

def increment_string(string):
    return string[:-1]+str(int(string[-1])+1) if string[-1].isdigit() else string +'1'

print(increment_string('This is an example!33'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 11:30:48 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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