华为od题 第82题:取字符串的所有整数最小和--python

'''
1.输入字符串s输出s中包含所有整数的最小和,
说明:
1字符串s只包含a~z,A~Z,+,-,
2.合法的整数包括正整数,一个或者多个0-9组成,如:0,2,3,002,102
3.负整数,负号开头,数字部分由一个或者多个0-9组成,如-2,-012,-23,-00023
输入描述:包含数字的字符串
输出描述:所有整数的最小和
示例:
输入:
bb1234aa
 输出
10
 输入:
bb12-34aa
 输出:
-31
说明:1+2-(34)=-31
'''
# a = 'bb12-34aa'
# a = a.replace('12','')
# print(a)

a = input()
# print(len(a))
zs_list = [] #接收单个正整数
fs_list =[] #接收负整数字符串
i = 0
while i <len(a):
temp =a[i]
# 取正数
if a[i].isnumeric():
zs_list.append(a[i])
else:
#取负数字符串
if a[i] == '-':
b = a[i+1:] #截取负号后面的字符串
str1 = ''
for fs in b:
if fs.isnumeric():
str1+=fs
else:
break

if str1 != '':
fs_list.append('-'+str1)
i = i + len(str1)
i = i +1


zs_list.extend(fs_list)
sum =0
for x in zs_list:
sum = sum +eval(x)
print(sum)

#######草草草 开始最外层用for循环怎么搞也搞不出来,用while循环才行。因为for循环不支持改变循环的变量 i。而while循环支持
######还有用 for i in range(len(a)) 这种语法时,range(len(a)) 之后计数器就不会变了,循环把a值改了 然后a的长度比原来的短   循环到a的长度+1 就会报索引越界了
range(len(a)) 
posted @ 2022-04-25 21:27  心里日记  阅读(1702)  评论(1)    收藏  举报