python实训day1

1、

python 复制代码
dd2 = dict(id=101, name='小明', age=23, score=[90, 67, 98])
print(dd2)
print()
print('dd2.id ->', dd2.get('id'))  # 101
print('dd2.age ->', dd2.get('age'))  # 23
print()
"""
  字典数据由三部分组成:
  1、键集
  2、值集;
  3、元素集;就是一个字典中的多个键值对的集合  
"""
print('键值对数量 ->', dd2.__len__())
print()
# 键集
print("*** 键集 ***")
keys = dd2.keys()
print(keys)
print("*** 值集 ***")
# 值集
values = dd2.values()
print(values)
# 元素集;  一个元素就是一个键值对,就是一个元组
print("*** 元素集 ***")
for d in dd2.items():
    print(d)
python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 
{'id': 101, 'name': '小明', 'age': 23, 'score': [90, 67, 98]}

dd2.id -> 101
dd2.age -> 23

键值对数量 -> 4

*** 键集 ***
dict_keys(['id', 'name', 'age', 'score'])
*** 值集 ***
dict_values([101, '小明', 23, [90, 67, 98]])
*** 元素集 ***
('id', 101)
('name', '小明')
('age', 23)
('score', [90, 67, 98])

Process finished with exit code 0

2、

python 复制代码
print()
# 创建一个字典
dd1 = {"id": 1024, "name": "王小明", "age": 21,
       "score": [77, 88, 98, 45]}
# 整体输出
print(dd1)
print()
# 输出所有的键
keys = dd1.keys()
print(keys)
print()
# 输出字典中的所有值
values = dd1.values()
print(values)
print()
# 输出所有的键值对
for d in dd1.items():
    print(d)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 

{'id': 1024, 'name': '王小明', 'age': 21, 'score': [77, 88, 98, 45]}

dict_keys(['id', 'name', 'age', 'score'])

dict_values([1024, '王小明', 21, [77, 88, 98, 45]])

('id', 1024)
('name', '王小明')
('age', 21)
('score', [77, 88, 98, 45])

Process finished with exit code 0

3、

python 复制代码
dd1={}
print('type(',dd1,')->',type(dd1),sep='')
aa=[]
print('type(',aa,')->',type(aa),sep='')
dd1['id']=1024
dd1['name']='张'
dd1['age']=25
dd1['score']=[67,78,58,25,64]
print(dd1)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 
type({})-><class 'dict'>
type([])-><class 'list'>
{'id': 1024, 'name': '张', 'age': 25, 'score': [67, 78, 58, 25, 64]}

Process finished with exit code 0

4、

python 复制代码
import json
class Base(object):
    def __init__(self, id, name, age):  # 相当于Java中的构造器
        self.id = id
        self.name = name
        self.age = age
    def hello(self):  # 类中的一个普通实例方法,用类对象调用
        print("*** hello,Base ***")
    def __str__(self):  # 相当于Java中的toString方法,在此重写对象
        return json.dumps(self, indent=4, ensure_ascii=False,
                          default=lambda o: o.__dict__)
b1 = Base(1112, "jack", 23)
print(b1)
print(b1.id)
print(b1.name)
print(b1.age)
print()
class MyUtilClass(object):
    def __str__(self):  # 相当于Java中的toString方法,在此重写对象
        return json.dumps(self, indent=4, ensure_ascii=False,
                          default=lambda o: o.__dict__)
class Person(MyUtilClass):
    pass
p = Person()  # 此处调用默认的无参构造器创建Person对象
p.__setattr__("name", "张小三")
p.__setattr__("age", 22)
p.__setattr__("address", '中国 山东 泰安')
print(p)
print('name ->', p.name)
print('age ->', p.age)
print('address ->', p.address)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test2.py 
{
    "id": 1112,
    "name": "jack",
    "age": 23
}
1112
jack
23

{
    "name": "张小三",
    "age": 22,
    "address": "中国 山东 泰安"
}
name -> 张小三
age -> 22
address -> 中国 山东 泰安

Process finished with exit code 0

5、

python 复制代码
class Student(object):
    def __init__(self, id=None, name=None, age=None):
        self.id = id
        self.name = name
        self.age = age

s2 = Student()  # 不提供参数,使用默认值
s2.id = "1023"
s2.name = "张三"
s2.age = "20"

print(s2.id)
print(s2.name)
print(s2.age)

运行结果:

python 复制代码
1023
张三
20

6、

python 复制代码
import json
filename="../files/student.json";
print()
print('filename -> ', '\'', filename, '\'', sep='')
print()
with open(filename,'r',encoding='utf-8')as ff:
    print("将文件内容以字符串形式输出")
    rr=ff.read()
    print(rr)
    print()
    print("将文件内容处理为一个字典对象")
    dic=json.loads(rr)
    print(dic)
    print(type(dic))
    print()
    js=json.dumps(dic,ensure_ascii=False)
    print(js)
    print(type(js))

运行结果:

python 复制代码
将文件内容以字符串形式输出
{
  "id": 1024,
  "name": "王小明",
  "age": 21,
  "score": [
    77, 88, 98
  ]
}

将文件内容处理为一个字典对象
{'id': 1024, 'name': '王小明', 'age': 21, 'score': [77, 88, 98]}
<class 'dict'>

{"id": 1024, "name": "王小明", "age": 21, "score": [77, 88, 98]}
<class 'str'>

7、用最简洁的方法生成一个一维整型数组,共计17个元素,每个元素都在10-150之间。要求升序排列,降序排列,统计数组的最大值,最小值,平均值。

法一:

python 复制代码
import random

a= [random.randint(10, 150) for i in range(7)]

# 升序排列数组
arr_asc = sorted(a)
print(arr_asc)

# 降序排列数组
arr_desc = sorted(a, reverse=True)
print(arr_desc)

# 统计数组最大值、最小值、平均值
max_val = max(a)
min_val = min(a)
avg_val = sum(a) / len(a)

print("最大值:", max_val)
print("最小值:", min_val)
print("平均值:", avg_val)

运行结果:

python 复制代码
[20, 30, 44, 77, 134, 145, 148]
[148, 145, 134, 77, 44, 30, 20]
最大值: 148
最小值: 20
平均值: 85.42857142857143

法二:

python 复制代码
from random import randint
nn = 7
arr = [randint(10, 150) for k in range(nn)]
print("*** 原始数组 ***")
for elem in arr:
    print('->', elem)
print("*** 升序 ***")
arr.sort()
for elem in arr:
    print('->', elem)
print("*** 降序 ***")
arr.sort(key=lambda e: -e)
total = 0
for elem in arr:
    total += elem
    print('->', elem)
print("*** 最值 ***")
print('max ->', arr[0])
print('min ->', arr[-1])
print('average ->', total / nn)

运行结果:

python 复制代码
*** 原始数组 ***
-> 61
-> 29
-> 65
-> 62
-> 111
-> 33
-> 133
*** 升序 ***
-> 29
-> 33
-> 61
-> 62
-> 65
-> 111
-> 133
*** 降序 ***
-> 133
-> 111
-> 65
-> 62
-> 61
-> 33
-> 29
*** 最值 ***
max -> 133
min -> 29
average -> 70.57142857142857

8、从一个名为dept.txt的文件中读取数据,将这些数据存储在一个Dept类的实例中,并将所有实例存储在一个名为depts的列表中。

python 复制代码
from ming import BaseClass
class Dept(BaseClass):
    pass
depts = []
names = ['deptno', "dname", 'loc']
nn = names.__len__()
with open("../files/dept.txt", 'r', encoding="UTF-8") as ff:
    rr = ff.read()
    rows = rr.split("\n")
    for row in rows:
        cols = row.split(",")
        dept = Dept()
        for i in range(nn):
            dept.__setattr__(names[i], cols[i])
        depts.append(dept)
for dept in depts:
    print(dept)

ming.py

python 复制代码
import json
import random
import time
'''
  生成一个随机整数,如果无参,则返回100以内的整数
  如果传递了参数,则返回0-参数间的随机整数
'''
def rnd(value=100):
    return int(random.random() * value)
'''
  输入两个整数参数,返回两数之间的随机值
'''
def rd(a=0, b=100):
    return int(a + random.random() * (b - a))
'''
  一个通用的父类,主要是在输出类对象时,以JSON的方式输出
'''
def tojson(dic):
    return json.dumps(dic, indent=4, ensure_ascii=False,
                      default=lambda o: o.__dict__)
class BaseClass(object):
    def __str__(self):
        return json.dumps(self, indent=4,
                          ensure_ascii=False,
                          default=lambda obj: obj.__dict__)
'''
  以 10 进制表示的RGB 颜色
'''
def rgb():
    return 'rgb(' + str(random.randint(0, 255)) + "," + str(
        random.randint(0, 255)) + ',' + str(
        random.randint(0, 255)) + ")"
'''
  16 进制颜色
'''
def hexcolor():
    cstr = 'ABCDEF01234567890'
    rr = '#'
    for i in range(6):
        rr += cstr[rnd(len(cstr))]
    return rr
'''
  一个用于统计函数运行时间的装饰器类
'''
class MyTimer:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        begin = time.time()
        val = self.func(*args, **kwargs)
        end = time.time()
        print(f'用时 : {end - begin} 秒!')
        if val is not None:
            print('->', val)
'''
  一个用于带异常处理函数的装饰器类
'''
class ExpTry:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        try:
            ret = self.func(*args, **kwargs)
            if ret is not None:
                print('返回 ->', ret)
        except Exception as err:
            print('出错信息: ', err)
        return
'''
  一个用于统计时间的装饰器类
'''
class TimeIt:
    def __init__(self, prefix, postfix):
        self.prefix = prefix
        self.postfix = postfix
    def __call__(self, func):
        def wrapper(*args, **kwargs):
            start = time.time()
            val = func(*args, **kwargs)
            if val is not None:
                print('返回 ->', val)
            end = time.time()
            print(
                f'{self.prefix} : {end - start} {self.postfix}!')
        return wrapper

运行结果:

python 复制代码
{
    "deptno": " 10",
    "dname": "ACCOUNTING",
    "loc": "NEW YORK"
}
{
    "deptno": " 20",
    "dname": "RESEARCH",
    "loc": "DALLAS"
}
{
    "deptno": " 30",
    "dname": "SALES",
    "loc": "CHICAGO"
}
{
    "deptno": " 40",
    "dname": "OPERATIONS",
    "loc": "BOSTON"
}

9、

python 复制代码
from pyecharts.faker import Faker
# 产生七种动物
animals = Faker.animal
print(type(animals))
for animal in animals:
    print('->', animal)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种水果
fruits = Faker.fruits
for fruit in fruits:
    print('->', fruit)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种饮料
drinks = Faker.drinks;
for drink in drinks:
    print('->', drink)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种0-150之间的随机整数
values = Faker.values()
for value in values:
    print('->', value)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种服装
clothes = Faker.clothes
for clothe in clothes:
    print('->', clothe)

运行结果:

python 复制代码
-> 河马
-> 蟒蛇
-> 老虎
-> 大象
-> 兔子
-> 熊猫
-> 狮子
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 草莓
-> 芒果
-> 葡萄
-> 雪梨
-> 西瓜
-> 柠檬
-> 车厘子
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 可乐
-> 雪碧
-> 橙汁
-> 绿茶
-> 奶茶
-> 百威
-> 青岛
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 33
-> 58
-> 39
-> 68
-> 89
-> 75
-> 23
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 衬衫
-> 毛衣
-> 领带
-> 裤子
-> 风衣
-> 高跟鞋
-> 袜子

10、

python 复制代码
from pyecharts.faker import Faker
# 产生16进制的随机颜色
for i in range(5):
    print('->', Faker.rand_color())
print()
# 产生一周的日期
weeks = Faker.week
print(weeks)
print()
# 产生七个国家
cc = Faker.country
for c in cc:
    print('->', c)
print()
# 产生七种名车
cars = Faker.cars
for car in cars:
    print('->', car)
print()
# 产生七种名犬
dogs = Faker.dogs
for dog in dogs:
    print('->', dog)
print()
# 产生 12 月份
months = Faker.months
print('->', months)
print()
# 产生七种手机品牌
phones = Faker.phones
print(phones)
print()
# 产生七个省或直辖市
provinces = Faker.provinces
print('->', provinces)

运行结果:

python 复制代码
-> #bda29a
-> #c23531
-> #d48265
-> #1d953f
-> #f05b72

['周一', '周二', '周三', '周四', '周五', '周六', '周日']

-> China
-> Canada
-> Brazil
-> Russia
-> United States
-> Africa
-> Germany

-> 宝马
-> 法拉利
-> 奔驰
-> 奥迪
-> 大众
-> 丰田
-> 特斯拉

-> 哈士奇
-> 萨摩耶
-> 泰迪
-> 金毛
-> 牧羊犬
-> 吉娃娃
-> 柯基

-> ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']

['小米', '三星', '华为', '苹果', '魅族', 'VIVO', 'OPPO']

-> ['广东省', '北京市', '上海市', '江西省', '湖南省', '浙江省', '江苏省']
相关推荐
databook1 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar3 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780513 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_3 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机10 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机11 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i11 小时前
drf初步梳理
python·django
每日AI新事件11 小时前
python的异步函数
python