Python
  bzUvzvVq9oY1 2023年11月02日 78 0

循环结构

  • 根据条件或指定次数反复执行某个动作(语句)
  • while
while 条件:
	满足条件执行的语句
	break # 终止循环
else:
	不满足条件执行的语句
while True:
	语句段

例:

"""
使用下列代码循环,直到录入"exit"后退出
在控制台中获取一个季度,打印相应的月份
输入与输出:
    春  1月2月3月
    夏  4月5月6月
    秋  7月8月9月
    冬  10月11月12月
"""
while Ture:
    season = input("获取一个季度")
    if season=="春":
        print('1月2月3月')
    elif season=="夏":
        print('4月5月6月')
	elif season=="秋":
        print('7月8月9月')
    elif season=="冬":
        print('10月11月12月')
    if input("请输入exit退出") == 'exit':
        break #退出循环

while循环结构的三要素

  • 循环变量初始值
  • 循环条件
  • 循环变量增值

语法及练习

#运行结果变成横着
print(i,end=',')

i = 1 #循环变量初值
while i < 5:  #i<5表示循环条件
	print("你好")
	i = i+1 #循环变量增值
在终端中显示0 1 2 3 4 5
            i = 0
        while i < 6:
            print(i)
            i +=1
            
	在终端中显示2 3 4 5 6 7 
            i = 2
        while i < 8:
            print(i)
            i +=1
    在终端中显示0 2 4 6
            i = 0
        while i < 8:
            print(i)
            i +=2
    在终端中显示4 3 2 1 0
    		i = 4
        while i >=0:
            print(i)
            i -=1
    在终端中显示-1 -2 -3 -4
			i = -1
        while i >= -4:
            print(i)
            i -=1
求1-9的平方
i = 1
while i <= 9:
    sum = (i * i)
   或者 sum = (i ** 2)
    print(sum,end=' ')
    i += 1
输出列表中的元素  a = [23,24,21,22,23,25,22]
list = [23,24,21,22,23,25,22]
i = 0
while i<=6:
    print(list[i],end=' ')
    i+=1

for循环

  • 用于遍历可迭代对象的元素
for 变量 in 可迭代对象:
    语句1
    break  #跳出循环
else:
    语句2
    
 message = "我是齐天大圣孙悟空"
for item in message:
    print(item)   
"""
	在终端中获取任意整数,累加每位数字
	输入:"12345"
	输出:15
"""
num = input("请输入数字")
value = 0
for num1 in num:
    value += int(num1)
print(value)

for 循环计数

range(开始,结束,间隔)  --整数生成器
    开始值默认为0
    不包含结束
    间隔默认为1
    
    
for item in range(10):
    print(item,end=' ')
例:循环累加下列数字的和:0 1 2 3 4 5

value = 0
for item in range(6):
    value += int(item)
print(value)
#循环累加下列数字的和:2 3 4 5 6 7
value = 0
for item in range(2,8):
    value += int(item)
print(value)
#循环累加下列数字的和:0 2 4 6
value = 0
for item in range(0,7,2):
    value += int(item)
    print(value)
#循环累加下列数字的和:4 3 2 1 0
value = 0
for item in range(4,-1,-1):
    value += int(item)
print(value)
#循环累加下列数字的和:-1 -2 -3 -4
value = 0
for item in range(-1,-5,-1):
    value += int(item)
print(value)
例:累加1-50,且能被5整除的和

value = 0
for item in range(1,51,1):
    if item % 5 == 0:
         value += item
print(value)
#累加10~~50之间个位不是2,5,9的整数
value = 0
for item in range(10,51,1):
    unit = item % 10
    if unit % 2 == 0 or unit % 5 == 0 or unit % 9 ==0:
        continue      #跳过
    value += item
print(value)

continue

  • 表示结束本次循环,继续下次循环,一般用在if语句中
案例:壮士吃包子问题,当吃到第999个包子,发现半只虫子,后不吃第999个包子,继续吃第1000个...
for i in range(1,10001,1):
	if i == 999:
		print("发现半只虫子")
		continue
	print(f'壮士吃第{i}个包子')
i = 0
while i <= 9999:
	i = i + 1
	if i == 999:
		print("发现半只虫子")
		continue
	print(f'壮士吃第{i}个包子')
例:获取键盘输入的数据,判断输入的数据中有几个字母、几个数字、几个空格
s = input("请输入你的数据:")
print("您输入的数据是:",s)
zm = 0  #表示字母,用于计数
sz = 0  #表示数字,用于计数
kg = 0  #表示空格,用于计数
for str in s:
    if str.isalpha():
        zm +=1
    elif str.isdigit():
        sz +=1
    elif str.isspace():
        kg +=1
print("字母的数量:",zm)
print("数字的数量:",sz)
print("空格的数量:",kg)

else语句

  • 表示循环结束后,执行的语句

break语句

  • 终止循环(退出循环),即提前结束循环
  • Python_类和对象
#方法二
i = 1
while i <= 101:
    print("跑第",i,"圈")
    i = i + 1
    if i == 40:
        break

嵌套循环

语法:

for i in 迭代对象:
	for j in 迭代对象:
		语句段
a = [[1,2,3],[4,5,6]]
for i in a:#i表示获取的每一个小列表,外循环
    for j in i:#j表示获取每一个具体数据,内循环
        print(j,end=' ')
    print(i)
    
外行内列
"""使用for循环绘制以下图形
*****
#####
*****
#####
"""
for r in range(4):   #外循环控制行
    for c in range(5):     #内循环控制列
        if r % 2 ==0:
            print("*",end=" ")
        else:
            print("#",end=" ")
    print()
例:使用双层for输出直角三角形
for r in range(4):   #外循环控制行
    for c in range(r+1):     #内循环控制列
        print("-",end=" ")
    print()
例:输出九九乘法表
for r in range(1,10):   #外循环控制行
    for l in range(1,r+1):     #内循环控制列
        print(f"{r}*{l} = {r*l}",end=" ")
    print()

异常处理和错误

  • 表示程序运行期间发生的错误,比如文件打不开,文件不存在,磁盘满、数据库连不上等
  • 一般使用if语句难以处理这种判断
  • python提供异常处理
except IndexError:
	print('下标越界')
except KeyError:
	print('字典键不存在')
except BaseException as e:
	print('其他错误'+str(e))
    
IndexError 下标索引超出序列边界
IOError 输入/输出异常,基本上是无法打开文件
TypeError 传入对象类型与要求的不符合
KeyError 试图访问字典里不存在的键
try:
    可能出现错误的代码
except 异常类名1 as 别名:
    异常处理代码段1
except 异常类名2 as 别名:
    异常处理代码段2
except 异常类名3 as 别名:
    异常处理代码段3
finally:
    不论是否发生异常都会执行的代码
try 部分如果没有出错,则except代码不执行
number01 = int(input("请输入整数01"))
number02 = int(input("请输入整数02"))
#0不能做除数,也就是不能做分母
try:
    print(number01 / number02)
except Exception as e:
    print(f"出错了,出错信息是{e}")
    
#下标越界
a = [23,23,11,15,16,48,15]
try:
    i = 1
    while i <= 7:
        print(a[i],end='')
        i +=1
except IndexError:
    print('下标越界')
    
#请大家制作两个整数加法计算器,可以一直执行
try:
    number01 = int(input("请输入整数01"))
    number02 = int(input("请输入整数02"))
    result = number02+number01
    print(f"{number01}+{number02}={result}")
except ValueError:
    print("只能输入整数类型数据")
#什么时候都执行的语句
finally:
    print("请重新启动程序")

函数

  • 函数是对一系列有关联的代码进行封装
  • 函数分为
  • 内置函数
  • 标准库函数OS、sys、random、math等
  • 第三方函数库pandas、pymysql、requests
  • 自定义函数

定义函数

def 函数名(参数列表):
	函数体
	return 返回值
# 定义无参无返回值函数
def add():
x = float(input('请输入第1个数:'))
y = float(input('请输入第2个数:'))
print(f'{x} + {y} = { x + y}')
# 定义有参无返回值函数
def sub(x, y):
z = x - y
print(f'{x} - {y} = { z }')
# 定义无参有返回值函数
def mul():
x = float(input('请输入第1个数:'))
y = float(input('请输入第2个数:'))
z = x * y
return z
# 定义有参有返回值函数
def div(x,y):
z = x / y
return z
"""
定义函数,判断列表中是否存在相同元素
输入:[3,4,6,8,6]
输出:True
"""
def a(list):
    for r in range(len(list)-1):
        for c in range(r+1,len(list)):
            if list[r] == list[c]:
                return  True
    return False
list01 = [3,4,6,8,6]
print(a(list01))

调用函数

def user_login(u,p):
    if "admin" == u and "123456" == p:
        print("登录成功")
    else:
        print("登陆失败")
    #获取键盘输入的用户名和密码
    username = input("请输入用户名")
    passwd = input("请输入密码")
    #调用函数
    user_login(username,passwd)
例:定义一个处理姓名函数,要求首字母大写,调用函数,实现功能
def change_name(name):
    # 获取实参的值,并转换成大写显示,并使用new_name存储
    new_name = name[0].upper() + name[1:].lower()
    print(f'您的姓名是:{new_name}')
    # 调用函数
change_name('simTH')

#运行结果
您的姓名是:Simth

函数参数

def 函数名(a,b):
    #a,b是必须参数,必须参数与定义函数有关
	函数体
    
函数名(实参1,实参2)
#位置参数/必须参数 与调用函数有关

#按位置传参
def add(a,b):
    print(f"a是:{a}")
    print(f"b是:{b}")
    result = a + b
    print(f"两数之和是:{result}")
add(5,9)
#默认值   带有默认值参数必须放在最后面
def 函数名(a,b,c=默认值):
	函数体
    
函数名(实参1,实参2)
函数名(实参1,实参2,实参3)

#关键字参数
函数名(a=实参1,b=实参2,c=实参3)
函数名(a=实参1,c=实参3,b=实参2)
函数名(实参1,c=实参3,b=实参2)

#可变数量参数/变参
def 函数名(a,b,*c):#a,b是必须参数,c是变参
    函数体  
函数名(实参1,实参2)  #c = () 空元组
函数名(实参1,实参2,实参3,实参4,实参5)  #c = (实参3,实参4,实参5)

print('hello'*3)  #表示复制
print(25 * 100)   #表示乘法运算
print(*[1,2,3,4,5])#拆列表/元组/集合
def add(a,b):
    print(a)
    print(b)
c = {'a':12,'b':15}
add(**c)  #使用**将字典拆分后,与形参进行对应

def add(**c):
    print(c)
c = {'a':12,'b':15}
add(**c)

匿名函数

变量 = lambda 形参列表:表达式
#lambda 用于声明匿名函数
#形参列表与定义函数形参列表一样,多个参数使用逗号分隔
#表达式:是函数要返回值的表达式,只允许是一个
res01 = lambda a,b,c:print("三个数相加之和是:",a+b+c)
res01(10,20,30)

装饰器

  • 装饰器本质就是一个函数
  • 为已存在的函数,添加额外的功能
  • 不需要对函数对象,做任何代码变动
#装饰器1
def 装饰器名称(func):
    def 内部函数(参数):
        函数体
        func()
    return 内部名函数
@装饰器名称
def func1(s):
    函数代码
func1(实参)
 
#装饰器2
def decorate(func):
    print("python程序设计")
    func()
    print("www.tomooc.cn")
    return "装饰器的返回值"
@decorate
def func1():
    print("这是func1函数")
print(func1)
#装饰器3
def decorate():
    def inner(func):
        print("内部函数-1")
        func()
        print("内部函数-2")
    return inner
@decorate()
def func1():
    print("这是func1函数")
print(func1)
        
    
#编写一个装饰器,实现字符串首字母大写,其他小写
def change(func):
    def inner(s):
        s = s[0].upper() + s[1:].lower()
        func(s)
    return inner
@change
def test(a):
    print(a)
test("python")

类和对象

定义类

class 类名(父类名):
    def 函数名(self,参数列表):
        函数体
        return 返回值
  • self代表类自身,用于定义和调用类中的实例变量(数据成员)
class Person:
    def show(self):
        # self  表示类本身
        print("这是一个show函数")

    def eat(self, a, b):  #a,b表示形参列表
        #数据成员(实例变量)
        self.name = a  #self.实例变量 = 值
        self.food = b
        print(f"{self.name}正在吃{self.food}")

类的实例化

#实例化名 = 类名(参数列表)
per = Person()  #类的实例化
#访问类中的函数
per.show()
per.eat("张三","蛋炒饭")

访问类中的变量

per.name = "李四"
per.food = "烤冷面"
print(f"{per.name}正在吃{per.food}")

构造函数(注意:前后分别为两个下划线)

  • 在定义类中,可以定义一个构造函数,用于类实例化时初始化相关数据
def __init__(self,形参列表)
	函数体
  • 构造函数名称必须为init
  • self不能省略
  • 如果构造函数定义时有参数列表,实例化类时必须要提供
  • 构造函数中不能有return
class Student:
    def __init__(self,i,n,a,s,c):
        self.id = i
        self.name = n
        self.age = a
        self.score= a
        self.sclass = c
        print("构造函数正在初始化数据")
    def show(self):
        print(f"{self.sclass}的,{self.name},今年{self.age}岁")
    def study(self,b):
        self.book = b
        print(f"{self.name}正在看{self.book}")
    def play_game(self,g): # a,b 表示形参列表
        # 数据成员(实例变量)
        self.game = g
        print(f"{self.sclass}的,{self.name},今年{self.game}岁")

stu = Student(100,"张三",18,90.5,"三年二班")
stu.show()
stu.study("<<狂人日记>>")
stu.play_game("羊了个羊")
score = stu.get_score()
print(f'{stu.name}的分数是:{score}')

继承

class 父类(父类名):
	def 函数名(self,参数列表):
		函数体
		return 返回值
    
class 父类:
	....
class 子类(父类): #继承
	....
例:定义2个类,实现类的继承,对子类进行实例化,使用类,输出结果
class Shape:
    def input_data1(self,c,k):
        self.c = c
        self.k = k
        print(f'您输入的长是:{self.c},宽是:{self.k}')
 	def nj1(self):
        self.mj1 = self.c * self.k
        print(f'长方形面积是:{self.mj1}')
  #定义子类
class Yuan(Shape):
    # 自定义函数
def input_data2(self):
	self.r = float(input("请输入圆的半径(R):"))
	print(f'您输入的半径是:{self.r}')
def mj2(self):
	self.mj2 = 3.14 * self.r * self.r
	print(f'圆的面积是:{self.mj2}')

模块

  • 模块就是颇有通红源文件,以.py结尾的文件,成为模块
  • 模块中含有变量、函数、类、流程控制语句
11111111
#加法函数、减法函数、变量=3.14,列表为城市列表['北京','上海','广州']
PI = 3.14
city = ['北京','上海','广州']
def add(x,y):
    z = x+y
    print(z)
def sub(x,y):
    z = x - y
    print(z)
if __name__ == '__main__':
    #__name__变量是__main__时说明该模块现在正在单独被运行
    add(100,200)
    sub(100,200)
print("圆周率:",PI)
222222222
#包含一个名为Calc的类,包含乘法函数mul和惩罚函数div
#普通变量 =999
#普通变量 ='hello'
n1 = 999
s1 = "Hello"
class Calc:
    def mul(self,x,y):
        z = x * y
        return z
    def div(self,x,y):
        if y != 0:
            z = x/y
            return z
        else:
            print("除数为0")
if __name__ == '__main__':
    t1 = Calc()
    a = t1.mul(3,4)
    print(a)

导入模块

import 模块名1,模块名2
import 模块名 as 别名
#成员名可以是函数、类、变量
from 模块名 import 成员名
#使用模块中的成员
模块名.变量名
模块名.函数名()
#如果有return情况
返回值变量 = 模块名.函数名(实参1,实参2)
对象名 = 模块名.类名()

import 包名.子包名.模块名1,包名.子包名.模块名2
import 包名.子包名.模块名 as 别名

|-----config # 存放配置文件
|-----log # 存放日志文件
|-----util # 存放工具文件
|-----script # 存放测试代码
|----- data # 存放测试数据
例:创建1个包,包名是script,子包名是dev,包中包含的模块有mod4
# 定义常量
PI = 3.14
# 定义函数
def mod4_func1():
print("这个是mod4中的函数")
# 定义类
class Mod4:
def mod4_func2(self):
print("这个是Mod4中的函数")
# 代码测试
if __name__ == '__main__':
    
print(PI)
mod4_func1()
c4 = Mod4()
c4.mod4_func2()
例:创建1个包,包名是script,子包名是qa,包中包含的模块有mod5
# 定义元组
city = ("北京", "上海", "广州")
# 定义函数
def mod5_func1(str1):
str1 = "您好"+str1
return str1
# 定义类
class Mod5:
def mod5_func2(self,str2):
self.str2 = "Hello"+str2
print("这个是mod5中的函数")
return self.str2
# 测试代码
if __name__ == '__main__':
x = mod5_func1("Python")
print(x)
c5 = Mod5()
y = c5.mod5_func2("Word")
print(y)

文件夹及文件操作

文件的操作:打开、读写、关闭

#打开文件
文件对象 = open("文件名","访问方式")
	a 追加:如果文件不存在则新建文件,写入时在原有内容基础上追加新内容
    r 只读:如果文件不存在报错,不支持写
    W 写入:如果文件不存在则新建文件,写入时覆盖原有内容
    如果不写访问方式时,默认为只读
    b 访问模式特点,表示二进制
    
result = open('test','rb+')
print(result)
#读取文件
print(result.read())
#关闭文件
result.close()

time模块

import time
# 获取当前系统时间戳
cur_time = time.time()
print(f'当前系统时间戳:{cur_time}')
# 获取当前系统时间
cur_time_01 = time.localtime(time.time())
print(f'当前系统时间是:{cur_time_01}')
# 获取当前系统格式化的时间
cur_time_02 = time.asctime(time.localtime(time.time()))
print(f'当前系统格式化的时间是:{cur_time_02}')
# 按照某个日期格式,格式化时间 2023-02-23 16:13:34
cur_time_03 = time.strftime('%Y/%m/%d %H:%M:%S',time.localtime())
print(f'按照设置好的日期时间格式显示:{cur_time_03}')

os模块

#os模块 --操作文件和文件夹
import os #导入模块
 os.函数名()   使用os模块中的相关功能
#文件和文件夹的重命名
 os.rename('test','Demo')
#删除文件
 os.remove('Demo')
# 创建文件夹
 os.mkdir("test")
#删除文件夹
 os.rmdir("test")
# 查看当前所在工作路径
print(os.getcwd())
# 切换目录
os.chdir("test")
print(os.getcwd())
# 查询当前目录下有那些目录
print(os.listdir())#返回当前目录

pymysql模块

import pymysql
conn = pymysql.connect(host='数据库服务器ip地址',
                       user='数据库用户名',
                       password='数据库密码',
                       database='数据库名',
                       port='数据库端口号'
                       )
# 获取游标对象,操作数据库
cursor = conn.cursor()
# 执行sql数据,返回内容为实际操作数据的行数
cursor.execute('SQL语句')  # 按行执行
# 获得结果或
result = cursor.fetchone()
result = cursor.fetchall()
# 提交事务
conn.commit()
# 回滚事务
conn.rollback()
# 关闭数据库
conn.close()

Excel操作

import pandas,openpyxl
# 先读取excel 数据到内存
# 默认读取excel表中的第一个sheet表
data = pandas.read_excel("excel文件.xlsx")
print(data)
# 将内容转为列表
data = data.values.tolist()
print(data)
# 读取excel文件中第二个sheet
# data = pandas.read_excel("excel文件.xlsx",sheet_name=1)
# 打开excel 表
xlsfile = openpyxl.load_workbook('excel文件.xlsx')
# 指定sheet表
sheet = xlsfile['Sheet1']
# 增加sheet表
sheet.create_sheet("工作表名")
# 增加行
sheet.append("列表数据") # 列表中数据与列名一一对应
# 删除行
sheet.delete_rows("删除第几行") # 行数从1开始
# 保存文件
xlsfile.save("excel文件.xlsx")


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  SBowDWXjb0NT   2023年11月30日   37   0   0 redis线程池数据
bzUvzvVq9oY1
最新推荐 更多