给一个字符串,转换成数字整数,若包含非法字符,返回提示,正确则反回整数值,不能使用内置函数转换


"""
思路过程:
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  不是整数
posted @ 2020-08-01 17:27  chenzy01  阅读(285)  评论(0编辑  收藏  举报