1.变量
1.声明变量(定义) --假的声明
说明:变量名 - 标识符(不能是关键字)
- 1.遵守PEP8命名规范(所有字母都小写,多个单词组成,单词之间用下划线隔开)
- 2.见名知意 看到名字就知道意思
- 3.变量名 = 值。= :赋值符号。将右边的值赋给左边的变量。
值:可以使任何有结果的表达式。
例:190 变量,10+20,调用函数表达式。 - 4.使用变量的时候,就是使用变量中保存的值;
- 5.变量先声明(赋值),再使用
2.声明变量的方式
- 1.直接赋值
age = 18
name = 'lorry'
print(age)
- 2.同时声明多个变量,并且赋一样的值
a1 = a2 =a3= a4 =a5 =10
print(a1,a2,a3,a4,a5,sep=' $ ')
- 3.同时声明多个变量,赋不同的值,变量的个数和值得个数要保持一致
aa,bb = 10,20
print(aa,bb)
[x,y] = ["lorry","lorrybz"]
print(x,y)
- 4.给同一个变量,后赋的值会覆盖原先的值,同一个变量可以存储不同类型的值
num1 = 1
num1 = 2
print(num1)
num1 = "lorry"
print(num1)
num1 = [1,2,3,"lorry"]
print(num1)
aaa = [1,2,3,"lorry"]
aaa[0]="lorrbz"
print(aaa)
3.声明变量的本质
- 1.结论:python所有的变量存的都是数据在内存中的地址。内存地址大小一样。用一个变量给另外一个变量赋值,实质是将变量中的地址赋给另外一个变量。使用变量的时候,是使用变量中地址对应的值。
- 2.3.变量的三要素:值、地址和类型
值:变量中存的地址对应的值
地址:变量中存储的地址
类型:变量中存的地址对应的值的类型
name1 = "小明"
name2 = name1
print(name1) #使用变量拿到变量中地址对应的值
print(id(name1)) # id(变量) 获取变量中存储的地址
print(id(name2))
print(type(name1),type(name2 ))
2.运算符
python 中的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符
1.数学运算符
- 1.基本操作:+:加法运算 -:减法运算 *:乘法运算 /:÷法运算(基操)
- 2.稍微高点的基操:
- %:取余(求余数)
获取一整数的最低一位或者几位的值
- %:取余(求余数)
print(10%3)
a = 35648
print(a % 10,a % 100)
- //:整除
- 判断一个数是否能被另外一个数整除;2. 整除 取商的部分.
print(10 // 3,10 % 3)
print(3.9 // 3,3.9 % 3)
num1 = 289
print(num1 // 100)
- **:幂运算 x的y次方
print(2**10) #2的10次方
print(9**0.5) #9开平方
print(int(8**(1/3))) #8开3次方 取整
2.比较运算符 : >, <, ==,!=,>=,<=
注意:比较运算符的运算结果都是布尔值
print(100 >10,10>100,10 > 10 )
print(11 == 10,11 !=10,"lorry" == "lorry")
3.逻辑运算符:and or not
逻辑运算符的运算对象是布尔值,运算符结果也是布尔值
-
- and(逻辑与运算)
布尔1 and 布尔2 ;值1 and 值2
如果值1和值2的结果都为true,结果才是true。只要有一个false,结果为fals
- and(逻辑与运算)
and | 值1(true) | 值2(false) |
---|---|---|
值1(false) | false | false |
值2(true) | true | false |
注意:逻辑与运算相当于生活中的“并且”;当需要多个条件同事满足就使用 and 链接在一起
例子:例子:要求成绩 > 90分,并且表现分>95.
name = input("名字:")
grade = int(input("表现分数:")) #成绩
score = int(input("成绩分数:")) #分数
print('%s 是否获得奖学金:'%name,grade >90 and score >90)
-
- or(逻辑或运算)
值1 or 值2 如果值1和值2中有一个true,就是true,两个false才为false
- or(逻辑或运算)
or | 值1(true) | 值2(false) |
---|---|---|
值1(false) | true | false |
值2(true) | true | true |
逻辑 或 运算 相当于生活中的“或者”,当需要多个条件中至少有一个条件满足,就使用 or 连接在一起
例:要求成绩 > 90分或者表现分>95.
name = input("名字:")
grade = int(input("表现分数:")) #成绩
score = int(input("成绩分数:")) #分数
print('%s 是否获得奖学金,表现分数%s,成绩分数%s'%(name,grade,score),grade,grade >90 or score >90)
-
- not (逻辑 非 运算) 用来对某个条件否定。
not值 :如果值是true,结果是false;如果值是false,结果是true
例:是否能进入网吧的条件:年龄不小于18
- not (逻辑 非 运算) 用来对某个条件否定。
age = 21
print("是否能进入网吧",not age < 18)
print("是否能进入网吧:",age >= 18)
4.赋值运算符
=; +=; -=; *=; /= ;%=
所有赋值运算符的左边必须是变量;组合的赋值运算符左边的变量必须已经赋值
所有的赋值运算符最终都会进行赋值操作。
- 1.# 1.= 直接赋值
num = 1
-
- += -= *= /= %=
变量 += 值 相当于:变量 = 变量 + 值()
变量 -= 值 相当于:变量 = 变量 - 值()
变量 *= 值 相当于:变量 = 变量 * 值()
变量 /= 值 相当于:变量 = 变量 / 值()
- += -= *= /= %=
a = 1
a +=1 # a = 1+1
print(a)
a *=2 # a= 2*2
print(a)
a /= 2 # a =4/2
print(a)
a %= 2 # a = 2%2
print(a)
-
- 运算符的优先级
**数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符 **
优先级高的先算。如果有括号先算括号里面的。
- 运算符的优先级
数学运算符中:** > *,/,%,// > +,-
num = 10 +20 > 25 and True < 2
# num = 30 > 25 and True < 2
# num = True and True
# num = True
print(num)
num = 10 +(20 > 25 and True < 2)
print(num)
# num = 10 +(False and True) and 前面如果False不会管后面,直接False
# num = 10
num = 10+2*3**2
print(num)
5.位运算符
位运算是正对二进制中每一位进行的相关操作
位运算(bit) &(与) |(或) ^(异或) ~(取反) >>(左移) <<(右移)
- a.(数字1) & (数字2) ->二进制的每一位进行" 与" 运算,运算时:如果都为1,结果为1,否则为0.
1 & 1 为1
0 & 1 为0
1 & 0 为0
0 & 0 为0
特点:一位上的数如果和1与,就会保留这一位上的数,如果和0与,就会是0.
应用:判断一个数的奇偶性(最优解答)
将数字和1 与,如果结果是0,数字是偶数,如果结果是1,数字是奇数。
a = int(input("输入任意数:"))
b = 1
c = a & b
print(c)
if c == 1:
print("%s"%a+"是"+"奇数")
elif c == 0:
print("%s" % a + "是" + "偶数")
举例 11010
举例 00111
结果 00010
3(原) = 0011
2(原) = 0010
3 & 2 = 0 0 1 0(补码)
3 & -2
3(原/补) = 0011
2(原) = 0010
-2(原码) 1010 = 1101(反) = 1110(补码)
0010(补码,依然是正数)
print(3 & 2)
print(3 & -2)
print(5 & 1,100 & 1)
- b. 数字1 | 数字2 如果有一位是1结果是1,两个都为0结果才是0.
1 | 1 - 1
1 | 0 - 1
0 | 1 - 1
0 | 0 - 0
1101 | 1010 结果 1111
3 | 20
3(原) = 000011
20(原) = 010100
000011 | 010100 = 0100111
-3 | 20
-3(原码) = 100011(原码) = 111100(反码) = 111101(补码)
20(原码/补码) = 010100
-3 | 20 111101(补码)
补码转反码 -1 111100(反码)
100011(原码)= -3
print(-3|20)
- c.按位取反
~ 数字 将每一位取反(0变成1,1变成0)
print(~2)
# 010 > 101(补码) = 100(反码) = 111 = -3
- d.按位异或
(数字1) ^ (数字2) -判断每一位相同为0,不同为1
可判断 数字是否相同。
11 - 01011
2 - 00010
11^2 01001(补码)
print(11^2)
- e.左移<<
(数字1 )<< n (位数) - 将指定的数字的每一位向左移指定的位数,就是在二进制的后面加指定的0.
左移1位 乘以2,左移2位 乘以4 相当于x * (2**n)
10 << 1 左移过程
00001010(补码) - 00010100(补码)
-10 <<1
11010 -> 10101(反码)=10110(补码) << 1 = 101100(补码) = 101011(反码) = 110100 = -20
代码:
print(10 <<1,10 <<2,10<<3,10<<4)
- f.右移 >> ;(数字1 )>>n(位数) 将数字的二进制位向右移动指定的位数(将低位删除指定的位数).
相当于:** 数字1 //(2n)
20 右移过程
10100 >> 2 = 0101 =5
0101 >> 1 = 010 = 2
010 >> 1 = 01= 1
01 >> 1 = 0 = 0
3.字符串
1.什么是字符串
是python中常用的有序的但不可变的容器类的数据类型,可以同时存储多个字符。属于序列
字面量:使用单引号或者双引号将任意字符引起来。
a = ('allal我是你爸爸,the top is your dad?')
b = len(a)
print("这句话:"+a+"有%s"%b+'个字符')
2.字符串的内容
a.普通字符:包含数字字符、字母、普通符号:+ - * /
"1 2 3","sdsds","&&%90"
b.转义字符:通过 \ 将一些字符转换成有特殊功能或者特殊意义的字符
例如:
\t(制表符),
\n(换行)
print("ads\nsda5")
print("\tads\nsda5")
print("adssda5",end="\t")
print("lorry",end="\t")
print("2222222")
' 一个单引号
" 一个双引号
\\ 单纯的 \ 不会换行
print('ads\'sda5',"ads'sda5") #加\用来区分字符
print("ads\\nsda5")
注意:一个转义字符代表一个字符
c.阻止转义:在字符串前面加R/r,可以阻止转义字符转义
print(r"ads\nsda5")
print(r'\b') #退格,检测边界