python

本文详细介绍了Python编程中的变量概念,包括对象、引用、赋值和类型转换。讲解了条件表达式、双分支和多分支选择结构,以及循环结构如while和for循环的使用。还探讨了函数的形参、实参、作用域和优化技巧,并深入分析了面向对象编程中的类、方法、继承和多态。此外,涵盖了异常处理的基本机制,包括try-except、finally和自定义异常。
摘要由CSDN通过智能技术生成

python

对象

内存块

引用

在python中,变量也成为对象的引用。而且在python中,变量不需要显示声明类型,根据变量引用的对象,python自动确定数据类型

变量的简单赋值语句

变量的声明和赋值:变量名 = 表达式

变量在使用前必须先被初始化(先被赋值)

a=3

删除变量和垃圾回收机制

a=123
del a    #删除a
#栈上的变量被删除,堆上内容被python回收
链式赋值

一个对象赋值给多个变量

x=y=123  
#相当于
x=123;y=123
系列解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致)

  • >>>>a,b,c=4,5,6
    >>>#等价于
    >>>a=4;b=5;c=6
    

    使用系列解包赋值实现变量交换

>>>a,b=1,2
>>>a,b=b,a
>>>#实现了a与b的交换
常量

Python不支持常量,(常量用大写)逻辑上规定不能改

>>>MAX_SPEED = 120
``

#### 整数

#### 使用int()实现类型转化:

- 1.浮点数直接舍去小数部分,int(9.9) 结果是:9
- 2.布尔值True转为1False转为0.
- 3.字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错

#### 自动转型

- 整数和浮点数混合运算时,表达式结果自动转型成浮点数:2 + 8.0 结果为 10.0

#### 整数可以有多大

- Python3 中,int可以存储任意大小的整数,long被取消。可以做超大数的计算,而不会造成 “ 整数溢出 ” 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSP7bVau-1635233806910)(C:\Users\ZHY\AppData\Roaming\Typora\typora-user-images\image-20210908214236570.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kImohTGi-1635233806912)(C:\Users\ZHY\AppData\Roaming\Typora\typora-user-images\image-20210908214523372.png)]

#### 选择结构

#### 单分支选择结构

```python
a = input("请输入一个数")
if int(num) < 10;  #int(a) 表示将a强转为int 形
	print(a)
条件表达式详解

在选择和循环结构中,条件表达式的值为 False 的情况如下:

  • False
  • 0
  • 0.0
  • 空值None
  • 空序列对象(空列表、空元祖、空集合、空字典、空字
    符串)
  • 空range对象
  • 空迭代对象

其他情况均为True。则,Python所有合法表达式都可以看作条件表达式,甚至包括函数调用的表达式

  • 条件表达式中,不能有赋值操作符"="

    但是可以有"=="

双分支选择结构
num = input("输入一个数字:")
if int(num)<10:
	print(num)
else:
	print("数字太大")
三元条件运算符
num = input("请输入一个数字")
print( num if int(num)<10 else "数字太大")
多分支选择结构
score = int(input("请输入分数"))
grade = ''
if(score<60):
grade = "不及格"
if(60<=score<80):
grade = "及格"
if(80<=score<90):
grade = "良好"
if(90<=score<=100):
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade))
选择结构嵌套
score = int(input("请输入一个在 0-100 之间的数字: "))
degree = "ABCDE"
num = 0
if score>100 or score<0:
	score = int(input("输入错误! 请重新输入一个在 0-100 之间的数字: "))
else:
	num = score//10
	if num<6:num=5
	print("分数是{0},等级是{1}".format(score,degree[9-num]))

循环结构

while循环
num = 0
while num<=10:
	print(num)
	num += 1
for循环和可迭代对象遍历
for x in (20,30,40):
    print(x*3)
可迭代对象

Python包含以下几种可迭代对象:

  1. 序列 (包含:字符串、列表、元组)
  2. 字典
  3. 迭代器对象(iterator)
  4. 生成器函数(generator)
  5. 文件对象

遍历字符串中的字符

for x in "sxt001":
print(x)

遍历字典

d = {
   'name':'gaoqi','age':18,'address':'北京'}
for x in d:
    print(x)

for x in d.values():
    print(x)
range对象

range 对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:range(start, end [,step]) 生成的数值序列从 start 开始到 end 结束(不包含 end)。若没有填写 start,则默认从 0开始。step 是可选的步长,默认为 1。

sum_all = 0
sum_even = 0
sum_odd = 0
for num in range(101):
    sum_all += num
    if num%2==0:
        sum_even += num
    else:
        sum_odd += num
print("{0},{1},{2}".format(sum_all,sum_odd,sum_even))

Python format 格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {}: 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'
break语句
continue语句
else语句
循环代码的额优化
  • 尽量减少循环内部不必要的计算
  • 嵌套循环中,尽量减少内层循环的计算,尽可能向外提‘
  • 局部变量查询较快,尽量使用局部变量
#循环代码优化测试
import time

start = time.time()
for i in range(1000):
	result = []
	for m in range(10000):
		result.append(i*1000+m*100)
        
end = time.time()
print("耗时: {0}".format((end-start)))

start2 = time.time()
for i in range(1000):
	result = []
	c = i*1000
	for m in range(10000):
		result.append(c+m*100)
        
end2 = time.time()
print("耗时: {0}".format((end2-start2)))
其他优化手段
  • 连接多个字符串,使用join()而不使用+
  • 列表进行元素插入和删除,尽量在列表尾部操作

python dict

dict = {
   'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
image-20210909232059990
使用zip()并行迭代
names= ("高企","高老二","高老三","高老四")

ages = (18,16,20,25)
jobs = ("老师","程序员","公务员","公安")

for name,age,job in zip(names,ages,jobs):
    print("{0}--{1}--{2}".format(name,age,job))

推导式创建序列

列表推导式
  • [表达式 for item in 可迭代对象 ] \ {表达式 for item in 可迭代对象 if 条件判断}

  • >>> [x for x in range(1,5)]
    [1, 2, 3, 4]
    >>> [x*2 for x in range(1,5)]
    [2, 4, 6, 8]
    >>> [x*2 for x in range(1,20) if x%5==0 ]
    [10, 20, 30]
    >>> [a for a in "abcdefg"]
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']北京尚学堂· 百战程序员 实战 系统 好教育
    >>> cells = [(row,col) for row in range(1,10) for col in range(1,10)]
    #可以使用两个循环
    >>> for cell in cells:
    print(cell)
    
字典推导式
  • {key_expression : value_expression for 表达式 in 可迭代对象}

  • >>> my_text = ' i love you, i love sxt, i love gaoqi'
    >>> char_count = {
         c:my_text.count(c) for c in my_text}
    >>> char_count
    
集合推导式
  • {表达式 for item in 可迭代对象 } 、 {表达式 for item in 可迭代对象 if 条件判断}

  • {
         x for x in range(1,100) if x%9==0}
    
生成器推导式(生成元组)

一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。

gnt = (x for x in range(1,100) if x%9==0)
	for x in gnt:
print(x,end=' ')

综合练习

绘制棋盘

import turtle

n = turtle.Pen()

n.speed(100)
n.width(1)

for i in range(18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值