鱼C论坛

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

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

[复制链接]
发表于 2017-8-20 17:31:22 | 显示全部楼层
要寻找字符串最后的数字,考虑进位问题
  1. def increment_string(s):
  2.     nums = [i if i.isdigit() else -1 for i in s[::-1]]
  3.     num = "".join(nums[:nums.index(-1)])[::-1]
  4.     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 | 显示全部楼层
  1. def increment_string(string):
  2.     if not string[-1].isdigit():
  3.         return string + '1'
  4.     num = ''
  5.     count = 0
  6.     for i in string[::-1]:
  7.         if not i.isdigit():
  8.             break
  9.         num = i + num
  10.         count += 1
  11.     num = str(int(num)+1)
  12.     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 编辑
  1. def increment_string(string):
  2.     if string[-1].isdigit():
  3.         return string[:-1]+str(int(string[-1])+1)
  4.     else:
  5.         return string+'1'

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



## 题主出题有歧义。我还以为只看最后一位数字呢。
## 如果结尾是19,就会变成110,而看题主的意思应是变成20,
## 这样就要判断结尾连续有几位数字,我还没有学习正则表达式,要多写好几行代码。

  1. def countDigit(string):
  2.     # 判断结尾连续有几位数字
  3.     index = -1
  4.     count = 0
  5.     while string[index].isdigit():
  6.         count += 1
  7.         index -= 1
  8.     return count

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

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

使用道具 举报

发表于 2018-1-27 05:23:19 | 显示全部楼层
  1. import re
  2. def increment_string(string):
  3.     rs = list(re.match(r'(\D+\d*\D+)(\d+)?',string).groups('0'))
  4.     rs[1] = str(int(rs[1])+1)
  5.     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 编辑
  1. import re
  2. def increment_string(string):
  3.     nums = re.findall(r"\d+$",string)
  4.     return string.replace(nums[0],str(int(nums[0]) + 1)) if nums else string + '1'
复制代码


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

使用道具 举报

发表于 2020-3-16 09:59:50 | 显示全部楼层
  1. import re
  2. def increment_string(string: str):
  3.     num = re.findall(r'\d+?, string)
  4.     if num:
  5.         string = string[:len(string) - len(num[0])]
  6.         num = int(num[0]) + 1
  7.         string = string + str(num)
  8.     else:
  9.         string = string + str(1)
  10.     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-3-28 23:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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