文章主要学自黑马程序员资源,主要是python的概念和典型例子,附有练习的代码
若代码运行出错,除了语法、变量出错,也可能是因为对应代码的缩进不恰当,我自己在执行代码时经常这样,改正对应代码缩进后,代码就能正常运行了
1.怎么运行python
- 在windows系统中,下载了python之后,可以直接在电脑超级终端中运行代码(弊端:每一次运行程序都需要重新进行输入,费时费力)
- 打开电脑终端的方法
- 直接在windows查找应用处用cmd指令打开;
- win+R打开运行窗口,输入cmd指令打开;
- 若安装了Anaconda,直接在win处查找,Anaconda prompt,右键打开powershell窗口
- 打开电脑终端的方法
- 李沐《动手学深度学习》中
- 用jupyter执行python代码
- python,miniconda都已经提前下载好
- 用cmd打开终端
- 创建虚拟环境并激活
-
运行jupyter notebook
conda create --name d2l python 3.11.8-y conda activate d2l jupyter notebook
- 创建好虚拟环境后,下次直接在终端激活虚拟环境,再运行jupyter notebook,就可以在jupyter notebook中运行python代码
- 使用jupyter notebook过程中,终端不能关掉
- python,miniconda都已经提前下载好
- 用jupyter执行python代码
2.注释
- 单行注释:“#”和后面的文字组成注释,起辅助说明作用,不会参与程序的运行
- 多行注释: '''多行注释,可以写很多很多行的功能说明 '''
3.python中的常见变量类型
- int(有符号整型)、long(长整型[也可以代表八进制和十六进制])、float(浮点型)、complex(复数)
- 布尔类型 True、False
- String(字符串)
- List(列表)
- Tuple(元组)
- 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要主动的去说明它的类型,系统会自动辨别
- 可以使用type(变量的名字),来查看变量的类型
4.变量命名规则
- 由字母、数字、下划线(_)组成,不能有空格或其它特殊符号。
- 数字不能作为开头
- 字母区分大小写
- 不能用保留字,如if,while等
5.关键字
- python一些具有特殊功能的标示符,这就是所谓的关键字
- 关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标示符。
- 常见的关键字
-
break class continue def del elif else except exec finally for from global if in import is lambda not or pass print raise return try while with yield
- 可以通过以下命令进行查看当前系统中python的关键字
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
6.输出
print('hello world')
print('给我的卡---印度语,你好的意思') #非格式化输出
age = 18
name = "xiaohua"
print("我的姓名是%s,年龄是%d"%(name,age)) #格式化输出
- 常用的格式符号
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 通过str() 字符串转换来格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写'e') |
%E | 索引符号(大写“E”) |
%f | 浮点实数 |
%g | %f和%e 的简写 |
%G | %f和%E的简写 |
- 换行输出 在输出的时候,如果有
\n
那么,此时\n
后的内容会在另外一行显示print("1234567890-------") # 会在一行显示 print("1234567890\n-------") # 1234567890 # -------
7.输入
- input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
>>> a=input() 45 >>> a '45' >>> type(a) <class 'str'> >>> a=input() asd >>> a 'asd' >>> type(a) <class 'str'> >>> a=input() 'asd' >>> type(a) <class 'str'> >>> a=input() acd >>> b=input() fgh >>> a+b 'acdfgh' >>> a=input() 3+5 >>> a '3+5' >>> a=input() acd+hjk >>> a 'acd+hjk' >>> a=input() 'acd'+'qwe' >>> a "'acd'+'qwe'" >>> a=input() "asd"+"ert" >>> a '"asd"+"ert"'
8.运算符
- 算术运算符
- 下面以a=10 ,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
- 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
- 复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
- 比较(即关系)运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true. |
- 逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not (a and b) 返回 False |
9. 数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
10. 判断语句
-
if语句
- 使用格式 " : "不要漏掉
-
# if语句 if能完成当xxx时,做事情 if 要判断的条件: 条件成立时,要做的事情 # if-else语句 if-else能完成当xxx时做事情1,否则做事情2 if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 满足条件时要做的事情3 ...(省略)... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 不满足条件时要做的事情3 ...(省略)... # if elif elif 当xxx1时做事情1,当xxx2时做事情2,当xxx3时做事情3 if xxx1: 事情1 elif xxx2: 事情2 elif xxx3: 事情3 #可以和else一起用 #当xxx1时,做事情1,当xxx2时,做事情2,否则做事情3 if xxx1: 事情1 elif xxx2: 事情2 else: 事情3
- elif必须和if一起使用,否则出错
- 猜字游戏
-
#导入随机模块 import random #生成一个10到100之间的随机数 secret_number=random.randint(10,100) #初始化猜测次数 guesses_taken=0 print("欢迎来到猜数字的游戏!") while True: #获取用户的猜测 guess=int(input("请猜一个10到100之间的整数:")) #猜测次数加1 guesses_taken+=1 #判断猜测的数字与随机数的大小关系 if guess<secret_number: print("猜的数字太小了") elif guess>secret_number: print("猜的数字太大了") else: #猜对了,跳出循环 print("恭喜你,答对了") break print("你总共猜了",guesses_taken,"次") #欢迎来到猜数字的游戏! #请猜一个10到100之间的整数: 50 #猜的数字太大了 #请猜一个10到100之间的整数: 30 #猜的数字太小了 #请猜一个10到100之间的整数: 40 #猜的数字太小了 #请猜一个10到100之间的整数: 45 #猜的数字太大了 #请猜一个10到100之间的整数: 43 #猜的数字太大了 #请猜一个10到100之间的整数: 42 #恭喜你,答对了 #你总共猜了 6 次
- if嵌套
-
chePiao = 1 # 用1代表有车票,0代表没有车票 daoLenght = 9 # 刀子的长度,单位为cm if chePiao == 1: print("有车票,可以进站") if daoLenght < 10: print("通过安检") else: print("没有通过安检") else: print("没有车票,不能进站") #结果1 chePiao = 1;daoLenght = 9 # 有车票,可以进站 # 通过安检 #结果2 chePiao = 1;daoLenght = 20 # 有车票,可以进站 # 没有通过安检 #结果3 chePiao = 0;daoLenght = 9 # 没有车票,不能进站 #结果4 chePiao = 0;daoLenght = 20 # 没有车票,不能进站
11.循环语句
11.1while循环
- 一般通过数值是否满足来确定循环的条件
- 格式
while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)...
#应用1 i = 0 while i<5: print("当前是第%d次执行循环"%(i+1)) print("i=%d"%i) i+=1 #当前是第1次执行循环 # i=0 # 当前是第2次执行循环 # i=1 # 当前是第3次执行循环 # i=2 # 当前是第4次执行循环 # i=3 # 当前是第5次执行循环 # i=4 #应用2 1~100累加 i = 1 sum = 0 while i<=100: sum = sum + i i += 1 print("1~100的累积和为:%d"%sum) #1~100的累积和为:5050 #应用3 1~100中的偶数累加 i = 1 sum = 0 while i<=100: if i%2 == 0: sum = sum + i i+=1 print("1~100的累积和为:%d"%sum) #1~100的累积和为:2550
- while嵌套
#九九乘法表 i = 1 while i<=9: j=1 while j<=i: print("%d*%d=%-2d "%(j,i,i*j),end='') #内层循环的主体,用于打印乘法表的一行。 %d 是格式化指令,用来打印整数。 # %-2d 表示以左对齐的方式打印宽度为2的整数。 # end='' 参数意味着在打印后不换行,而是继续在同一行打印。 j+=1 print('\n') i+=1 #1*1=1 #1*2=2 2*2=4 #1*3=3 2*3=6 3*3=9 #1*4=4 2*4=8 3*4=12 4*4=16 #1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 #1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 #1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 #1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 #1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
11.2 for循环
- 一般是对能保存多个数据的变量,可以遍历任何序列的项目(如一个列表或者一个字符串等),变量中有多少个数据就循环多少次。
- 格式
for 临时变量 in 列表或者字符串等: 循环满足条件时执行的代码 else: 循环不满足条件时执行的代码
#应用1 name1 = 'dongGe' for x in name1: print(x) name2 = '' for x in name2: print(x) else: print("没有数据") #d #o #n #g #G #e #没有数据 #应用2 break & continue 以for循环为例子,while循环同理可得 name = 'dongGe' for x in name: print('----') print(x) #---- #d #---- #o #---- #n #---- #g #---- #G #---- #e name = 'dongGe' for x in name: print('----') if x == 'g': break #直接跳出整个循环 print(x) #---- #d #---- #o #---- #n #---- name = 'dongGe' for x in name: print('----') if x == 'g': continue #只跳出当前循环,然后继续执行下一次循环 print(x) #---- #d #---- #o #---- #n #---- #---- #G #---- #e
- while是根据条件来控制循环次数
- for是根据in后面的变量里的内容来控制循环次数
11.3 break & continue
- break的作用:用来结束整个循环
- continue的作用:用来结束本次循环,紧接着执行下一次的循环
-
break/continue只能用在循环中,除此以外不能单独使用
-
break/continue在嵌套循环中,只对最近的一层循环起作用
-
if、while、for等其他语句可以随意组合,这样往往就完成了复杂的功能
#一些应用
#打印三角形1
i = 1
while i<=5:
j = 1
while j<=i:
print("*", end="")
j+=1
print("")
i+=1
#*
#**
#***
#****
#*****
#打印三角形2
i = 1
while i<=5:
#从键盘中输入一个值,这个值用来控制这行中*的个数
num = int(input("请输入这个行里的*的个数:"))
j = 1
while j<=num:
print("*", end="")
j+=1
print("")
i+=1
#请输入这个行里的*的个数: 10
#**********
#请输入这个行里的*的个数: 20
#********************
#请输入这个行里的*的个数: 30
#******************************
#请输入这个行里的*的个数: 40
#****************************************
#请输入这个行里的*的个数: 8
#********