• python3的数据类型转换问题


    问题描述:在自我学习的过程中,写了个登陆,在input处,希望能够对数据类型进行判断,但是因为python3的输入的数据会被系统默认为字符串,也就是1,1.2,a。都会被系统默认为字符串,这个心塞啊,难受啊。我不接受强制类型转换,先贴代码,供大家参考,希望大神能够给出优化代码。多谢

      ps:来自某小白的问题

    #!/user/bin/env python
    #coding:utf-8
    
    #Author:shenqiang
    import json
    
    '''分离用户名输入和密码输入的函数'''
    def infoUsername():
        '''
        输入用户名
        :return: username  用户名
        '''
        username = input('请输入您注册的用户名:
    ')
        return username
    
    def infoPassword():
        '''
        输入密码
        :return:password 密码
        '''
        password = input('请输入您注册的密码:
    ')
        return password
    
    '''
    注册
    '''
    def register(username,password):
        '''
        注册
        :parameter: username 用户名
        :parameter:password 密码
        :return:
        '''
        temp = username+'|'+password
        '''改写,序列化和反序列化'''
        json.dump(temp,open('login', 'w'))
        # f = open('login','w')
        # f.write(temp)
        print('恭喜{0},注册成功!'.format(username))
    
    '''
    1。模拟登陆
    2。模拟登陆成功后,用户现实登陆状态
    3。模拟注册
    '''
    def login(username,password):
        '''
        登陆
        :param username:登陆系统的账号
        :param password:登陆系统的账号的密码
        :return: True:登陆成功 False:登陆失败
        '''
        # f = open('login','r')
    
        '''改写,序列化和反序列化'''
        f = str(json.load(open('login','r')))
        list1 = f.split('|')
        if list1[0] == username and list1[1] == password:
            return True
        else:
            return False
    
        # for line in f:
        #     # 将字符串转化成列表
        #     list = line.split('|')
        #     if list[0] == username and list[1] == password:
        #         return True
        #     else:
        #         return False
    
    
    '''
    查询用户信息
    '''
    def info(username,password):
        '''拿到文件的用户名和密码'''
    
        # lines = open('login','r')
        # for line in lines:
        #     list1 = line.split('|')
    
        '''改写,序列化和反序列化'''
        f = str(json.load(open('login', 'r')))
        list1 = f.split('|')
        '''验证用户等登陆是否成功'''
        r = login(username,password)
        if r:
            print('登陆成功!用户昵称为:{0}'.format(list1[0]))
        else:
            print('登陆失败!请检查您的账号和密码!')
    
    '''
    退出系统
    '''
    def exit():
        '''退出系统'''
        import sys
        sys.exit(1)
        print('您已退出该系统!')
    
    '''
    主函数
    '''
    def main():
        '''调用上面的方法和属性'''
        while True:
            try:
                # t = int(input('1。注册;2。登陆;3。退出登陆 
    '))
                t = int(input('1。注册;2。登陆;3。退出登陆 
    '))
                '''
                python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
                '''
                print(type(t))
                if isinstance(t,float):
                    t = int(t)
                if isinstance(t,str):
                        if len(t)==1:
                            t = ord(t)
            except Exception as e:
                print(e.args)
            else:
                if t == 1:
                    username = infoUsername()
                    password = infoPassword()
                    register(username,password)
                elif t == 2:
                    username = infoUsername()
                    password = infoPassword()
                    login(username,password)
                    info(username,password)
                elif t == 3:
                    exit()
                else:
                    print('输入错误,请重新输入!')
            finally:
                print('')
    
    if __name__ == '__main__':
        main()

    问题部分:
    '''
    主函数
    '''
    def main():
        '''调用上面的方法和属性'''
        while True:
            try:
                # t = int(input('1。注册;2。登陆;3。退出登陆 
    '))
                t = int(input('1。注册;2。登陆;3。退出登陆 
    '))
                '''
                python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
                '''
                print(type(t))
                if isinstance(t,float):
                    t = int(t)
                if isinstance(t,str):
                        if len(t)==1:
                            t = ord(t)
            except Exception as e:
                print(e.args)
            else:
                if t == 1:
                    username = infoUsername()
                    password = infoPassword()
                    register(username,password)
                elif t == 2:
                    username = infoUsername()
                    password = infoPassword()
                    login(username,password)
                    info(username,password)
                elif t == 3:
                    exit()
                else:
                    print('输入错误,请重新输入!')
            finally:
                print('')
    
    if __name__ == '__main__':
        main()






  • 相关阅读:
    python接口测试3-JSON格式
    python接口测试2-开发WEB接口
    接口测试1-基础
    Apifox接口测试管理工具
    python的pip安装超时问题解决
    ubuntu解决安装速度问题
    vim进入粘贴模式
    禅道数据库
    内存管理
    文件操作
  • 原文地址:https://www.cnblogs.com/shen-qiang/p/10671901.html
Copyright © 2020-2023  润新知