python-day2

01.print函数

1.python常用快捷方式:

control + / ------ 单行注释
control + s ------ 保存
control + b ------ 编译(编译执行)
control + n ------ 新建文件
control + c ------ 复制
control + v ------ 粘贴
control + a ------ 全选
control + x ------ 剪切
control + z ------ 撤销
control + y / control + shift + z------ 反撤销(撤销前的状态)
按住control不放,让鼠标可以同时在多个位置设置光标
control + f ------ 弹出搜索框

2.print函数是python内置函数,作用是在控制台打印print后面()里面的任何内容

  • ()里面的单引号,是字符串的标志,而不是内容
  • 在python2.x中,print'hello world'可以不用添加括号
  • 在python3.x中,print后面需要括号
  • A.B.C版本号。A-->重大修改(不向下兼容) B-->添加新的功能 C--->修复bug
print('hello world!!!!')

结果
hello world!!!!

02.python基础语法

1.注释

注释就是代码源文件中,用来进行注解说明的文字,不会对代码的功能产生任何影响。
注意:好的代码和优秀的程序员,需要对代码通过注释进行说明。

  • 单行注释:在需要注释的内容前面加#号
#内容
  • 多行注释:分别可以用三个单引号或三个双引号对内容注释如下
'''
内容
'''
"""
内容
"""

补充:编程语言里面涉及到的所有符号,都是指的英文输入法状态下的符号

2.标识符

标识符是用来程序中命名用的。(比如:变量名、类名、函数名)

  • 标识符是由字母、数字和下划线组成,并且数字不能开头(硬性规定) --- python3.x中,标识符里可以有中文(但是不推荐使用)
  • 不能使关键字(保留字)(硬性规定)
  • 大小也敏感(区分大小写,aaa、Aaa、AAA和AAa是不一样的)(硬性规定)
  • 要见名知意(规范)
  • 不推荐使用python中的内置函数、类名去作为标识符(规范)

3.关键字

系统保留的有特殊功能或者特殊意义的一些单词。这些单词不能用来给变量\函数\类等命名的

  • 可以通过以下代码查看关键字
import keyword
print(keyword.kwlist)

结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class',
 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 
'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 
'try', 'while', 'with', 'yield']

4.行与缩进

缩进:每一行代码的位置,与行开头的位置之间的空格

  • 在python中缩进的写法有严格的规范。同一级的代码,必须写同一个缩进下面
  • 如果在不该有空格产生的位置出现了多余的空格,程序会报错(IndentationError)
  • 如果在需要缩进的时候没有缩进也会报错
    关于行的规范:
    函数和类的声明前后必须要有两个换行,一般一个功能实现完,实现下一个功能的时候,最好也换行

5.多行语句

  • 一条语句在多行显示。
    a.在需要换行的地方加反斜杠,然后再换行
    b.字典、列表、集合和元组等 容器类型数据 的字面量,在多行显示的时候可以直接换行
    代码如下
print('阿达大大大的如\
    饥似渴开始')   #一条语句多行显示

print(1,2,3,4,
    5,6,7,8,
    9,10
)
结果:

阿达大大大的如 饥似渴开始
1 2 3 4 5 6 7 8 9 10
  • 多条语句一行显示
    python中,一条语句结束,可以不写分号;但是如果一行中要写多行语句,那么每条语句中必须使用分号隔开
    代码如下
print('aaaa');print('bbbb')

结果:
aaaa
bbbb

6.字面量

数据类型对应的具体的值

  • 10,100,-12 ---> 整数
  • 12.5,3.1415926,-0.13 --->小数(浮点数)
  • 12e2,9e-2 --->数字
  • 9+10j --->复数
  • 'hello world','123',"abcd","!87as" ---->字符串
  • Ture,False --->布尔值
  • [1,2,'dfdsf','asdasd'] ---->列表
  • {'a':1,'b':'123'} --->字典

7.python中的基本数据类型

数字(整型、浮点型、布尔、复数)、字符串(str)、列表(list)、字典(dict)、集合(set)、元组(tuple)、none(代表没有和空)

  • 整型:int (在python2.x有long)---->整数
  • 浮点型:float ---->包含所有小数,和科学计数
  • 布尔:bool ---> 值只有Ture和False
  • 复数:complex --->值包含所有复数

可以通过type函数查看数据的类型:type(数据)
代码如下

print(type(10e2))

结果:
<class 'float'>

03.变量

什么是变量:在程序中可以通过变量来存储数据(容器)

怎么声明变量:

  • 严格说,python中的变量是不需要声明的,可以直接通过赋值符号(=)给变量赋值,就是在声明变量
  • 因为python是动态语言,在声明变量的时候,不需要指定变量的类型。并且同一个变量可以赋不同类型的值

格式:变量名 = 值
变量名:标识符,PEP8的命名方式(所有字母小写,多个单词之间用下划线隔开,例如:user_name)
驼峰式命名:第一个单词首字母小写,后面每个单词首字母都大写(例如:userName)
代码如下

# 声明了一个变量age,并且赋值为18
age=18

# 使用变量的时候,就相当于使用变量中存的值
print(age) 

student_age=20
print(type(student_age))

# 1.如果重新给一个变量赋值,那么新的值会覆盖原来的值
# 2.同一个变量可以赋不同类型的值
student_age='abc'
print(student_age,type(student_age))

结果:
18
<class 'int'>
abc <class 'str'>

补充:

  • 一个数据有type(类型)、id(数据存储在计算机中的地址)和value(值)三个属性
  • 变量存储数据的时候,有两种情况。第一种情况:存value ---> 数字类型、字符串,第二种:存id --->字典、列表、集合、元组、类的对象等
number=10
print(id(number))

结果:
140725466551616

04.运算符

运算符分为:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算符(针对二进制的每一位)

1.数学运算符(+、-、、/、%、*、//)

  • +:求和
    注意:求和操作,+两边必须是数字类型。True ---> 1 False ---> 0
print(10+20.66,True+1)
number=100+65
print(number)

结果:
30.66 2
165
  • -: 求差
print(100-60.3,False+9)

结果:
39.7 9
  • *:求乘积
print(3*3)

结果:
9
  • /: 求商
print(6/2)
print(5/2)

结果:
3.0
2.5
  • %: 求两个数相除的余数
print(8%3)

结果:
2
  • :幂运算
    x
    y:求x的y次方
    浮点数在计算中存储的时候,有的时候会有一定的误差
print(5**2)
print(4.2**3)

结果:
25
74.08800000000001
  • //: 整除
    求商只取商的整数部分
print(9//2)

结果:
4
  • 取一个二位整数的十位数是多少(78)
print(78//10)

结果:
7
  • 取2345中的4有以下两种方法
print(2345%100//10)
print(2345//10%10)

结果:
4
4

2.比较运算符(>、<、==、>=、<=、!=)

比较运算符的结果全是布尔:True、False
1.>
x>y:判断x是否大于y,如果是结果是True,否者是False

resulut=10>20
print(resulut,100>20)

结果:
False True

2.<

print(10<20)

结果:
True

3.==
x==y:如果x和y相等,结果是True,否则是False

number=12.5
number2=12
print(number2==number)

结果:

False

4.>=、<=

10>=5 #True
10>=10 #True

5.!=
x!=y:如果x和y不相等,结果是True,否则是False

6.在python中,可以像数学中一样,连续判断

number=15
resulut=10<number<20   # 判断number是否在10到20之间
print(resulut)

结果:
True

3.逻辑运算符

与(and)、或(or)、非(not)

逻辑运算符的运算数据是布尔值,结果也是布尔值

  • 布尔1 and 布尔2:两个都为True结果才为True,只要有一个是False结果就是False。--->并且
    -需要两个或者多个条件同时满足,就使用逻辑与(and)
  • 布尔1 or 布尔2 :只要有一个是True结果就是True,两个都是False结果才是False。--->或者
    需要两个或者多个条件中满足一个就可以,就使用逻辑或(or)
  • not 布尔1 :如果是True结果是False,如果是False结果是True。--->取反
    需要不满足某个条件的时候为True

写一个条件,判断一个人的年龄是否满足青年的条件(年龄大于18并且小于28,而且还不能是20岁)
代码如下

age=30
print(age>18 and age<28 and age!=20)

结果:

False

平均成绩大于90分,或者操评分大于100,并且英语成绩还不能小于80分
代码如下

score=85
=101
english=81
print(score>90 or score2>100 and not englis<80)

结果:
True

成绩不低于60分

score=70
print(score>=60)
print(not score<60)

结果:
True
True

4.赋值运算符(=、+=、-=、=、/=、%=、*=、//=)

赋值运算符的作用:将赋值符号右边的表达式的值赋给左边的变量
表达式:有一个具体结果的语句,例如:10,'abc',10+20,30>10.5等
赋值符号的左边必须是变量

赋值符号:是先算右边的结果,然后再把结果赋给左边的变量

number=100
number+=10   # 相当于:number=number+10
print(number)


number*=2
print(number) # number=number*2

结果:
110
220

5.运算符的优先级

10+20*3-5/2=10+60-2.5=67.5 ---数学运算符

  • 优先级从低到高:赋值运算符<逻辑运算符<比较运算符<算数运算符
    算数运算符中:先幂运算乘除取余取整再加减

  • 如果你不确定运算顺序可以通过添加括号来改变运算顺序,有括号就先算括号里面的


resulut=10+20>15 and 7*8<30+60
# resulut=30>15 and 56<90
# resulut=True and True
print(resulut)

print(10+20*3/2-10%3)
# 10+30-1
# 39

print(10*2**2)  #40

print(10+20*3/(2-10)%3)
# 10+20*3/(-8)%3
# 10+60/(-8)%3
# 10+(-7.5)%3
# 10+1.5
# 1.15

结果:
True
39.0
40
11.5

05.进制转换

数据在计算机中的存储,存的都是二进制数(0101....)

1.认识十进制、二进制、八进制、十六进制

  • 十进制
    基数:0,1,2,3,4,5,6,7,8,9
    特点:逢10进1 10----->10
    12345=5+40+300+2000+10000
    =51+410+3100+21000+110000
    =5
    (100)+4*(101)+3(10^2)+2(103)+1*(104)
  • 二进制
    基数:0,1
    特点:逢2进1 10---->2
    101011=1(2^0)+1(21)+0*(22)+1(2^3)+0(24)+1*(25)

  • 八进制
    基数:0,1,2,3,4,5,6,7,
    特点:逢8进1 12------>10

  • 十六进制
    基数:0-9,a-f(A-F) -- a=10,b=11,c=12,d=13,e=14,f=15
    特点:逢16进1
    2f=47

进制间的转换:

  • 十进制转换其他进制:整除取余法
  • 八进制转二进制:一位八进制转换成三位二进制 ----> 23 = 010 011
  • 十六进制转二进制:一位十六进制转换成四位的二进制 ----> 2f= 0010 1111

2.python中的二进制、八进制和十六进制

169 # 十进制数
在python中默认的数字都是十进制

  • 二进制
    基数是0,1,并且数字前加前缀0b表示二进制
0b1101
print(0b1101)
# bin(整数) -->将其他进制的数转换成二进制数
print(bin(10))
print(bin(0x10))

结果:
13
0b1010
0b10000
  • 八进制
    基数是0-7,并且数字前面加前缀0o表示八进制
0o156
print(0o156)
# oct(整数) -->将其他进制的数转换成八进制
print(oct(10))

结果:
110
0o12
  • 十六进制
    基数是0-9,a-f(A-F),并且数字前面加前缀0x表示十六进制
0x1a
print(0x1a)
# hex(整数) -->将其他进制的数转换成十六进制
print(hex(10))

结果:
26
0xa

练习题如下:
day2作业:
1.下列四组数,依次为二进制、八进制和十六进制,符合要求的是(D)
a. 12, 77, 10
b. 12, 80, 10
c. 11, 78, 19
d. 11, 77, 19

2.二进制数加法运算的基本特点是“逢二进一”,即0+0=0,0+1=1,1+0=1,1+1=0并进位。运用这一基本法则和十进制运算的类似规律,得出二进制数加法运算1001+101的结果为(C)
a. 1001
b. 1010
c. 1110
d. 1101

7.八进制754中的数码7对应的位权是(C)
a. 10^2 b. 16^1 c. 8^2 d. 2^2

8.十进制数53转换成二进制数是(B)
a. 100101
b. 110101
c.100100
d.110100

9.(偏难)已知,十进制中的8在X进制中表示为11,即(10)8=(X)11。请问这个X进制具体为(B)进制
a. 6
b. 7
c. 8
d. 9

10.(偏难)二进制的1000001相当十进制的,二进制的100.001可以表示为④__。
A: ① 62 ② 63 ③ 64 ④ 65
B: ① 23+2–3 ② 22+2–2 ③ 23+2–2 ④ 22+2–3

  1. 下面定义变量正确的是(D)
    a. a = b = c = 10
    b. a,c = 10
    c. in = 20
    d. num = 10; t = 20

  2. n = 6784,以下能够获取到7 的方法有(C)
    a. n / 1000 % 100
    b. n % 1000 / 100
    c. n // 100 % 10
    d. n // 10 % 100 // 10

13.以下表达式 10 / 4 + 23 // 4 * 2 - 30的计算结果是:__-17.5____。