给一个字符串,转换成数字整数,若包含非法字符,返回提示,正确则反回整数值,不能使用内置函数转换
"""
思路过程:
1. 将正整数字符串转化为数字类型整数,以及字符串前面带有“+”
2. 将字符串前面带有“-”的负整数转化为数字类型整数
3. 判断 “+”,“-”是否在字符串中,且在第一位
4. 判断字符串是否是数字字符串,用 isdigit() 方法
"""
def autoint(str_num):
flag = False
list_num = list(str_num) # list(str),可以将一个字符串拆分成单个字符,以列表的方式返回
if list_num[0] in ("+", "-"):
strtoint = "".join(list_num[1:]) # 字符串操作,截取第二位到最后一个,然后组合成字符串
if strtoint.isdigit():
t = "%s * 1" % strtoint
'''
eval() :将字符串str当成有效的表达式来求值并返回计算结果,了应用这个特点,先构造字符串与1相乘的表达式,
再用eval()算出该表达的值并返回
'''
rul = eval(t)
return rul
else:
return flag
else:
if str_num.isdigit():
t = "%s * 1" % str_num
rul = eval(t)
return rul
else:
return flag
list1 = ["9898-", "+889", "-93", "12", "22*(", "+-56"]
print("检查前的值:", list1)
print("检查后的值:")
for v in list1:
r = autoint(v)
if r:
print(v, " 是整数", r)
else:
print(v, " 不是整数")
检查前的值: ['9898-', '+889', '-93', '12', '22*(', '+-56']
检查后的值:
9898- 不是整数
+889 是整数 889
-93 是整数 93
12 是整数 12
22*( 不是整数
+-56 不是整数
您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!