day3 变量、数学比较逻辑赋值、按位运算、字符基操

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)
  • //:整除
  1. 判断一个数是否能被另外一个数整除;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

逻辑运算符的运算对象是布尔值,运算符结果也是布尔值

    1. and(逻辑与运算)
      布尔1 and 布尔2 ;值1 and 值2
      如果值1和值2的结果都为true,结果才是true。只要有一个false,结果为fals
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)
    1. or(逻辑或运算)
      值1 or 值2 如果值1和值2中有一个true,就是true,两个false才为false
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)
    1. not (逻辑 非 运算) 用来对某个条件否定。
      not值 :如果值是true,结果是false;如果值是false,结果是true
      例:是否能进入网吧的条件:年龄不小于18
age = 21
print("是否能进入网吧",not age < 18)
print("是否能进入网吧:",age >= 18)

4.赋值运算符

=; +=; -=; *=; /= ;%=
所有赋值运算符的左边必须是变量;组合的赋值运算符左边的变量必须已经赋值
所有的赋值运算符最终都会进行赋值操作。

  • 1.# 1.= 直接赋值
num = 1
    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)
    1. 运算符的优先级
      **数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符 **
      优先级高的先算。如果有括号先算括号里面的。
数学运算符中:** > *,/,%,// > +,- 
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')  #退格,检测边界

你可能感兴趣的:(day3 变量、数学比较逻辑赋值、按位运算、字符基操)