python学习笔记

python个人学习笔记

1.python 变量

将数据放入变量的过程叫赋值。Python 使用等号"="作为赋值运算符,如:

name=value

name 表示变量名;value 表示值。

例如,下面的语句将整数 10 赋值给变量 n:

n=10

从此以后,n 就代表整数 10,使用 n 也就是使用 10。

pi=3.1415926

注意,变量的值并不是一成不变的,它随时可被修改,仅需重新赋值即可。变量的值一旦被修改,那么之前的值便会被覆盖,所以一个变量只能容纳一个值

1.
	m=2
	print(m)
	2
2.
	m=20
	m=35
	print(m)
	35

2.基本输入输出

2.1 input()输入函数

input()函数: 读入一个字符串
print('Hello,world') #Hello world
s=input() 小明
print('Hello',s) Hello 小明
print(input()) #input()作为print()的参数
注意:读入的字符串不能直接用于数学运算

1.
s=input()	100
print(3*s)	100100100	#字符串重复

2.
a=input() 10
b=input() 50
print(a+b) 1050		#字符串拼接

int()函数 可将整数输入转为可用于数学运算的整形

 #输入矩形边长计算面积
 a=int(input())    	10	#input()作为int()的参数
 b=int(input())		50
 print(a*b)			500		#数学乘法运算
a=input()
b=input()
print(int(a)*int(b))

flaot()函数将浮点数或整数输入转为可浮点类型

2.2 print()输出函数

print(*objects,sep='',end='\n',fiel= sys.stdout,flush=False)

*objects :输出对象,一个或多个
print('Hello World!') #Hello World!
print(3) #3
print(3+2) #5
ls = [1,2,3,4,5] # [1, 2, 3, 4, 5] 是列表,是一个对象
print(ls) # [1, 2, 3, 4, 5]
print(*ls) # 1 2 3 4 5
print(1,2,3,4,5) # 1 2 3 4 5,多个对象
sep:多个参数输出的分隔字符,默认空格
print('Hello',' World!') # Hello World!
print(3,2,8) # 3 2 8
print(3,2,8 , sep=',') # 3,2,8
print(8,26,18 , sep=':') # 8:26:18
end:输出结束时的字符,默认是换行符 \n
for i in range(4):
print(i)
0
1
2
3

for i in range(4):
print(i,end = ’ ') #0 1 2 3
for i in range(4):
print(i,end = ‘,’) #0,1,2,3,

Python输出:str.format()
<模版字符串>.format(<逗号分隔的参数>)
输出:Tom40
默认按替换域出现的顺序输出

print('{},{},{}'.format('Tom', '男', 40))

根据序号到format() 里查找序号对应的值进行填入

print('{2},{1},{0}'.format(40,'男','Tom'))

给每一个变量赋值,按替换域的变量名顺序输出

print('{name},{gender},{age}' .format(age=40, gender='男', name='Tom'))

模板字符串中说明性字符串将被原样输出

print('姓名:{},性别:{},年龄:{} '  .format('Tom', '男', 40))

输出:姓名:Tom,性别:,年龄:40

3.字符串

字符串是由多个字符组成的集合,由单引号’‘或双引号“”围住字符串以使用。
在python中,单多字符皆认为是字符串,所以在python中单引号’‘与双引号“”并无区别,起到相同作用。
例:

print("Hello,world")
print('Hello, world')

Hello,world
Hello,world

在输出数字时,将数字或数学表达式直接用print表达即可

print(100)
print(15+20)
print(3+8/2-2*2)

100
35
3.0

注意,输出数字时不能够用引号,否则就是字符串:

print('100+20')

结果为100+20,不是120

4.python 运算符

运算符示例 功能说明
x+y 算数加法,列表、元祖、字符串合并
x-y 算术减法,集合差集
x*y 惩罚,序列重复
x/y 真除法,结果为实数
x//y 求整数,向下取整
-x 相反数
x%y 余数,字符串格式化
x**y 幂运算,y可以为实数,例如y取0.5表示平方根
x<y,x<=y,x>y,x>=y 大小比较(可以连用),集合的包含关系比较
x==y,x!=y 相等比较,不等比较
x or y 逻辑或(只有x为假才会计算y),最后计算的子表达式的值作为整个表达式的值
x and y 逻辑与(只有x为真才会计算y)
not x 逻辑非
x in y,x not in y 成员测试运算符
x is y, x is not y 对象同一性测试(测试两个对象引用的地址是否相同)
I、^、&、<<、>>、~ 位运算符
&、I、^ 集合交集、并集、对称差集

2.1 列表对象常用方法

方法 说明
append(x) 将元素x添加至列表尾部
extend(iterable) 将可迭代对象iterable中所有元素添加至列表尾部
insert(index,x) 在列表指定位置index处添加元素x
remove(x) 在列表中删除首次出现的指定元素
pop([index]) 删除并返回列表对象指定位置的元素,默认为最后一个元素
clear() 删除列表中所有元素,但保留列表对象
index(x) 返回第一个值为x的元素的下标,若不存在值为x的元素,则抛出异常
count(x) 返回指定元素x在列表中的出现次数
reverse() 对列表元素进行原地翻转
sort(key=None,reverse=False) 对列表元素进行原地排序
copy() 返回列表对象的浅复制

2.2 列表的创建

使用赋值运算符=直接将一个列表赋值给变量即可创建列表对象。
例如:

>>> a_list=['a','b','c','d','e','f']
>>> a_list=[] 			#创建空列表

除使用前面介绍的方括号语法创建列表之外,Python 还提供了一个内置的 list() 函数来创建列表,list() 函数可用于将元组、区间(range)等对象转换为列表。

a_tuple = ('crazyit', 20, -1.2)
# 将元组转换成列表
a_list = list(a_tuple)
print(a_list)

2.3 列表元素的添加

使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。
例如:

a_list = ["a", "b", "c"]
b_list = [1, 2, 3]
sum = a_list + b_list

print("a_list =", a_list)
print("b_list =", b_list
print("sum =", sum)

结果为:

a_list = ['a', 'b', 'c']
b_list = [1, 2, 3]
sum = ['a', 'b', 'c', 1, 2, 3]

从上可知,使用+会生成新的列表,而原有列表不会被改变。
+多用于进行列表的拼接,在python中有专门的方法添加元素。

2.3.1 append()方法添加元素

append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:
list.append(obj)
其中,list 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
例如:

list = ['a', 'b', 'c']
#追加元素
list.append('d')
print(list)

输出结果为:

['a','b','c','d']

2.3.2 extend()方法添加元素

使用列表对象的extend()方法可以将另一个迭代对象的所有元素添加至改列表对象尾部。通过extend方法来增加列表元素也不改变其内存首地址,属于原地操作。extend()append() 的不同在于:extend() 不会把列表视为一个整体,而是把它们包含的元素逐个添加到列表中。
extend()的格式如下:list.extend(obj)
其中,list 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。
例如:

>>>a.extend([7,8,9])
>>>a
[5,2,4,7,8,9]
>>>alist.extend([11,13])
>>>alist
[3,4,5,7,9,11,13]
>>>alist.extend((15,17))
>>>alist
[3,4,5,7,9,11,13,15,17]

2.3.3 insert()方法插入元素

append()extend() 方法都只能在列表尾部插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。使用列表对象的insert()方法将元素添加值列表的指定位置,也属于原地操作
insert() 的语法格式如下:list.insert(index , obj)
其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。

当插入列表时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。

>>>alist.insert(3,6)
>>>alist
[3,4,5,6,7,9,11,13,15,17]

提示,insert() 主要用来在列表的中间位置插入元素,如果你仅仅希望在列表的末尾追加元素,那更建议使用 append() 和 extend()

2.4 列表元素的删除

2.4.1 del:根据索引值删除元素

del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。
del 可以删除列表中的单个元素,格式为:
del list[index]
其中,list 表示列表名称,index 表示元素的索引值。

name = ["a", "b", "c", "d", "e", "f"]
del name[2]
print(name)

结果为:

["a", "b", "c", "d", "e", "f"]

del 也可以删除中间一段连续的元素,格式为:
del list[start : end]
其中,start 表示起始索引,end 表示结束索引。del 会删除从索引 startend 之间的元素,不包括 end 位置的元素。

name = ["a", "b", "c", "d", "e", "f"]
del name[1:4]
print(name)

结果为:

["a","e","f"]

2.4.2 pop():根据索引值删除元素

pop() 方法用来删除列表中指定索引处的元素,具体格式如下:
list.pop(index)
其中,list 表示列表名称,index 表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素。
例如:

nums = [40, 36, 89, 2, 36, 100, 7]
nums.pop(3)
print(nums)
nums.pop()
print(nums)

运行结果:

[40, 36, 89, 36, 100, 7]
[40, 36, 89, 36, 100]

2.4.3 remove():根据元素值进行删除

需要注意的是,remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。
例如:

nums = [40, 36, 89, 2, 36, 100, 7]
#第一次删除36
nums.remove(36)
print(nums)
#第二次删除36
nums.remove(36)
print(nums)
#删除78
nums.remove(78)
print(nums)

结果为:

[40, 89, 2, 36, 100, 7]
[40, 89, 2, 100, 7]
Traceback (most recent call last):
    File "C:\Users\z1685\Desktop\homework.py", line 9, in <module>
        nums.remove(78)
ValueError: list.remove(x): x not in list

2.4.4 clear():删除列表所有元素

clear() 用来删除列表的所有元素,也即清空列表,请看下面的代码:

list=[1,2,3,4,5]
list.clear()
print(list)

结果为:

[]

3.1 条件表达式

逻辑运算符and和or以及关系运算符具有惰性求值特点,只计算必须计算的表达式。
在这里插入图片描述
以“and”为例,对于表达式“表达式1 and 表达式2”而言,如果“表达式1”的值为“False”或其他等价值时,不论“表达式2”的值是什么,整个表达式的值都是“False”,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此将不会被计算,从而减少不必要的计算和判断。
在设计条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据“and”和“or”运算的短路求值特性来组织先后顺序,可以大幅度提高程序运行效率。

>>> def Join(chList, sep=None):
	    return (sep or ',').join(chList)
>>> chTest = ['1', '2', '3', '4', '5']
>>> Join(chTest)
'1,2,3,4,5'
>>> Join(chTest, ':')
'1:2:3:4:5'
>>> Join(chTest, ' ')
'1 2 3 4 5'

3.1.1 单分支选择结构

if 表达式:
语句块

x = input('Input two number:')
a, b = map(int, x.split())
if a > b:
   a, b = b, a               #序列解包,交换两个变量的值
print(a, b)

3.1.2 双分支结构

if 表达式:
语句块1
else:
语句块2

**>>> chTest = ['1', '2', '3', '4', '5']
>>> if chTest:
	  print(chTest)
else:
	  print('Empty')

['1', '2', '3', '4', '5']
**

Python还支持如下形式的表达式:三元运算符

value1 if condition else value2

当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。在value1和value2中还可以使用复杂表达式,包括函数调用和基本输出语句。这个结构的表达式也具有惰性求值的特点

>>> a = 5
>>> print(6) if a>3 else print(5)
6
>>> print(6 if a>3 else 5)
6
>>> b = 6 if a>13 else 9
>>> b
9
#此时还没有导入math模块
>>> x = math.sqrt(9) if 5>3 else random.randint(1, 100)
NameError: name 'math' is not defined
>>> import math
#此时还没有导入random模块,但由于条件表达式5>3的值为True,所以可以正常运行
>>> x = math.sqrt(9) if 5>3 else random.randint(1,100) 
#此时还没有导入random模块,由于条件表达式2>3的值为False,需要计算第二个表达式的值,因此出错
>>> x = math.sqrt(9) if 2>3 else random.randint(1, 100)
NameError: name 'random' is not defined
>>> import random
>>> x = math.sqrt(9) if 2>3 else random.randint(1, 100)

3.1.3 多分支结构

if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
else:
语句块4

其中,关键字elif是else if的缩写。

例3.1 利用多分支选择结构将成绩从百分制变换到等级制

def func(score):
	    if score > 100:
		return 'wrong score.must <= 100.'
	    elif score >= 90:
		return 'A'
    elif score >= 80:
		return 'B'
    elif score >= 70:
		return 'C'
    elif score >= 60:
		return 'D'
    elif score >= 0:
		return 'E'
    else:
		return 'wrong score.must >0'	

3.1.4 选择结构的嵌套

if 表达式1:
    语句块1
    if 表达式2:
        语句块2
    else:
        语句块3
else:
    if 表达式4:
        语句块4

例子 使用嵌套的选择结构实现百分制成绩到等级制的转换。

>>> def func(score):
	    degree = 'DCBAAE'
	    if score > 100 or score < 0:
        return 'wrong score.must between 0 and 100.'
    else:
        index = (score - 60)//10
        if index >= 0:
            return degree[index]
        else:
		     return degree[-1]

3.2 for循环与while循环

Python提供了两种基本的循环结构语句——while和for。
while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况。
for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素。
一般优先考虑使用for循环。
相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。
for循环和while循环都可以带else。

while 条件表达式:
	循环体
[else:                     # 如果循环是因为break结束的,就不执行else中的代码
	else子句代码块]


for 取值 in 序列或迭代对象:
	循环体
[else:
    else子句代码块]
   

3.3 循环结构的优化

为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。
优化前的代码:

digits = (1, 2, 3, 4)

for i in range(1000):
    result = []
    for i in digits:
        for j in digits:
            for k in digits:
                result.append(i*100+j*10+k)

优化后的代码:

for i in range(1000):
    result = []
    for i in digits:
        i = i*100
        for j in digits:
            j = j*10
            for k in digits:
                result.append(i+j+k)

在循环中应尽量引用局部变量,因为局部变量的查询和访问速度比全局变量略块。另外,在使用模块中的方法时,可以通过将其直接导入来减少查询次数和提高运行速度。

import time
import math

start = time.time()                    #获取当前时间
for i in range(10000000):
    math.sin(i)
print('Time Used:', time.time()-start) #输出所用时间

loc_sin = math.sin
start = time.time()
for i in range(10000000):
    loc_sin(i)
print('Time Used:', time.time()-start)

3.4 break和continue语句

break语句在while循环和for循环中都可以使用,一般与选择结构结合使用,一旦break语句被执行,将使得整个循环提前结束。
continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。
除非break语句让代码更简单或更清晰,否则不要轻易使用。

下面的代码用来计算小于100的最大素数,注意break语句和else子句的用法。

>>> for n in range(100, 1, -1):
    for i in range(2, n):
		if n%i == 0:
			break
    else:
		print(n)
		break	

删除上面代码中最后一个break语句,则可以用来输出100以内的所有素数。

>>> for n in range(100, 1, -1):
    for i in range(2, n):
		if n%i == 0:
		    break
    else:
		print(n, end=' ')

97 89 83 79 73 71 67 61 59 53 47 43 41 37 31 29 23 19 17 13 11 7 5 3 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值