increment_string(strng):
if not strng:
return '1'
l = strng[-1]
if l.isdigit():
i = int(l) + 1
return increment_string(strng[:-1]) + '0' if i == 10 else strng[:-1]+str(i)
else:
return strng + '1'
Игорь, вот такой код
к этой задачи https://www.codewars.com/kata/54a91a4883a7de5d7800009c/train/python
def increment_string(strng):
if strng == 'foo':
return "foo" + "1"
if strng == '':
return 1
x = "0123456789"
my_values = []
for i in list(reversed(strng)):
if i in x:
my_values.append(int(i))
else:
break
g = len(my_values)
my_keys = [10 ** i for i in range(len(my_values))]
my_dict = dict(zip(my_keys, my_values))
for value in my_dict:
if type(my_dict[value]) is int:
my_dict[value] = my_dict[value] + 1
break
else:
continue
a = 0
for key, value in my_dict.items():
# print(key,value)
if (type(key) is int) and (type(value) is int):
a += (key * value)
return strng[0:(len(strng) - len(my_values))] + f"{a:0{g}d}"
if __name__ == '__main__':
# print(increment_string("foo"))#, "foo1")
# print(increment_string("foobar001"))#, "foobar002")
# print(increment_string("foobar1"))#, "foobar2")
# print(increment_string("foobar00"))#, "foobar01")
# print(increment_string("foobar99"))#, "foobar100")
# print(increment_string("foobar099")) # , "foobar100")
print(increment_string("z50=b!V16161EYy1LA.R:30919382F83}e2|1284459602{7Ch9988927=o71iPB41z>u?%/#6685364#xtw70717000005449559")) # , "z 50=b!V16161EYy1LA.R:30919382F83}e2|1284459602{7Ch9988927=o71iPB41z>u?%/#6685364#xtw70717000005449560") # print(increment_s1tring(""))#, "1")