python优化代码

编程解决两大问题:数据如何存储、数据怎么处理
问题:输入3个工程师信息,判断输入数据的正确性,输出工程师信息,将信息保存到文件

存储数据的方式1:变量,编程方式:面向过程线性编程

name1 = input('姓名:')#屏幕上提示"姓名:",用户输入后,存入name
gender1 = input('性别:')
age1 = int(input('年龄:'))

name2 = input('姓名:')#屏幕上提示"姓名:",用户输入后,存入name
gender2 = input('性别:')
age2 = int(input('年龄:'))

name3 = input('姓名:')#屏幕上提示"姓名:",用户输入后,存入name
gender3 = input('性别:')
age3 = int(input('年龄:'))

print(name1,gender1,age1)# 查看内存中name处的数据
print(name2,gender2,age2)# 查看内存中name处的数据
print(name3,gender3,age3)# 查看内存中name处的数据

缺点:占内存太多,代码重复,数据与代码不分离

数据存储方式:列表,编程方式:面向过程线性编程

engineers = [] # 将来存储所有工程师信息
name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
engineers.append([name,gender,age]) # 把变量存入列表

name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
engineers.append([name,gender,age]) # 把变量存入列表

name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
engineers.append([name,gender,age]) # 把变量存入列表

print (engineers)

优点:变量定义减少,只有3个变量,减少内存占用
缺点:代码有重复,数据与代码不分离
列表缺点:占用内存比变量少,代码重复,数据与代码不分离,数据含义不清晰

字典

engineers = [] # 列表

name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
e = {'name':name,'gender':gender,'age':age} # 字典
# print (e) # 调试代码
engineers.append(e) # 把字典e加入到enginners中

name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
e = {'name':name,'gender':gender,'age':age}
engineers.append(e)

name = input('姓名:')
gender = input('性别:')
age = int(input('年龄:'))
e = {'name':name,'gender':gender,'age':age}
engineers.append(e)

print(engineers)

字典的特点:占用内存比变量少,代码重复,数据与代码不分离,但数据的含义清晰

循环:处理代码的方式,代码是处理数据的

engineers = [] # 空列表

# for i in range(3): # 0~2
while i<=3:
    print('请输入第%s个人信息'%(i))
    name = input('姓名:')
    gender = input('性别:')
    age = int(input('年龄:'))
    if 18<=age<=65:
        e = {}
        e['name'] = name
        e['gender'] = gender
        e['age'] = age
        engineers.append(e)
        i=i+1 # 下一个
    else:
        print('年龄只能输入18~65')
print(engineers)

循环的特点:极大减少代码重复,但还是线性的面向过程编程

函数

def input_info(): # 输入数据
    engineers = []
    i = 1
    while i<=3: # 1~3
        print('请输入第%s个人信息' % (i))
        name = input('姓名:')
        gender = input('性别:')
        age = int(input('年龄:'))
        if decide(age):
            e = {'name':name,'gender':gender,'age':age}
            engineers.append(e)
            i=i+1
        else:
            print ('年龄只能输入18~65')
    return engineers

def output(engineers = []): # 输出数据
    for e in engineers: # e表示engineers列表中的元素(字典)
        for k,v in e.items():
            print (k,v)

def decide(age): # 判断数据正确性
    if 18<=age<=65:
        return True
    else:
        return False
print(input_info())
es = input_info() # 结果列表存入es
output(es)

class InOut:
    def input_info(self):  # 输入数据,self相当于java中的this
        self.engineers = []
        i = 1
        while i <= 3:  # 1~3
            print('请输入第%s个人信息' % (i))
            name = input('姓名:')
            gender = input('性别:')
            age = int(input('年龄:'))
            if self.decide(age):
                e = {'name': name, 'gender': gender, 'age': age}
                self.engineers.append(e)
                i = i + 1
            else:
                print('年龄只能输入18~65')
        # return engineers

    def output(self):  # 输出数据
        for e in self.engineers:  # e表示engineers列表中的元素(字典)
            for k, v in e.items():
                print(k, v)

    def decide(self,age):  # 判断数据正确性
        if 18 <= age <= 65:
            return True
        else:
            return False

if __name__ == '__main__': # 调试代码,自己测试的代码
    a = InOut() # a是对象
    es = a.input_info()
    a.output()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值