solomonxian 发表于 2017-8-20 17:31:22

要寻找字符串最后的数字,考虑进位问题
def increment_string(s):
    nums = ]
    num = "".join(nums[:nums.index(-1)])[::-1]
    return s[:len(s)-nums.index(-1)]+ (str(int(num)+1) if num else '1')

chunchun2017 发表于 2017-8-23 16:35:38

答题了,为什么大神没给我鱼币呢?缺鱼币啊,{:10_254:}

sunnychou 发表于 2017-8-24 09:07:10

本帖最后由 sunnychou 于 2017-8-24 09:52 编辑

{:5_91:}

sunnychou 发表于 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)] + str(int(t)+1) if t else string + '1')

colinshi 发表于 2017-8-24 12:02:35

def increment_string(string):
        a=string
        try :
                a =int(a)
                a += 1
                print(string+str(a))
        except:
                print(string+'1')

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


'''
新手一枚练习中,发现try是个好东西。不过性能不行。
'''

suloman 发表于 2017-8-24 12:19:06

def increment_string(string):
    try:
      a=string[:-1]+str(int(string[-1])+1)
      return(a)
    except:
      return(str(string)+"1")

suloman 发表于 2017-8-24 12:20:28

应该把return改成 print

vicshu 发表于 2017-8-24 22:39:10

学习了

BeginnerSK 发表于 2017-8-24 23:37:17

鱼币可以充值吗? 在哪里充值?

776667 发表于 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

ywt 发表于 2017-8-25 14:03:41

1

wukangwi 发表于 2017-10-7 19:57:31

g

shigure_takimi 发表于 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.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

yjsx86 发表于 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 = str(int(rs)+1)
    return ''.join(rs)

benderfly 发表于 2018-7-28 21:53:50

12

凌九霄 发表于 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,str(int(nums) + 1)) if nums else string + '1'

晕,系统总是过滤了我的$字符

Geoffreylee 发表于 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)]
      num = int(num) + 1
      string = string + str(num)
    else:
      string = string + str(1)
    return string

holiday_python 发表于 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!'))

holiday_python 发表于 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'))

19971023 发表于 2020-8-2 11:30:48

1
页: 1 [2]
查看完整版本: Python:每日一题 81(答题领鱼币)