cms建站,大朗镇网站仿做,山东淄博网站建设公司,桂林两江四湖属于哪个区最近又重新开始学python#xff0c;浅浅记录下学习到的东西#xff08;也方便自己回顾看#xff09; 缩进、空格对于python很重要#xff0c;一定要注意#xff01; 以下代码是基于pycharm编写的。
01 输出
#注释
# 单行注释用# #xff0c;ctrl/是单行注释的快捷键
# …最近又重新开始学python浅浅记录下学习到的东西也方便自己回顾看 缩进、空格对于python很重要一定要注意 以下代码是基于pycharm编写的。
01 输出
#注释
# 单行注释用# ctrl/是单行注释的快捷键
# 多行注销全部选中按住ctrl/
# 多行注释在python是用或但不是很推荐#输入输出 %占位符,后面跟的是变量的类型
# print 函数自带换行效果
name张阳
classinfo新世纪中学一年三班
age17
print(我的名字是%s来自%s今年%d%(name,classinfo,age )) #%S表示字符型%d表示整数型#基础输出语句
print(He said \Lets go!\) #\ means 转义符
print(He said \Let\s go!\) #the same result as the 1st floor
print(Hello! \nHi!) #\n means 另起一行
print(hello! hahaha) #两个字符组合在一起输出#对字符串求长度
s Hello world!
print(len(s))#通过索引获取单个字符数组是从0开始计数的
print(s[0])# 布尔类型
b1True
b2False
#空值类型
nNone
#type 函数 输出数据类型
print(type(s))
print(type(b1))
print(type(n))# 举例
#BMI计算
user_weight float(input(请输入您的体重单位kg)) #输入的是字符所以需要转为float数
user_height float(input(请输入您的身高单位m))
user_BMIuser_weight /(user_height ** 2)
print(您的BMI值为str(user_BMI)) #需要转换成str字符类型才可以输出02 基础数值计算
import math
a-1
b-2
c3
x1(-bmath.sqrt( b**2 -4*a*c))/(2*a)
x2(-b-math.sqrt( b**2 -4*a*c))/(2*a)
print(x1,x2)#if-elif 的使用
#多分支猜拳的小游戏
import random
personint(input(请出拳[0石头1剪刀2布]))
computerrandom.randint(0,2) #在0到2之间取随机整数
if person2 or person 0 :print(请输入正确的数字)
elif (person0 and computer 1) or (person1 and computer 2) or (person2 and computer 0):win1print(计算机输出为%d %computer )print(恭喜您获胜)
elif personcomputer :win0print(计算机输出为%d % computer)print(平局再来一次吧)
else :win-1print(计算机输出为%d % computer)print(很遗憾您输了)# 举例
#打印一个直角三角形
row1
while row7:j1while jrow:print(*,end ) #这个end保证此print不换行下面有个print()是为了有个换行j1print()row1#打印一个等腰三角形
heightint(input(请输入想要的等腰三角形的高))
standard0
while standard height:leftheight-standardrightheightstandardwhile left2:print( , end )left-1left height - standardwhile leftright :print(*,end )left1print()standard1#for 循环适合有限次的循环;适合遍历集合
tags我是不是一个人
for item in tags: #从tags中取值遍历进行输出 tags是字符串类型本身就是一个字符类型的集合print(item)#range 此函数可以用来生成一个数据集合列表
range(起始,结束,步长 步长不可为0默认步长为1
for data in range(1,101): #起始数字左边包含结束数字右边不包含print(data,end )if data % 100:print()03 列表
# 在python 序列就是一组按照顺序排列的值即数据集合
# 有三种内置的序列类型字符串、列表、元组
# 切片可以根绝下标获取序列对象的任意部分)数据
namepeter
print(姓名首字母变成大写%s%name.capitalize() ) #首字母变大写# list: 列表是一种有序的数据集合。
# 支持增删改查、数据项可以变化内存地址不会改变。
# 用[]表示列表数据项之间用逗号来分割数据项可以是任何类型的数据。支持索引和切片来进行操作shopping_list [] #创建列表
shopping_list.append(键盘) #添加字符串
shopping_list.append(键帽)
shopping_list.remove(键帽) #移出
shopping_list.append(音响)
shopping_list.append(电竞椅)print(shopping_list)
print(len(shopping_list)) #输出长度
print(shopping_list[0]) #输出排在第一个位置的元素price [799, 1024, 200, 800]
max_price max(price)
min_price min(price)
sorted_price sorted(price) #排序
print(max_price,min_price )
print(sorted_price)li[1,2,3,您好,8,9,10]
print(type(li))
print(len(li)) #获取字符串的长度
print(li[0]) #输出第一个元素
print(li[1:]) #获取从第二个元素开始到最后的元素
print(li[: : -1]) #-1表示倒序输出从右往左输出
print(li *2) #表示重复输出两次
li.append([hello,goodbye]) #末尾新加
li.insert(4,这是我刚插入的数据) #在第四个位置后进行信息插入
print(追加之后1,li)
rsDatelist(range(10)) #强制转换成为list对象
li.extend(rsDate ) #扩展批量增加
print(追加之后2,li)
li[0]peter #对第一个元素进行修改
print(修改之后1,li)
del li[0] #删除列表中的第一个元素
print(修改之后2,li)
del li[1:3] #批量删除删除第二到第三的所有数据
print(修改之后3,li)
li.remove(0) #移出为0的指定项,只能移除找到的第一个指定元素
print(修改之后4,li)
li.pop(5) #移出指定位置的香比如这里移出第六个项
print(修改之后5,li)
print(li.index(8)) #查找8所在的位置04 元组/字典简单使用
# 元组用不可变添加删除不可使用
# 元组是一种不可变的序列在创建后不可做任何的修改。
# 用来创建元组数据项用逗号来分割可以是任何的类型。
# 当元组中只有一个元素是要加上逗号不然解释器会当做整形来处理
tupleA () #创建空元组
tupleA (abcd,89,2.22,marry,[11,22,33,44]) #对空元组进行赋值
print (tupleA)
#元组的查询
for item in tupleA : #依旧可以遍历print(item, end )
print()
print(tupleA [2]) #可以通过索引获得单个元素
print(tupleA [:: -1]) #反转
print(tupleA [:: -2]) #隔两个取一次反转
tupleA [4][0] 2223 #可以对元组中的列表元素进行修改这里是对列表的第一个元素进行修改但是元组中非列表的其他元素就不可以修改
print(tupleA )#一个字典k可以进行查询
# 字典由键值对组成的集合通常使用键来访问数据支持对数据的添加、修改、删除
# 不是序列类型没有下标的概念是一个无需的键值组合。用{}来表示字典对象每个键值对用逗号分离
# 键必须是不可以变的类型。值可以是任意的类型。每个键是唯一的如果出现重复的键后者会覆盖前面的
slang_dict {巨星年代:来了吗,卷王时代:啥时候过去} #创建了长度为2的词典
slang_dict[双减] 书本简单了考试依旧难
slang_dict[破防] 破了你的防御
queryinput(请输入你想要查询的流行语)
if query in slang_dict : #判断查的词是否在字典中print(您查询的 query 含义如下)print(slang_dict [query])
else:print(当前本词典收录词条数为 str(len(slang_dict )) 条。)# 字典再举例
dictA{} #创建一个空字典
dictA [name]扬不养 #添加字典数据。keyname。value扬不养
print(dictA )
dictA [age]103
print(dictA )
dictB{pro:艺术,school:家里蹲大学} #也可以在新建字典的时候之间添加字典数据
print(dictB )
print(len(dictB )) #以逗号分割为一项故上面的dictB只有两项
print(dictA [name]) #取键值
dictA[name]王不枉 #修改键对应的值
print(dictA )
print(dictA .keys()) #打印 所有的键
print(dictA .values()) #打印所有的值
05 函数使用
#定义函数
def calculate_sector_1(central_angle, radius):#接下来是一些定义函数的代码sector_area central_angle /360 *3.14* radius **2print(f此扇形面积为{sector_area})calculate_sector_1(160,30)def calculate_bmi (weight, height):bmifloat(weight)/float(height) **2if bmi18.5:label偏瘦elif bmi 25 :label 正常elif bmi30:label 偏胖else:label 肥胖print(您的BMI分类为 label)print(您的BMI为: str(bmi))return bmicalculate_bmi(70,1.8)
#函数使用练习2
#定义一个学生类
#能够设置学生某科目的成绩
#能够打印出该学生的所有科目成绩class Student:def __init__(self, name, student_id): #init这是固定格式self.name nameself.student_id student_idself.grades {语文: 0, 数学: 0, 英文: 0}def set_grade(self, course,grade): #self是固定必须有的if course in self.grades:self.grades[course]gradedef print_grades(self):print(f学生{self.name}(学号 {self.student_id})的成绩为)for course in self.grades:print(f{course}: {self.grades[course]}分)chen Student(小陈,100663)
zeng Student (小曾,100633)
print(chen.name)
zeng.set_grade(数学,95)
zeng.set_grade(语文,94)
zeng.set_grade(英文,93)
print(zeng.grades )
zeng.print_grades()# 函数使用练习3可变函数
# 可变参数:当参数个数不确定时使用比较灵活
# 计算累加和
# 可变参数*接收的是元组类型**接收的是字典类型
def getComputer(* args) :print(args)result0lengthint(len(args))while length0 :resultresultargs[length-1]length-1另一种求和方式for item in args:resultitemprint(result)getComputer(1,2,3,4,5)# 关键字可变参数用**来定义
# 在函数体内参数关键字是一个字典类型key是一个字符串
def keyFunc(**kwargs) :print(kwargs )
dictC{name:Pipi,age:32}
# keyFunc(dictC) #这样是不可以的
keyFunc( **dictC) #这样是可以的
keyFunc(namepeter,age22) # 这样是可以的是以键值对的方式进行传递# 函数练习使用4
# 写函数接收n个数字求这些参数数字的和
def adder(*number):sum0for item in number :sumitemreturn sum
print(adder(1,2,3,4,5,8))
# 写函数找出传入列表或元组的奇数位对应的元素并返回一个新的列表
def process(con):listNew[]index1for i in con :if index %2 1: #判断奇数位listNew.append(i)index1return listNew
print(process([1,2,3,4,4,5,6,7,8,9,10,11]) )
# 写函数检查传入字典的每一个value的长度如果大于2那么保留前两个长度的内容并将新内容返回给调用者。PS字典中的value只能是字符串或列表
def dictD (dictparms):result{}for key, value in dictparms .items(): #返回的是字典的数据项if int(len(value)) 2:result[key]value[:2] #向字典去添加数据else:result[key]valuereturn result
dictDD{name:bibi,age:22,hobby:baseball,saygoodbye:[no,hay,bye,5,6]}
# 注意上面的22需要加因为不加就是int型int不可以用len
print(dictD(dictDD ) )# 匿名函数没有名字的函数后面自带的表达式只有一个,只能实现简单的功能
# 语法结构 lambda 参数1、参数2、参数3表达式
Mlambda x,y:xy #通过变量去调用匿名函数
print(M(22,26))06 类的使用
# 面向对象编程 OOP object oriented programming
# 面向过程是按照解决问题的步骤开始写的
# 类是一组具有相同或相似属性、特征、行为的一系列对象的集合
# 对象类的实例化、具象化
#
class Person:name小明 #类属性表示直接归属于类的属性age18def __init__(self,id): #实例属性可理解为默认的初始值self.idA111111def eat(self): #实例方法在类的内部使用def关键字来定义第一个参数默认是selfprint(大口大口吃饭)def run(self):print(一点也跑不动不喜欢长跑)xmPerson (333) #创建一个对象333指的是id
xm.eat() #调用函数
xm.run()
print({}的年龄是{}.format(xm.name,xm.age))class People:def eat(self):print(需要吃一日三餐)samPeople ()
sam.eat()
sam.age22 #添加的是实例属性
sam.sexmale# self和对象指向同一个内存地址可以认为self就是对象的引用
class Human:def eat(self): #实例方法print(self)
xwHuman()
xw.eat()# 析构方法 相当于所有程序用一遍后最后使用del自动删除释放内存空间
class Animal:def __init__(self,name ):self.namenameprint(这是析构方法的初始化)def __del__(self): #主要的应用就是操作对象的释放一旦释放完毕对象便不能再使用print(这是析构方法)catAnimal (狸花)# python中展现面向对象的三大特征封装、继承、多态
# 封装指的是把内容封装到某个地方便于后面的使用。
# 继承子可以继承父的内容。
class Animal2:def eat(self):print(can eat)def drink(self):print( can drink)
class Dog(Animal2 ): #继承animal2的内容def sound(self):print(汪汪)
class Cat(Animal2 ):def sound(self):print(喵喵)
D1Dog()
D1.drink()
C1Cat()# 多继承一个子类可以从多个父类进行继承
class monster(Dog, Cat):pass
m1monster()
m1.sound()# 多态。多态必须发生在父类和子类之间子类重写多态的方法
class Animal3: #父类def say_who(self):print(I am an animal.)
class Duck(Animal3 ):def say_who(self): #子类和父类这个名字相同时才算是重写print(I am a duck.)pass
duck1Duck()
duck1.say_who()#类继承练习人力系统
#员工分为两类有相同属性有不同属性
#子类优先调用自己的自己没有时才向父类调用class Employee:def __init__(self, name, id):self.name nameself.id iddef print_info(self):print(f员工名字 {self.name}, 工号{self.id})class FullTimeEmployee(Employee):def __init__(self, name, id, monthly_salary):super().__init__(name, id) #用super表示的父类self.monthly_salary monthly_salarydef calculate_monthly_pay(self):return self.monthly_salaryclass PartTimeEmployee(Employee):def __init__(self, name, id, daily_salary, work_days):super().__init__(name, id) #用super表示的父类self.daily_salary daily_salaryself.work_days work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_dayszhangsan FullTimeEmployee(张三,1111,8000)
lisiPartTimeEmployee (李四,1110,300,15)
zhangsan.print_info()
lisi.print_info()
print(zhangsan.calculate_monthly_pay())
print(lisi.calculate_monthly_pay() )07 文件路径学习
#读文件
fopen(./read.txt,r,encoding utf-8) #./表示相对路径常用于在同一路径下时r表示只读encoding表示编码方式
contentf.read()
print(content)
f.close() #关掉对文件的操作
#写文件
with open(./poem.txt,w,encodingutf-8) as f1:f1.write(我欲乘风归去\n) #没有换行符这里就是不换行接着写f1.write(又恐琼楼玉宇\n)f1.write(高处不胜寒。\n)
#在前面内容的基础上继续加话但是如果还是用w模式则会将前面内容清空所以采用a模式即添加
with open(./poem.txt,a,encodingutf-8) as f1:f1.write(起舞弄清影\n)f1.write(何似在人间)08 异常捕捉
#try-except 是从上往下运行如果前面的except已经捕捉到了错误下面的就不会再执行了类比if-else
try:user_weight float(input(请输入您的体重单位kg)) #输入的是字符所以需要转为float数user_height float(input(请输入您的身高单位m))user_BMIuser_weight /(user_height ** 2)
except ValueError: #如果输入一个非数字的字符程序就会报错也就是ValueErrorprint(输入不为合理数字请重新运行程序并输入正确的数字。)
except ZeroDivisionError : #即除零错误print(身高不能为零请重新运行程序并输入正确的数字。)
except: #可以捕捉发生的任意错误常考虑于错误情况考虑不全时print(发生了未知的错误请重新运行程序)
else: #没有错误时会运行print(您的BMI值为 str(user_BMI)) # 需要转换成str字符类型才可以输出
finally: #无论错误与否都会被执行print(程序结束运行。)