python-字符串、列表、循环、判断基础语言运用习题练习

今天做的一道题,题目:
1、以格式"String_name , int_age ;"形式输入字符串。

  efwef   ,  23   ;

处理后然后以“左对齐20位显示,右对齐2位显示”。例如:

efwef               ,23

注意点:
(3-1)输入的格式中,玩家可任意输入空格;
(3-2)输入格式不对,给出对应报错信息;
(3-3)尽可能可循环重复使用;
(3-4)输出按照格式输出;
哪位测试大佬,来找下菜鸡代码存在的逻辑BUG!
求代码大佬指导简洁点的代码!

def digit():
    #2、处理数据
    Lists = instr.split(';')
    # print(Lists)
    del Lists[-1]
    # print(Lists)print(Lists)
    for list in Lists:
        name,age = list.split(',')
        name,age = name.strip(),int(age.strip())
    #3、按照要求排列数据
        a  = f'{name:<20},{age:>2}'
        print(a)
    info = True

#1、做输入内容处理
#1-1、判断是都有','、';'
def judge():
    def kill(i):
        if i == 0:
            print("输入内容中不包含基础字符','、';'!")
        elif i == 1:
            print("数据格式中不包含','!")
        elif i == 2:
            print("数据个数有异常,每条信息中不仅仅包含一个','!")
        elif i == 3:
            print("数据类型不对,请确认name与age值!")
    if (',' in instr) and (';' in instr):
        # 1-2、判断是否符合格式{},{};
        List0 = instr.split(';')
        del List0[-1]
        # print(List0)
        global N
        N = 0
        for list in List0:
            if ',' in list:
                # print(list.split(','))
                if len(list.split(',')) == 2:
                    # 1-3、判断格式中参数是否符合isalpha、isdigit
                    name0 = list.split(',')[0].strip().isalpha()
                    age0 =list.split(',')[1].strip().isdigit()
                    if name0 == True and age0 == True:
                        N += 1
                        continue
                    else:
                        kill(3)
                        break
                else:
                    print(list)
                    kill(2)
            else:
                print(list)
                kill(1)
            # print(N)
        if N == len(List0):
            digit()
            # global info该#处解锁注释,进进行一次正确运行!
            # info = True
    else:
        kill(0)
#数据获取
info = False
while info == False:
    # instr = 'asdfa,asdf,asdf;sdfas'
    instr = input(' 请按照String,number;的格式输入:')
    judge()

提供草稿代码,逻辑较为混乱,提笔就写的后果,浪费半小时;

'''
#1、获取数据
info = False
while info == False:
    # instr = ' ; '
    instr = 'jack , 234;milk     ,   23;msfeg     ,   223;'
    # instr = input('请输入对应的数据:')
    if ';' in instr:
        Lists0 = instr.split(';')#判定是否有‘ ;’ 符号,无则是格式错误,后续就不执行
        if Lists0 != []:#防止 ‘;’输入空格的数据,
            if len(Lists0) > 1:
                del Lists0[-1]
                i = 0
                for list0 in Lists0:
                    if ',' in list0:
                        print(list0)
                        name0,age0 = list0.split(',')[0].strip(),list0.split(',')[1].strip()
                        info_name = name0.isalpha()
                        info_age = age0.isdigit()
                        if (info_name ==True) and (info_age ==True):
                            digit()#调用数据处理
                            info = True
                            break #该处需要判断多处有问题的情况
                        else:
                            print('数据中存在异常数据')
                            info = True
                            break
                    else:
                        print("数据中‘,’有问题!")
                        info = True
                        break
    else:
        print("你的输入数据不包含';'或使用的全角")
        break
'''

你可能感兴趣的:(python-字符串、列表、循环、判断基础语言运用习题练习)