Python学习笔记-基础知识
Python学习笔记-基础知识
1、Python
1>简介
在程序中,为了更好的区分变量的功能和更有效的管理内存,变量也分为不同的类型。
Python是**==强类型==的==动态==**解释型语言。
强类型: 不允许不同类型相加。如整型+字符串会报错。
动态:不用显示声明数据类型,确定一个变量的类型是在第一次给它赋值的时候,也就是说: ==变量的数据类型是由值决定的==。
2>环境
- Linux下
- 安装解释器-python3.7.3(目前最新版)
安装包获取
# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
依赖包
# yum install zlib-devel openssl openssl-devel
- 安装IDE-pycharm
社区版安装包获取
# wget https://download.jetbrains.com/python/pycharm-community-2019.1.3.tar.gz
- Windows下
- 安装解释器-python3.7.3(目前最新版)
- 安装IDE-pycharm
- Mac下
2、变量
1>赋值
基本规则
1,赋值符号为:= ,符号两侧要有空格
2,调用时,直接调用即可
name = "zhangsan" # str类型
age = 25 # 25没有加引号,则为int类型;加了引号,则为str类型;
height = 1.8 # float类型
marry = True # bool类型
print(type(name)) # 通过type()内置函数得知变量的类型
print(type(age))
print(type(height))
print(type(marry))
2>调用
调用
1,结构调用
1.>print(num)
2.>if (i == 0):
2,拼接调用
num = 123
name = adc
1>print("{}的号码是{}".format(name,num))
2>print("%s的号码是%d"%(name, num))
3>print(name+"的号码是"+num)
3、基本数据类型简介
1>类型分类
- ==数字==
- int 整型(1, 2, -1, -2)
- float 浮点型(34.678)
- bool 布尔型(True/False)
- complex 复数(4+3J, 不应用于常规编程,这种仅了解一下就好
- ==字符串==
- str 按目前所学单引号,双引号和三引号内表示的内容为字符串
- 栗子:“hello world" "12345"
- ==列表==
- list 使用中括号表示 [1, 2, 3, 4]
- ==元组==
- tuple 使用小括号表示 (1, 2, 3, 4)
- ==字典==
- dict 使用大括号表示,存放key-value键值对 {"a":1, "b":2, "c":3}
- ==集合==
- set 也使用大括号表示,但与字典有所不同 {1, 2, 3, 4}
2>类型的转换
转换函数 | 说明 |
---|---|
int(xxx) | 将xxx转换为整数 |
float(xxx) | 将xxx转换为浮点型 |
str(xxx) | 将xxx转换为字符串 |
list(xxx) | 将xxx转换为列表 |
tuple(xxx) | 将xxx转换为元组 |
dict(xxx) | 将xxx转换为字典 |
set(xxx) | 将xxx转换为集合 |
chr(xxx) | 把整数[0-255]转成对应的ASCII码 |
ord(xxx) | 把ASCII码转成对应的整数[0-255] |
示例:
age = 25
print(type(age)) # int类型
age = str(25)
print(type(age)) # str类型
示例:
name = "zhangsan"
age = 25
print(name, "你" + age + "岁了") # str+int,字符串拼接报错;age=str(25),这一句就可以成功。
4、交互输入、输出(重点)
1>交互输入
python3中使用input()函数等待用户的输入(python2中为raw_input()函数)
示例:
name = input("what is your name: ")
age = input("what is your age: ") # input输入的直接就为str类型,不需要再str()转换了
print(name, "你" + age + "岁了")
小结: 用单引号,双引号,三引号, str()函数转换的和input()函数输入的都为字符串类型。
输出
2>普通输出
输出用print()
示例:
print("="*10) # 表示连续打印10个=符号
print("1-系统")
print("2-数据库")
print("3-quit")
print("="*10)
或者
print("="*10)
print('''1-系统 # 使用''' '''符号来换行
2-数据库
3-quit''')
print("="*10)
结果一样,如下:
3>格式化输出
很多语言里使用printf来进行格式化打印
python里不用printf,但也可以用 % 表示格式化操作符
操作符 | 说明 |
---|---|
%s | 字符串 |
%d | 整数 |
%f | 浮点数 |
%% | 输出 % |
示例:
name = "daniel"
age = str(20)
# 字符串拼接的写法
print(name+",你有"+age+"岁了")
# 两种格式化输出的写法
print("%s,你有%s岁了" % (name, age))
print("{},你有{}岁了".format(name, age))
小结:
- %s或%d相当于是一个占位符,按顺序一一对应后面()里的变量(需要类型对应)
- {}也相当于是一个占位符,按顺序--对应后面format()里的变量。这种写法的好处是不用对应类型
5、运算符
1>算术运算符(常用)
算术运算符 | 描述 | 实例 |
---|---|---|
+ | 加法 | 1+2=3 |
- | 减法 | 5-1=4 |
* | 乘法 | 3*5=15 |
/ | 除法 | 10/2=5 |
// | 整除 | 10//3=3 不能整除的只保留整数部分 |
** | 求幂 | 2**3=8 |
% | 取余(取模) | 10%3=1 得到除法的余数 |
2>赋值运算符(常用)
赋值运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,下面的全部为复合运算符 | c =a + b 将a + b的运算结果赋值给c |
+= | 加法赋值运算符 | a += b 等同于 a = a + b |
-= | 减法赋值运算符 | a -= b 等同于 a = a - b |
*= | 乘法赋值运算符 | a *= b 等同于 a = a * b |
/= | 除法赋值运算符 | a /= b 等同于 a = a / b |
//= | 整除赋值运算符 | a //= b 等同于 a = a // b |
**= | 求幂赋值运算符 | a ** = b 等同于 a = a ** b |
%= | 取余(取模)赋值运算符 | a %= b 等同于 a = a % b |
3>比较运算符(常用)
比较运算符 | 描述 | 实例 |
---|---|---|
== | 等于(注意与=赋值运算符区分开),类似shell里的-eq | print(1==1) 返回True |
!= | 不等于,类似shell里的-ne | print(2!=1) 返回True |
<> | 不等于(同 != ) | print(2<>1) 返回True |
> | 大于, 类似shell里的-gt | print(2>1) 返回True |
< | 小于, 类似shell里的-lt | print(2<1) 返回False |
>= | 大于等于 类似shell里的-ge | print(2>=1) 返回True |
<= | 小于等于 类似shell里的-le | print(2<=1) 返回False |
print(type(2<=1)) # 结果为bool类型,所以返回值要么为True,要么为False.
4>逻辑运算符(常用)
逻辑运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | x与y都为True,则返回True;x与y任一个或两个都为False,则返回False |
or | x or y | x与y任一个条件为True,则返回True |
not | not x | x为True,返回False; x为False,返回True |
5>成员运算符
在后面讲解和使用序列(str,list,tuple) 时,还会用到以下的运算符。
成员运算符 | 描述 |
---|---|
in | x 在 y 序列中 , 如果 x 在 y 序列中返回 True; 反之,返回False |
not in | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True; 反之,返回False |
在SQL语句里也有in和not in运算符;如(没有学习mysql的话,后面会学习了就知道了)
mysql > select * from xxx where name in ('tom','john');
6>身份运算符
身份运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y ,类似 id(a) != id(b)。如果不是同一个对象则返回结果 True,否则返回 False。 |
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一个内存空间), == 用于判断引用变量的值是否相等。
a = [1,2,3] # 后面会学到,这是列表
b = a[:] # 后面会学到,这是列表的切片
c = a
print(b is a) # False
print(b == a) # True
print(c is a) # True
print(c == a) # True
7>位运算符
大家还记得IP地址与子网掩码的二进制算法吗?
这里的python位运算符也是用于操作二进制的。
位运算符 | 说明 |
---|---|
& | 对应二进制位两个都为1,结果为1 |
| | 对应二进制位两个有一个1, 结果为1, 两个都为0才为0 |
^ | 对应二进制位两个不一样才为1,否则为0 |
>> | 去除二进制位最右边的位,正数上面补0, 负数上面补1 |
<< | 去除二进制位最左边的位,右边补0 |
~ | 二进制位,原为1的变成0, 原为0变成1 |
8>运算符的优先级
常用的运算符中: 算术 > 比较 > 逻辑 > 赋值
示例: 请问下面的结果是什么?
result = 3-4 >= 0 and 4 * (6 - 2) > 15
print(result)
result = -1 >= 0 and 16 > 15 # 算术运算后
result = False and True # 比较运算后
result = False # 逻辑运算后
6、判断语句(重点)
1>shell里的判断语句格式
shell单分支判断语句:
if 条件;then
执行动作一
fi
shell双分支判断语句:
if 条件;then
执行动作一
else
执行动作二
fi
shell多分支判断语句:
if 条件一;then
执行动作一
elif 条件二;then
执行动作二
elif 条件三;then
执行动作三
else
执行动作四
fi
shell里的case语句
case "变量" in
值1 )
执行动作一
;;
值2 )
执行动作二
;;
值3 )
执行动作三
;;
* )
执行动作四
esac
2>python里的判断语句格式
1<单分支判断语句
if 条件: # 条件结束要加:号(不是;号)
执行动作一 # 这里一定要缩进(tab键或四个空格),否则报错
# 没有fi结束符了,就是看缩进
2<双分支判断语句
if 条件:
执行动作一
else: # else后面也要加:
执行动作二
3<多分支判断语句
if 条件一:
执行动作一
elif 条件二: # elif 条件后面都要记得加:
执行动作二
elif 条件三:
执行动作三
else:
执行动作四
3>if嵌套
if嵌套也就是if里还有if,你可以无限嵌套下去,但层次不宜过多
1<格式:
if 条件一:
if 条件二:
执行动作一 # 条件一,二都为True,则执行动作一
else:
执行动作二 # 条件一True,条件二False,则执行动作二
执行动作三 # 条件一True,条件二无所谓,则执行动作三
else:
if 条件三:
执行动作四 # 条件一False,条件三True,则执行动作四
else:
执行动作五 # 条件一False,条件三False,则执行动作五
执行动作六 # 条件一False,条件二,三无所谓,则执行动作六
执行动作七 # 与if里的条件无关,执行动作七
2<示例:
name = input("what is your name: ")
age = int(input("how old are you: "))
sex = input("what is your sex: ")
if sex == "male":
if age >= 18:
print(name, "sir")
else:
print(name, "boy")
else:
if age >= 18:
print(name, "lady")
else:
print(name, "girl")
4>实例
示例1:
基本格式示例
# 单分支判断
if True:
print("真") # 前面一定要缩进(tab键或4个空格)
# 双分支判断
if True:
print("真") # 前面一定要缩进(tab键或4个空格)
else:
print("假") # 前面一定要缩进(tab键或4个空格)
# 多分支判断
num = 34
gnum = int(input("你猜:"))
if gnum > num:
print("大了") # 前面一定要缩进(tab键或4个空格)
elif gnum < num:
print("小了") # 前面一定要缩进(tab键或4个空格)
else:
print("对了") # 前面一定要缩进(tab键或4个空格)
示例2:
看看下面语句有什么错误
if 1 > 0:
print("yes")
else:
print("no")
print("haha")
print("hehe")
示例3:
通过年龄是否成年与性别来判断对一个人的称呼
name = input("what is your name: ")
age = int(input("how old are you: "))
sex = input("what is your sex: ")
if age >= 18 and sex == "male":
print(name, "sir")
elif age >= 18 and sex == "female":
print(name, "lady")
elif age < 18 and sex == "male":
print(name, "boy")
elif age < 18 and sex == "female":
print(name, "girl")
示例4:
input输入一个年份,判断是否为闰年(能被4整除但不能被100整除的是闰年,或者能被400整除的也是闰年)
year = int(input("输入一个年份:"))
if year % 4 == 0 and year % 100 != 0:
print("{}是闰年".format(year))
elif year % 400 == 0:
print("{}是闰年".format(year))
else:
print("{}是平年".format(year))
7、循环语句(重点)
- 一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成
1 while循环
- 只要满足while指定的条件,就循环。
1 while 循环的基本格式
while 条件:
条件满足时候:执行动作一
条件满足时候:执行动作二
......
注意: 没有像shell里的do..done来界定循环体,所以要看缩进。
示例: 打印1-10
i = 1
while i <= 10:
print(i, end=" ")
i += 1
2 for循环
for循环遍历一个对象(比如数据序列,字符串,列表,元组等),根据遍历的个数来确定循环次数。
for循环可以看作为定循环,while循环可以看作为不定循环。
1 for循环的基本格式
for 变量 in 数据:
重复执行的代码
示例:
for i in 1, 2, 3, 4, 5:
print(i, end=" ")
print()
for i in range(1, 6): # range()函数,这里是表示1,2,3,4,5(不包括6)
print(i)
for i in range(6): # range()函数,这里是表示0,1,2,3,4,5(不包括6,默认从0开始)
print(i)
for i in range(1, 100, 2):
print(i, end=" ")
print()
for i in range(100, 1, -2):
print(i, end=" ")
示例: 用for循环来实现 1-100之间能被5整除,同时为奇数的和
sum = 0
for i in range(1, 101):
if i % 5 == 0 and i % 2 == 1:
sum += i
print(sum)
3>循环控制语句
continue 跳出本次循环,直接执行下一次循环
break 退出循环,执行循环外的代码
exit() 退出python程序,可以指定返回值
示例: 猜数字小游戏
import random # 导入随机数模块(后面会专门讲模块的使用,这里先拿来用用)
num = random.randint(1, 100) # 取1-100的随机数(包括1和100)
while True:
gnum = int(input("你猜:"))
if gnum > num:
print("猜大了")
elif gnum < num:
print("猜小了")
else:
print("猜对了")
break
print("领奖")
示例: 用while循环实现1-100中的所有偶数之和
i = 2
sum = 0
# 方法一
while i <= 100:
sum += i
i += 2
print(sum)
# 方法二
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(sum)
# 方法三(了解)
while i <= 100:
if i % 2 == 1:
i += 1
continue
else:
sum += i
i += 1
print(sum)
4>循环嵌套
if,while,for都可以互相嵌套
示例: 打印九九乘法表
打印九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print("{}*{}={}".format(j, i, i*j), end=" ")
print()
扩展语法:
for也可以结合else使用,如下面判断质数(只能被1和自己整除的数)的例子
num = int(input("输入一个大于2的整数"))
for i in range(2, num):
if num % i == 0:
print("不是质数")
break
else: # 这里的else是与for在同一列上,不与if在同一列。
print("是质数")