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']

-> ['广东省', '北京市', '上海市', '江西省', '湖南省', '浙江省', '江苏省']
相关推荐
张张123y2 分钟前
后端第九课:部署上线(把你的 FastAPI 后端真正跑起来给别人用)
python·docker·部署·fastapi
云勤通8 分钟前
智慧后勤系统哪家定制能力强
大数据·python
想七想八不如1140827 分钟前
元学习简单入门
人工智能·pytorch·python·深度学习·学习·机器学习
Zucker n33 分钟前
一款适合研究生科研工作安排的日历
linux·数据库·python
尼给路达哟1 小时前
node(koa)和python(fastapi)面试
python·面试·fastapi
曲径海盗3 小时前
【Python 学习第 32 天】字符串基础
python·学习笔记·编程入门
田里的水稻3 小时前
PyTorch_torchvision---数据集下载\TensorBoard可视化
人工智能·pytorch·python·深度学习·机器学习
程序员正茂3 小时前
Win11使用自定义训练集训练ncnn模型
python·yolo·图像识别·移动端·ncnn
zwd20053 小时前
Manim 画布尺寸与像素换算详解:frame_width、frame_height、pixel_width 和画质参数(0.21.0 实测)
python·分辨率·manim·数学动画·frame_width·manim教程
最强小杰3 小时前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai