# 类的定义与继承
# 文件名采用 小写英文_小写英文的写法
# 类名采用驼峰命名法
# __init__(self)方法相当于c中的构造函数
# 类中的属性在__init__(self)中初始化
class Animal:
def __init__(self, name, age, color):
self.name = name
self.age = age
self.color = color
def introduce(self):
return f"我是{self.name},今年{self.age}岁,{self.color}"
class ChineseCat(Animal):
def __init__(self, age, color):
# 调用父类方法用 super().
super().__init__('小猫', age, color)
class EnglishCat(Animal):
def __init__(self, age, color):
# 调用父类方法用 super().
super().__init__('Little Cat', age, color)
def introduce(self):
return f"I am a {self.name},{self.age} years old,my skin is {self.color}"
import math
print('\n**************************************** 注释 ****************************************\n')
print('单行注释 #')
print('多行注释 双三引号,单双都行')
# 单行注释
'''
多行注释
'''
# 数学函数
print('\n**************************************** 数学函数 ****************************************\n')
print("math.log2(10)=" + str(math.log2(10)))
# 变量赋值,长度,索引
print('\n**************************************** 变量,长度,索引 ****************************************\n')
a: bool = True
b: bool = False
print(str(a) + "/" + str(b))
s = 'HelloWorld'
print(s + '长度=' + str(len(s)))
print('索引1的值:' + s[1])
# 变量类型
print('\n**************************************** 变量类型 ****************************************\n')
print(type(a))
print(type(s))
# 输入
# user_age = int(input("请输入年龄:"))
# 条件 单行条件判断里如果有多个条件 可以用and/or/not 对应与/或/非
# if user_age < 18:
# print('未成年人')
# elif 18 <= user_age < 30:
# print('青年人')
# else:
# print('成年人')
# 单行条件判断里如果有多个条件 可以用and/or/not 对应与/或/非
# if not user_age >= 18:
# print('未成年人')
# elif user_age >= 18 and user_age < 30:
# print('青年人')
# else:
# print('成年人')
# 列表
print('\n**************************************** 列表 ****************************************\n')
shopping_list = ['键盘', '鼠标']
shopping_list.append('鼠标垫')
shopping_list.append(1)
shopping_list.append(False)
print(shopping_list)
print('列表长度:' + str(len(shopping_list)))
# 字典
print('\n**************************************** 字典 ****************************************\n')
name_num = {'小明': '0101010101',
'小花': '2112121212'}
# 修改/添加
name_num['小花'] = '323232233'
name_num['小草'] = '5555555'
print(name_num)
# 所有键、值、键值对
print('\n所有键、值、键值对')
print(name_num.keys())
print(name_num.values())
print(name_num.items())
# 判断是否包含
print(' ')
print('包含小关?' + str('小关' in name_num))
print('包含小草?' + str('小草' in name_num))
# 删除
print(' ')
del (name_num['小花'])
print(name_num)
# for循环
print('\n**************************************** for循环 ****************************************\n')
for name in name_num.keys():
print(name + ":" + name_num[name])
# 也可以这样写
for name, value in name_num.items():
print(name + ":" + value)
num_v = 0
for i in range(1, 101):
num_v += i
print('1+2+...+100=' + str(num_v))
# white循环
print('\n**************************************** white循环 ****************************************\n')
list1 = ['你', '好', '吗']
i = 0
while i < len(list1):
print(list1[i])
i += 1
# 示例
# print('\n*求平均值*\n')
# user_input = input('请输入数字,按=终止:')
# total = 0
# count = 0
# while user_input != '=':
# total += int(user_input)
# count += 1
# user_input = input('请输入数字,按=终止:')
# if count == 0:
# print(0)
# else:
# print(total/count)
# 字符串拼接
print('\n**************************************** 字符串格式化 format ****************************************\n')
message_content = '''
锄禾日当午,汗滴{0}下土。
谁知盘中餐,粒{1}皆辛苦。
'''.format('禾', '粒')
print(message_content)
print(
'\n**************************************** 字符串格式化 format 关键字 ****************************************\n')
message_content = '''
锄禾日当午,汗滴{n1}下土。
谁知盘中餐,粒{n2}皆辛苦。
'''.format(n1='禾', n2='粒')
print(message_content)
print('\n**************************************** 字符串格式化 f-字符串 ****************************************\n')
n1 = '禾'
n2 = '粒'
message_content = f'''
锄禾日当午,汗滴{n1}下土。
谁知盘中餐,粒{n2}皆辛苦。
'''
print(message_content)
print(
'\n**************************************** 数据格式化 保留几位小数 :.2f ****************************************\n')
name_float_dic = {'小明': 3.021, '小张': 32.111}
for name, value in name_float_dic.items():
print("{0}你好,你的当前绩点是:{1:.2f}".format(name, value))
print('\n**************************************** 函数定义 先定义,后调用 ****************************************\n')
def calculate_sector(p1, p2):
return p1 + p2
sun_value = calculate_sector(1, 2)
print(f"1+2={sun_value}")
# 引入模块的方式
import statistics
print(f'找出中位数[15,1,99]:{statistics.median([15, 1, 99])}')
from statistics import median, mean
print(f'找出中位数[15,1,99]:{median([15, 1, 99])}')
# 定义类及引用
print('\n**************************************** 定义类及引用 需要import ****************************************\n')
from class_animal import Animal
from class_animal import ChineseCat
from class_animal import EnglishCat
cat1 = ChineseCat(1, '白色')
cat2 = EnglishCat(1, 'yellow')
print(cat1.introduce())
print(cat2.introduce())
# 文件操作
print('\n**************************************** 读文件 ****************************************\n')
print('当前文件所在目录用./,也可以省略')
print('文件目录的上一级目录用../')
import os
print(f'data.txt所在目录的上级目录 {os.path.abspath('./../')}')
print('open()函数中传参 w代表只写模式 r代表只读模式 a代表附加模式 r+代表读取和追加模式')
# 打开文件
# file = open('./data.txt', 'r', encoding='utf-8')
# 读取整个文件
# print(file.read())
# 读取单行 可以配合 while读取到所有内容
# print(file.readline())
# 读取多行
# print(file.readlines())
# 关闭文件,用完一定要关闭
# file.close()
print('使用 with open() as 方式,作用域结束后自动关闭文件流')
with open('./data.txt', 'r', encoding='utf-8') as f:
print(f.read())
print('\n**************************************** 写文件 ****************************************\n')
print('当目标文件不存在时会自动创建')
with open('./data.txt', 'a', encoding='utf-8') as f:
f.write('\n大脸猫')
with open('./data.txt', 'r', encoding='utf-8') as f:
print(f'追加后:\n{f.read()}')
# 异常捕捉
print('\n**************************************** 异常捕捉 try except else finally ****************************************\n')
print('''
try
user_age = int("8岁")
user_weight = 1 / 0
except ValueError:
print('except:格式错误')
except ZeroDivisionError:
print('except:除数不能为0')
except:
print('不定义except类型,统统走这里')
else
print('如果try里面的语句没有任何错误,则会执行else里的语句')
finally
rint('不管是否触发except,都会执行finally里的语句')
''')
try:
user_age = int("8岁")
user_weight = 1 / 0
except ValueError:
print('except:格式错误')
except ZeroDivisionError:
print('except:除数不能为0')