python基础语法
目录
计算机基础
cpu:人类的大脑
内存 临时此处一些数据 解决硬盘和cpu 速度差
硬盘 永久存储数据
操作系统 一个特殊的程序 调度硬件和软件之间的数据交互
编译型:c,c++
**将代码一次性全部编译成二进制,然后再执行**。
优点:执行效率高。
缺点:开发效率低,不能跨平台。
代表语言:C
解释型:python,强累定义语言
逐行解释成二进制,**逐行运行**。
优点:开发效率高,可以跨平台。
缺点:执行效率低。不能加密
代表语言:python。
混合型
java
python的种类(解释器)
Cpython:官方推荐**解释器**。可以转化成C语言能识别的字节码。(c)
**Jpython**: 可以转化成Java语言能识别的字节码。(java)
**Ironpython**:可以转化成.net语言能识别的字节码( c#)
**pypy**:转换成 动态编译。(python)两块 开发快运行快
ipython 和cpython在终端上有一点区别
变量
命名规范
变量:代指一些内容、便利贴
1.变量全部由**数字,字母 下划线**任意组合。(不行有,。;’【】等)
不能以数字开头。
2.不能是python的关键字。
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
3.要具有描述性。name= '骚强' 不能使用中文。 不能过长。
x8 = 100 # True
b__ = 12 # True
4g = 32 # False
_ = 11 # True
*r = 12 # False
r3t4 = 10 # True
t_ = 66 # True
推荐
- 驼峰体:AgeOfOldboy = 73
- 下划线:age_of_oldboy = 73where:
代指一些复杂过长的数据。
content = 'sfkdsjalfjdsl‘
变量的小高级
变量的小高级:从上往下走
age1 = 18
age2 = age1#=代表指向
age3 = age2
age2 = 12
print(age1,age2,age3) # 18 12 18 出现这个情况是 age2改变了指向 age1 age3还指向原来的
在看一个列题
age1 = [1]
age2 = age1#=代表指向
age3 = age2
age2 = []
print(age1,age2,age3)#[1] [] [1]
常量
# 常量 约定俗成不能改变 一般大写表示
python中没有真正的常量,为了应和其他语言的口味,全部大写的变量称之为常量。
将变量全部大写,放在文件的最上面。
设置一些不变的量 :身份证号,id等
BIRTH_OF_CHINA = 1949
注释(重点)
文言文中对一些晦涩难懂的成语或者经典的出处 解释说明。便于你理解。
便于你理解对方的代码,自己的代码。
单行(单行)注释: # **注释的代码不执行**
多行注释: '''被注释内容''' """被注释内容"""#变成了字符串并没有引用
难以理解的代码后面,加注释。
函数,类,文件都需要注释,解释说明。 好理解
初识int str bool
int(整型):
1 ,2, 123, ....
+ - * / 运算
str(字符串)
凡是用 引号 引起来的数据就称之为字符串。
'', "", ''' ''', """ """
# 单双引号可以配合使用
# 三引号:换行的字符串
# str + str *** 字符串的拼接 (都是字符串才可以)
# str * int 字符串的相乘(字符串与数子)
bool
就是True False
实列
# print(2 > 1)
# print(3 < 1)
# print(True)
# print('True')
type 与isinstance
type() 查看属于什么类
isinstance(b,str)是不是b是不是 str 实列化出来的对象
input 与print 的注意事项
python3 input 获取的都是字符串
print()的几个参数
# print(*objects, sep=' ', end='\n', file=sys.stdout)
# objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
# sep -- 用来间隔多个对象,默认值是一个空格。
# end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
# file -- 要写入的文件对象。*3/2)
\t tab 建 \n 换行
流程控制语句
基本结构:
if 条件: #判断
缩进 结果 #条件成立后执行的(4个空格)
# if{条件}{结果}
单分支
if 条件:
满足条件后要执行的代码
实列
if 2 < 1:
print(666)
print(222)
双分支
if 条件:
满足条件执行代码
else:
if条件不满足就走这段
实列
age = input('请输入年龄:')
if int(age) > 18:
print('恭喜你,成年了')
else:
print('小屁孩儿')
多分支
if 条件:
满足条件执行代码
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
else:
上面所有的条件不满足就走这段
实列
num = int(input('猜点数:'))
if num == 1:
print('晚上请你吃饭')
elif num == 3:
print('一起溜达')
elif num == 2:
print('请你大宝剑')
else:#以上都不符合条件
print('太笨了....')
print('组合')
多选 纯if
if 条件:
满足条件执行代码
if 条件:
上面的条件不满足就走这个
实列
if 5>2:
print(666)
if 5>3:
print(666)
嵌套的if
if 条件:
if 条件:
满足条件执行代码
实列
username = input('请输入用户名:')
password = input('请输入密码:')
code = 'qwer'
your_code = input('请输入验证码:')
if your_code == code:
if username == 'taibai' and password == '123':
print('登录成功')
else:
print('账号或者密码错误')
else:
print('验证码错误')
在Python语言中,也有三元运算符。不过Python的三元运算符和java以及C#有所区别,语法格式为:
表达式1 if 条件表达式 else 表达式2
当表达式返回True时,返回结果表达式1,否则返回结果表达式2。示例:
c = a if a < b else b
for else
结果
for i in [1,2]:
if i==2:
break
else:
print(i)
else:
for i in range(6):
print(i)
结果
for i in [1,2]:
if i==2:
break
else:
print(i)
for i in range(6):
`print(i)
while 循环
while 条件:
循环体
循环终止
改变条件 或者continue break
改变条件
flag = True
while flag:
print('狼的诱惑')
print('我们不一样')
print('月亮之上')
flag = False
print('庐州月')
print('人间')
continue break
# while else: while 循环如果被break打断,则不执行else语句。
count = 1
while count < 5:
print(count)
if count == 2:
break
count = count + 1
else:
print(666)
你需要重复之前的动作,输入用户名密码,考虑到while循环。
for循环 len() range () 学习
len()#获取可迭代对象长度
fro循环
range #默认从0开始 可以步长 类似列表 顾头不顾尾
range注意事项
s = range(1,10) # 面试大坑 python2 和 python3
print(s) # 范围 range(1, 10)
格式化输出 3种
当你遇到这样的需求:字符串中想让某些位置变成动态可传入的,首先要考虑到格式化输出。
只有小s 不可以大写
%s 字符串 %d int整型 %%(转义) 字符串格式化 不能多 不能少且要一一对应
name=input('>>>') #第一种
print('我的名字是%s'%(name))
#第2种 {}括号
name=input('>>>')
print(f'我的名字是{name}')
f扩起来{}包占位的
# 第三种字符串格式化 format
# name = "alex{}wusir{}"
# name1 = name.format('结婚了',"要结婚了") # 按照位置顺序去填充的
# name = "alex{1}wusir{0}"
# name1 = name.format('结婚了',"要结婚了") # 按照索引位置去填充
# name = "alex{a}wusir{b}"
# name1 = name.format(a="结婚了",b="马上结婚") # 指名道姓 填充
# print(name1)
运算符 与and运算
算数运算 +, - ,\* ,/ ,%, **幂,//取整 %取余
比较运算符 == , != , > ,< , >= , <=
赋值运算符 = ,+= ,-= ,\*= ,/= ,**= ,%= ,//=
逻辑运算符 and(与 -- 和) or (或) not (非 -- 不是)
成员运算符 in 在 not in 不在
身份运算 is是 is not 不是
# 在没有()的情况下,优先级:not > and > or,同一优先级从左至右依次计算
# and 运算 2都为真 and的后面***
# and 运算 2都为假 and的前面
# or 运算 2都为真 or的前面***
# or 运算 2都为假 or的后面
# and 运算 一真一假 取假
# or 运算 一真一假 取 真
一个等号代表的含义是赋值,将某一数值赋给某个变量,比如a=3,将3这个数值赋予给a。
两个等号是判断是否相等,返回True或False,比如1==1。他们是相等的,那么就返回true。1==2,他们是不相等的,那么就返回false。
is 判断id相同
数据类型之间的转换
# str ---> int : 只能是纯数字组成的字符串
s1 = '00100'
print(int(s1))
# int ----> str
i1 = 100
print(str(i1),type(str(i1)))
# int ---> bool : 非零即True ,0为False。
i = 0
print(bool(i))
# bool ---> int
print(int(True)) # 1
print(int(False)) # 0
编码的初识
计算机存储文件,存储数据,以及将一些数据信息通过网络发送出去,存储发送数据什么内容?底层都是01010101.
密码本:01010110 二进制与 文字之间的对应关系。
最早起的密码本:
英文1 欧洲2 亚洲3
ASCII码 只支持英文** 1字节
gbk 英1中2
Unicode 英2 中4
Utf-8 英文1 欧洲2 亚洲3
编码转化
bit是字位,也就是计算机存储数据的“0”、“1”,每个“0”、“1”都是一个字位。Byte是字节,是文件存储的最小单位,一个字节由八个字位组成,前七位是文件的名称,最后一位是校验位。1Byte=8bit,1KB=1024Byte,1MB=1024KB,1GB=1024MB,1TB=1024GB。
8bit = 1Byte****B
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
7.6MB ----> 7.6 * 1024 * 1024 * 8
非学,无以致疑;非问,无以广识