文章目录
1.for循环
1.1 for循环和可迭代对象遍历
for 变量 in 可迭代对象
for x in (20,30,40):
print(x)
for x in "asdfa":
print(x)
d = {"name":"高琪","age":18,"job":"程序员"}
for x in d:
print(x)
for x in d.keys():
print(x)
for x in d.values():
print(x)
for x in d.items():
print(x)
for x in range(5):
print(x)
print("#################")
sum_all = 0
sum_odd = 0
sum_even = 0
for x in range(101):
sum_all +=x
if x%2==1:
sum_odd +=x
else:
sum_even +=x
print("1-100累加总和{0},奇数和{1},偶数和{2}".format(sum_all,sum_odd,sum_even))
1.2 嵌套循环
#嵌套循环
for x in range(5):
for y in range(5):
print(x,end="\t")
print("\n")
#打印九九乘法表
for m in range(1,10):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,m*n),end="\t")
print()
#使用列表和字典存储表格和数据
tb = []
r1 = dict(name="高小一",age=18,salary=30000,city="北京")
r2 = dict(name="高小二",age=19,salary=40000,city="上海")
r3 = dict(name="高小三",age=20,salary=10000,city="深圳")
tb = [r1,r2,r3]
for x in tb:
if x.get("salary")>15000:
print(x)
1.3 break语句、continue语句、else语句
break语句可用于while和for循环,用来结束整个循环,当有嵌套循环时,break语句只能跳出最后一层循环。
#测试break语句
while True:
a = input("请输入一个字符(输入Q或q时退出):")
if a=="q" or a =="Q":
print("循环结束,退出")
break
else:
print(a)
continue语句用于结束本次循环,继续下一次
# 测试continue循环
empNum = 0
salarySum = 0
salarys = []
while True:
s = input("请输入员工的薪资(按Q或q结束)")
if s.upper() == "Q":
print("录入完成,退出")
break
if float(s) < 0:
continue
empNum += 1
salarys.append(float(s))
salarySum += float(s)
print("员工数{0}".format(empNum))
print("录入薪资:", salarys)
print("平均薪资{0}".format(salarySum / empNum))
else语句,while、for循环可以附带else语句。如果while、for语句没有被break语句结束,则会执行else子句,否则不执行。
# 测试else语句
salarySum = 0
salarys = []
for i in range(4):
s = input("请输入4名员工的薪资(按Q或q结束)")
if s.upper() == "Q":
print("录入完成,退出")
break
if float(s) < 0:
continue
salarys.append(float(s))
salarySum += float(s)
else:
print("您已经全部录入4名员工的薪资")
print("录入薪资:", salarys)
print("平均薪资{0}".format(salarySum / 4))
1.4 循环代码的优化
1.循环计算,尽量减少计算次数
2.列表插入尽量在末尾不要在中间
2.zip()并行迭代
#测试zip()并行迭代
for i in [1,2,3]:
print(i)
names = ("高琪","高老二","高老三","高老四")
age = (18,16,20,25)
jobs = ("老师","程序员","学生")
for name,age,job in zip(names,age,jobs):
print("{0}--{1}--{2}".format(name,age,job))
for i in range(3):
print("{0}--{1}--{2}".format(names[i],age[i],jobs[i]))
3.推导式创建序列
3.1 列表推导式
【表达式 for item in 可迭代对象】
或者{表达式 for item in 可迭代对象 if 条件判断}
# 测试推导式
# 列表推导式
y = [x * 2 for x in range(1, 50) if x % 5 == 0]
print(y)
y = []
for x in range(1, 50):
if x % 5 == 0: y.append(x * 2)
print(y)
cells = [(row, col) for row in range(1, 10) for col in range(1, 10)]
print(cells)
3.2 字典推导式
# 字典推导式
my_text = "i love you, i love sxt, i love gaoqi"
char_count = {c:my_text.count(c) for c in my_text}
print(char_count)
3.3 集合推导式
# 集合推导式
b = {x for x in range(1,100) if x%9==0}
print(b)
3.4 生成器推导式(生成元组)
# 生成器推导式(生成元组)
gnt = (x for x in range(4))
print(tuple(gnt))
for x in gnt: #gnt是生成器对象,生成器是可迭代的对象
print(x, end=",")
print(tuple(gnt))
4.特殊方法和运算符重载
# 测试运算符重载
class Person:
def __init__(self,name):
self.name = name
def __add__(self,other):
if isinstance(other,Person):
return "{0}--{1}".format(self.name,other.name)
else:
return "不是同类对象,不能相加"
def __mul__(self,other):
if isinstance(other,int):
return self.name*other
else:
return "不是同类对象,不能相乘"
p1 = Person("高琪")
p2 = Person("高希希")
x = p1+p2
print(x)
y = p1*30
print(y)
5.画同心圆
# 练习画同心圆
import turtle
t = turtle.Pen()
my_Colors = ("red","green","yellow","black")
t.width(4)
t.speed(0)
for i in range(10):
t.penup()
t.goto(0, -i*10)
t.pendown()
t.color(my_Colors[i%len(my_Colors)])
t.circle(10+i*10)
turtle.done() #程序执行完,窗口仍然在
6.函数的用法和底层分析
可重复使用的程序代码块。
函数代表一个功能或者方法
Python函数分为:内置函数/标准库函数/第三方库函数/用户自定义函数
6.1函数的定义和调用
def 函数名(【参数列表】):
‘’‘文档字符串’‘’
函数体/若干语句
# 测试函数的定义和调用
def test01():
print("*" * 10)
print("@" * 10)
test01() #调用函数
6.2函数的实参和形参
#实参和形参的基本用法
def printMax(a,b):
'''用于比较两个数的大小,打印较大的值'''
if a>b:
print(a,"最大值")
else:
print(b,"最大值")
printMax(10,20)
help(printMax.__doc__)
6.3 函数的返回值
def add(a,b):
print("计算两个数的和:{0},{1},{2}".format(a,b,(a+b)))
return a+b
def test02():
print("sxt")
print("gao")
return #return两个作用:1.返回值;2.结束函数的执行
print("hello")
def test03(x,y,z):
return [x*10,y*10,z*10]