Python基础
python : 编程语言
编程语言: C C++ C# H5(html+css) JAVA (后台) VB php(建站) python (高级语言)
弱语言: js(JAVASCRIPT)
前端: 用户可见 (网页,app,小程序)
后台: 程序员可见 (为前台提供数据)
python: 蟒蛇 龟叔 1991 底层是C语言(指针)实现
Life is short you need python
人生苦短 我用python
格仔衫
使用场景: 无所不能 网页 后台 黑客 爬虫 大数据分析
前端
爬虫: 从网站里面提取数据
数据: 互联网上的信息
存数据: 表格 数据库 hadoop(存储海量数据)
1PB = 1024 1T = 1024 G M K
特点:
胶水语言: 用来连接软件组织的程序设计语言
简单易用
开源: 免费 代码公开
可移植性强,跨平台 (mac,windows,linux)
解释性编程语言: 不需要编译,直接运行
编译性编程语言: 编译(将文件编译为二进制文件)-->运行
面向对象: 万物皆对象
丰富的库(模块)
缺点:
运行速度比较慢 (爬虫)
缺少中文文档: 菜鸟教程
代码: 英文单词 二进制文件
123
23423
43543 (十进制 0-9)
二进制 (0-1)
八进制(0-7)
No1.
python运行环境: https://www.python.org/ (download,32,64)
环境测试:
windows+r --> cmd (回车) --> python
安装: 双击软件 --> 勾选add python3.6 to path (把python加入到环境变量里面) --> install now
再次测试
函数: 实现某种功能 单词()
exit(): 程序退出 (ctrl+z–>回车)
print(内容): 输出内容
bug
标点符号: 所有的标点符号都是英文 (ctrl+shift)
内容: 除了数字,其余的内容都要加上单引号或者双引号
python文件后缀: .py
写完文件,要ctrl+s(保存文件)
dos命令:
cd : 切换路径
cd 文件路径
cd 桌面
python py文件 : 运行python文件
中文乱码: 中文编码方式为 utf-8
IDE: 集成开发环境 帮助开发者快速生成代码,节约开发时间.
pycharm: http://www.jetbrains.com/
64bit,.py --> python3.6
设置: File --> settings–> Editor --> font
运行文件: 在文件里面右击–> run …
控制台: 显示程序运行结果
在python里面,代码后面不需要分号;一行里面只能写一行python代码
快捷键:
ctrl+c 复制
ctrl+x 剪切
ctrl+v 粘贴
ctrl+s 保存
ctrl+z 撤销
ctrl+y 删除当前行
ctrl+d 复制当前行粘贴到下一行
alt+tab 切换应用程序
windows+d 回到桌面
变量: 数据容器(存放数据) 变量名 = 值(数据) 全局修改
数据: 数字或者字符串
字符串: 用单引号或者双引号包裹起来的内容
a = 10
=: 赋值运算符 从右往左看 将10 赋值给 a变量
a = ‘hello world’
变量的声明: 写一个变量,不赋值 (python没有声明)
变量的定义: 写变量,并且给变量赋值
变量可以多次赋值
print(内容1,内容2,)
变量名的命名规范:
1.由字母数字下划线组成
2.不能是纯数字或者数字开头
3.不能是关键字(python里面已经使用过的单词,已经有特殊意义) if
4.驼峰标识: 从第二个单词开始,首字母大写 userNameOne
exit()
print()
python注释: 代码的解释说明 不会运行的
单行注释: # 注释内容 ctrl+/
多行注释: ‘’’ 注释内容 ‘’’ “”" 注释内容 “”"
原型输出: 使用多行注释
查看类型函数: type(变量名)
数据类型: 数字类型 字符串类型 布尔类型
数字类型: 整数(int) 浮点数(小数,float) 二进制,八进制,十六进制
二进制: 0b开头,后面接0101010
十六进制: 0x开头,后面接0-9 a-f
幂运算: 几次方
3210
0b1010
0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 + 1 * 2 ^ 3 = 10
字符串: 单引号或者双引号包裹起来的内容 str
布尔: 表条件真假(条件是否成立) True False bool
占位符: %d %f %s 用来在字符串中表示变量的位置
%d: 整数
%f: 浮点数
%s: 字符串 (重点) 代表任意数据类型
print(‘a的值是%d,b的值是%d’%(a,b))
与用户进行交互
输入函数: input(提示文字)
只要写了函数,一定要等待用户输入,程序才会继续执行
a=input('请输入你的名字:')
b=input('请输入你的性别:')
c=input('请输入你的出生日期:')
d=input('请输入你的手机号码:')
print('''===========================
姓名:%s
性别:%s
出生日期:%s
手机号:%s
==========================='''%(a,b,c,d))
x='''===========================
姓名:%s
性别:%s
出生日期:%s
手机号:%s
==========================='''%(a,b,c,d)
print(x)
运算符:
赋值运算符: =
算术运算符: + - * / %(模运算,求余数) // (取整) ** (幂运算)
2 ** 3 : 2的3次方
x ** y : x的y次方
+: 数据类型必须相同
1.数学的加法
2.连接符 : 连接+左右两边的内容,在两边都是字符串的情况下
*:
1.数学的乘法
2.复制: 字符串 * 数字n,将字符串复制n次
数据类型的转换:
数字: int float
字符串: str
布尔: bool
强制转换:
%s: 内部实现了str(占位符代表的变量)
数字转为字符串: str(变量或者数字)
字符串转为数字: int(变量) float(变量) int还能取整 (//)
将其它类型转为布尔: bool(变量)
数字: 非0即真: 0是False,其余为True
字符串: 空字符串(‘’) 为False,其余为True
比较运算符: > < >= <= ==(等于) !=(不等于) 结合if使用
逻辑运算符: 或与非
或: or 只要一个成立,整体都成立
与: and 所有条件都成立,整体成立
非: not 取反 原来是True,变为False
字符串的比较: 从第一位开始比较,如果第一位就大了,就不需要比较
ASCII码值: a(97) A(65)
代码的流程控制: 代码以什么样的顺序执行
1.顺序结构: 从上往下执行
2.选择结构: 选择代码执行
3.循环结构: 重复执行某些代码
选择结构:
if语句 格式
if 条件:
条件成立的时候执行的代码
if…else(否则)语句 格式
if 条件:
条件成立的时候执行的代码
else:
条件不成立的时候执行的代码
if 嵌套:
一个if再嵌套另外一个if
第一天总结
总结:
函数:
exit(): 退出程序
print(内容): 输出内容
内容: 数字和变量不需要用单引号或者双引号,其他要
input(提示文字): 输入
type(变量): 查看变量类型
str(): 转化为字符串
int(): 转化为整数
float(): 转化为浮点数
bool(): 转化为bool 0,空字符串,NULL是False,其余也为True
运算符: + - * / **(幂运算) //(取整) % (求余数,模运算)
比较运算符: > < >= <= == !=
逻辑运算符: or and not
多个if
if…else
shift+tab: 代码整体左移动
tab: 整体右移
第一天作业
# 1.让用户输入两个任意的整数, 比较两个数的大小, 输出最大的数
a=input("请输入第一个整数:")
b=input("请输入第二个整数:")
if a>b:
print('最大的数是%s'%(a))
else:
print('最大的数是%s'%(b))
# 2.用户输入一个数,打印出奇数还是偶数
a=input('请输入一个数:')
if int(a)%2 == 1:
print('奇数')
else:
print('偶数')
# 3.用户输入帐号密码, 帐号为admin, 密码为8888显示登录成功, 其余的显示登录失败
a=input('请输入账号:')
b=input('请输入密码:')
if a=='admin'and b=='8888':
print('登陆成功')
else:
print('登录失败')
# 4.用户输入一个三位数, 输出结果是否为水仙花数
# (水仙花数: 水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身
# (例如:1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153)。)
a=int(input('请输入三位数:'))
b=a%10 #个位数
c=a%100//10#十位数
d=a//100#百位数
e=b**3+c**3+d**3
print(e)
if a==e:
print('您输入的%s为水仙花数'%(a))
else:
print('您输入的%s不是水仙花数'%(a))
# 5.
# 用户输入年份, 输出结果是闰年还是平年(闰年: 1.能整除4且不能整除100 2.能整除400)
a=int(input('请输入年份:'))
if (a%4==0 and a%100>0) or a%400==0:
print('您输入的%s是闰年'%(a))
else:
print('您输入的%s是平年'%(a))
# 6.输入公交卡当前的余额, 空座位数,只要超过2元,就可以上公交车;
# 没钱, 撵走;如果空座位的数量大于0,就可以坐下;
a=int(input('请输入公交卡余额:'))
if a>=2:
b = int(input('请输入公交空座位数:'))
if b>0:
print('坐下')
else:
print('上车')
else:
print('撵走')
# 7.成绩等级:
#90分以上: 等级为A
# 80 - 90: 等级为B
# 60 - 80: 等级C
# 0 - 60: 等级为D
a=int(input('请输入你的成绩:'))
if a>=60:
if a>=80:
if a>=90:
print('A')
else:
print('B')
else:
print("C")
else:
print('D')
# 8.场景应用: 上火车(用变量表示是否有票, 是否有刀具)
# 是否有票, 有票打印可以进站;
# 进站查看是否带有刀具, 有刀具, 没收上车, 没有刀具, 直接上车
# 没票打印不可以进站
a=input('有没有票:')
if a=='有':
b = input('是否带刀:')
if b=='是':
print('没收上车')
else:
print('直接上车')
else:
print('没票不可以进站')
# 9.女友的节日:
# 定义holiday_name字符串变量记录节日名称
# 如果是 情人节 应该 买玫瑰/看电影
# 如果是 平安夜 应该 买苹果/吃大餐
# 如果是 生日 应该 买蛋糕
# 其他的时候,每天都是节日
holiday_name=input('今天是什么日子:')
need='每天都是节日'
if holiday_name=='情人节':
need='买玫瑰/看电影'
if holiday_name=='平安夜':
need='买苹果/吃大餐'
if holiday_name=='生日':
need='买蛋糕'
print(need)
# 10.
# 英雄联盟(LOL)
# 李青技能:
# q, Q: 天音波
# w, W: 金钟罩 / 铁布衫
# e, E: 天雷破 / 摧筋断骨
# r, R: 猛龙摆尾
LiQing=input('请输入李青技能按键:')
x='请正确输入技能按键'
if LiQing=='q' or LiQing=='Q':
x='天音波'
if LiQing=='w' or LiQing=='W':
x='金钟罩/铁布衫'
if LiQing=='e' or LiQing=='E':
x='天雷破/摧筋断骨'
if LiQing=='r' or LiQing=='R':
x='神龙摆尾'
print(x)
# 11.
# 让用户输入三个任意的整数, 比较三个数的大小, 输出最大的数
a=int(input('请输入第一个数'))
b=int(input('请输入第二个数'))
c=int(input('请输入第三个数'))
if a>b :
if a>c:
print(a)
else:
print(c)
else:
if b>c:
print(b)
else:
print(c)
# 12.
# 用户决定是否发工资, 工资数是多少, 信用卡欠款;
# 有剩余的时候, 显示剩余金额(图1)
a=input('今天发不发工资:')
if a=='发':
b=input('换完信用卡还有剩余吗:')
if b=='有':
print('今晚Happy')
else:
print('噢,no')
else:
print('盼工资')
No2.
pass: 空语句 先占位置
多个if
if…else
if 条件:
条件成立执行的代码
elif 条件:
条件成立执行的代码
elif 条件:
条件成立执行的代码
elif 条件:
条件成立执行的代码
else:
以上条件都不满足
结合if使用
模块: 随机数 (random)
导入: import 模块名 (统一写到py文件的开头)
模块名.函数名()
. : 的
import random
生成随机数: random.randint(start,stop)
start: 开始值
stop: 结束
应用: 石头剪刀布
1.用户输入石头(0) 剪刀(1) 布(2)
2.电脑随机出石头(0)剪刀(1)布(2)
3.得知游戏胜负: 平局 用户胜 用户输
产生结果的时候,输出用户出的和电脑随机产生的数值
用户胜,用户出的为石头(0),电脑出的为剪刀(1)
平局: 用户输入 = 电脑随机产生
胜: 用户:0 电脑: 1; 用户: 1 电脑: 2; 用户: 2,电脑: 0
输: 不是平不是胜
import random
# a=random.randint(5,96)
#
# print(a)
a = random.randint(0, 2) # 电脑出的
b = int(input('请输入你要出的(石头0 剪刀1 布2):'))
if a == 0:
c = '石头'
elif a == 1:
c = '剪刀'
elif a == 2:
c = '布'
if b == 0:
d = '石头'
elif b == 1:
d = '剪刀'
elif b == 2:
d = '布'
else:
d = '错'
if a == b:
print('平局,电脑出的%s,用户出的%s' % (c, d))
elif (a == 0 and b == 2) or (a == 1 and b == 0) or (a == 2 and b == 1):
print('用户胜,用户出的%s,电脑出的%s' % (d, c))
else:
print('电脑胜,电脑出的%s,用户出%s' % (c, d))
bug: 程序崩溃
捕获异常
try:
可能出现问题的代码
except:
出现问题以后执行的代码
try:
可能出现问题的代码
except Exception as e:
出现问题以后执行的代码
e: 表示错误原因
数据库的使用
try:
可能出现问题的代码
except:
出现问题以后执行的代码
finally:
无论程序是否崩溃,都会执行该代码(关闭数据库)
try:#可能出现问题的代码
a = 9 / 0
print(a)
except:#出现问题以后执行的代码
print("0不能作为除数")
finally:#无论程序是否崩溃,都会执行该代码
print('00不能作为除数')
复合运算符: += -= *= /= %=
a += 10 a = a + 10
a -= 10 a = a - 10
a *= 10 a = a * 10
a /= 10 a = a / 10
# 用户8块钱买了一只鸡,9块钱卖出去了,然后觉得亏了,
# 又花了10块钱买了回了,然后11块钱卖出去了,问最后用户赚了还是亏了?赚多少,亏多少?
a = 0
a -= 8
a += 9
a -= 10
a += 11
if a > 0:
print('赚了%s元' % (a))
elif a == 0:
print('不挣不赔')
else:
print('赔了%s元' % (a * -1))
print(a)
循环结构: 重复执行某些代码 while循环 for循环
while循环:
while 条件:
需要重复执行的代码
条件: 控制循环的次数
循环步骤:
1.初始化循环变量
2.判断循环条件
3.执行循环代码
4.更新循环变量值
初始化: 变量的第一次赋值
死循环: 代码一直在执行 (做游戏,爬虫)
存储:
磁盘: 文件
内存: 存储软件运行时产生的数据
循环步骤:
1.初始化循环变量
2.判断循环条件
3.执行循环代码
4.更新循环变量值
# 1.初始化循环变量
i = 1
# 2.判断循环条件
while i < 5:
# 3.执行循环代码
print('hello world',i)
# 4.更新循环变量的值
i = i + 1 # i = 1 i = 2 i = 3 i = 4 i = 5
print('循环结束',i)
1 --> 2,3,4 --> 2,3,4 --> 2,3,4 --> 2,3,4 --> 2的条件不满足的时候,循环结束
用户胜,结束,其他情况,继续玩
import random
i = True
while i:
a = random.randint(0, 2) # 电脑出的
b = int(input('请输入你要出的(石头0 剪刀1 布2):'))
if a == 0:
c = '石头'
elif a == 1:
c = '剪刀'
elif a == 2:
c = '布'
if b == 0:
d = '石头'
elif b == 1:
d = '剪刀'
elif b == 2:
d = '布'
else:
d = '错'
if a == b:
print('平局,电脑出的%s,用户出的%s' % (c, d))
elif (a == 0 and b == 2) or (a == 1 and b == 0) or (a == 2 and b == 1):
print('用户胜,用户出的%s,电脑出的%s' % (d, c))
i = False
else:
print('电脑胜,电脑出的%s,用户出%s' % (c, d))
循环能开始,条件成立;循环结束,条件不成立的时候
break语句: 强制退出循环
i = 0
while i < 6:
print('hello world',i)
# i = i + 1
i += 1
if i == 4:
# 强制退出循环
break
print('你好,世界')
print('循环结束')
continue语句: 退出某次循环,但是循环继续执行
i = 0
while i < 6:
print('hello world', i)
i += 1
if i == 4:
continue
print('hello python')
print('循环结束')
# 1.输出1-100的数
i = 1
while i < 101:
print(i)
i += 1
# 2.求1-100的和
i = 1
b = 0
while i < 101:
b = b + i
print(i, b)
i += 1
# 3.求1-100的偶数和
i = 0
b = 0
while i < 101:
i += 1
if i % 2 > 0:
continue
b = b + i
print(i, b)
# 练习1:
# **********
# **********
# **********
# **********
# **********
i = 0
while i < 5:
print('*' * 10)
i += 1
# 练习2:
# *
# **
# ***
# ****
# *****
# ******
# ***** 5
# **** 4
# *** 3
# ** 2
# * 1
i = 1
b = True
while b:
print('*' * i)
if i == 6:
break
i += 1
while b:
i -= 1
print('*' * i, i)
if i == 1:
break
print(i, b)
# 1
# 12
# 123
# 1234
# 12345
# 123456
# 1234567
# 12345678
# 123456789
i = 2
b = '1'
while i < 11:
print(b)
b = b + str(i)
i += 1
\n: 换行
\t: 制表符 (tab)
print(内容,end=“该print以…结尾”)
print(0)
print(1, end='')
print(2, end='\n')
print(3, end='\n\n')
print(4,end='\n\n\n')
print(5,end='我是你爹爹')
print(6,end='\t')
print(7)
嵌套循环: 循环里面套循环
外面的循环每执行一次,里面的循环全部执行一遍
# 1
# 12
# 123
# 1234
# 12345
# 123456
# 1234567
# 12345678
# 123456789
i = 1
while i <= 9:
j = 1
while j <= i:
if j < i:
print(j, end="")
else:
print(j, end="\n")
j += 1
i += 1
# 1
# 12
# 123
# 1234
# 12345
# 123456
# 1234567
# 12345678
# 123456789
i = 1
while i <= 9:
j = 1
while j <= i:
print(j, end="")
j += 1
print()
i += 1
第二天作业
# 1. 计算从1到1000以内所有能被3或者17整除的数的和并输出
i = 1
j = 0
while i < 1001:
if i % 3 == 0 or i % 7 == 0:
j = j + i
print(i, j)
i += 1
# 2. 求1到10的阶乘 (格式为 5的阶乘为: 120 )
# 5: 5 * 4 * 3 * 2 * 1
# 4: 4 * 3 * 2 * 1
# 3: 3 * 2 * 1
# 2: 2 * 1
# 1: 1
# 结果:
# 5的阶乘为: 120
i = 10
while i > 0:
j = i
while j > 0:
if j == 1:
print(j)
else:
print(j, end="*")
j -= 1
i -= 1
i = 10
while i > 0:
j = i
b = 1
while j > 0:
b = b * j
if j == 1:
print('%s的阶乘结果为%s'%(i,b))
j -= 1
i -= 1
# 3. 求一到十阶乘之和。(1: 1 2: 2 3: 6 4: 24 5: 120)
i = 10
e = 0
while i > 0:
j = i
b = 1
while j > 0:
b = b * j
if j == 1:
print('%s的阶乘结果为%s' % (i, b))
j -= 1
e = e + b
print(e)
i -= 1
# 4. 功能:用户登录(三次机会尝试)
# 用户名密码:
# name = "aaa"
# password = "123"
# 让用户输入,如果输入正确,显示登录成功, 失败,显示还有几次机会, 超过三次失败,显示失去登录机会,明天再来。退出程序。
name = "aaa"
password = "123"
i = 0
while i < 3:
a = input('输入用户名:')
b = input('输入密码:')
if a == name and b == password:
print('登陆成功')
break
else:
print('登录失败')
i += 1
if i == 3:
print('超过三次输入错入,失去登录机会')
# 5. 打印出所有的“水仙花数”。
# 所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
# 例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
i = 100
while i < 1000:
a = i // 100 # 百位数
b = i // 10 % 10 # 十位数
c = i % 10 # 个位数
if a ** 3 + b ** 3 + c ** 3 == i:
print(i, a, b, c)
i += 1
# 6.五位数中,对称的数称为回文数,打印所有的回文数并计算个数。如:12321
i = 10000
j = 0
while i < 100000:
a = i // 10000 # 万位数
b = i // 1000 % 10 # 千位数
d = i % 100 // 10 # 十位数
e = i % 10 # 个位数
if a == e and b == d:
j += 1
print(i, j)
i += 1
# 7.输出9行内容,第1行输出1,第2行输出12,第3行输出123,以此类推,第9行输出123456789。(两种方式)
# 1
# 12
# 123
# 1234
# 12345
# 123456
# 1234567
# 12345678
# 123456789
i = 1
while i < 10:
j = 1
while j <= i:
print(j, end='')
j += 1
print()
i += 1
# 8.打印等腰三角形
# *
# ***
# *****
# *******
# *****
# ***
# *
i = 1
while i <= 7:
print('*' * i)
if i == 7:
break
i += 2
while i > 0:
i -= 2
print('*' * i)
# 9.打印菱形 print(' ' * 3,end='')
# print('*')
# *
# ***
# *****
# *******
# *****
# ***
# *
i = 4
j = 1
h = 1
while i < 8:
print(' ' * (i - j), end='')
print('*' * j)
i += 1
j += 2
while i > 5:
i -= 1
print(' ' * h, end='')
h += 1
print('*' * (i - h))
# 10.打印九九乘法表
# 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
i = 1
while i < 10:
j = 1
while j <= i:
print('%s*%s=%s' % (j, i, j * i), end='\t')
j += 1
print()
i += 1
# 11.公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。
# 到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
i = 7
j = 1
while i > 0:
print('桃子数%s,第%s天' % (j, i))
j = (j + 1) * 2
i -= 1
# 12.求出1-100所有的质数(质数: 只能被1和它本身整除的数)
# 9: 2,3,4,5,6,7,8
#
# 6: 2,3,4,5
i = 1
while i < 101:
j = 2
b = 0
while j <= i:
if i % j == 0:
b += 1
j += 1
if b < 3:
print(i, end=',')
i += 1