一、常量和变量
1.Python中的数据类型
计算机主要是用来做数学运算的,计算机程序可以处理各种不同类型的数据
Number【数字:整型,浮点型【小数】,复数型:a + bj】
String【字符串】
Boolean【布尔型:True,False】
None【空值】
list【列表】
tuple【元组】
dict【字典】
set【集合】
函数
类
数字类型
整型:Python中的整型可以处理任意大小的整数【int:integer】,而且支持二进制
浮点型:小数,可以使用科学计数法表示,一个浮点数的小数点的位置是可以任意的
举例:123.456-------》1.23456e2
复数型:a+bj,a是实部,b是虚部
字符串:以单引号或者双引号括起来的任意文本
布尔型:只有两个值,一般使用在判断中
2.常量
程序在运行的过程中,值永远不会发生改变的标识符
例如:圆周率
3.变量【掌握】
3.1概念
程序在运行的过程中,值随时可以发生改变的标识符
在程序设计中,变量是一种存储数据的载体
3.2使用
根据具体的需求,来定义不同类型的变量
#数学上
a = 3
b = 5
z = a x b语法:标识符 = 初始值
说明:标识符其实就是变量名,也被称为引用
初始值:第一次给变量赋予的值,是可以随时被发生改变的,同时也确定了在程序运行的过程中变量的数据类型
例如:age = 10
代码演示:
#1。变量的定义
age = 10
print(age)
#注意事项:变量必须先定义,然后再使用
#print(age1) #NameError: name 'age1' is not defined
#2.关于变量的命名
#Python官方的建议
stu_name = "zhangsan"
#驼峰命名法,变量名必须是小驼峰
stuName = "lisi"
#3。和常量之间的联系
#如果在程序中,一个变量的值不需要被发生改变,当做常量使用,则变量的命名需要遵循常量命名法【所有的单词全大写,不同的但系之间使用下划线分隔】
#注意:Python中常量本质上还是一个变量
X = 20
"""
print(20)
print(20 + 1)
print(20 * 4)
"""
print(X)
print(X + 1)
print(X * 4)
3.3内存中的变量
如果定义一个变量,需要在内存中开辟一块空间,将指定类型的数据存储到这块空间中
变量的作用:为了存储数据,一个变量一次只能存储一个数据
代码演示:
#1.变量的重新赋值
num1 = 10
print(num1)
num1 = 30
print(num1 + 1)
#注意:Python中的变量可以改变值,也可以改变数据类型【动态数据类型】
num1 = "hello"
print(num1)
#2.内存中的变量【了解】
#如果定义一个变量,需要在内存中开辟一块空间,将指定类型的数据存储到这块空间中
#变量的作用:为了存储数据,一个变量一次只能存储一个数据
"""
内存的划分:
栈:存储变量的引用
堆:存储的是实体
常量池
方法区
"""
name1 = "zhangsan"
name2 = name1
print(name1)
print(name2)
name1 = "Jack"
print(name1)
print(name2)
补充:如果一个实体没有引用指向它,则会被系统的垃圾回收机制回收,该实体原来占用的空间会被释放掉,从而达到内存优化使用的目的
思考问题:变量在内存中占用了空间,内存何时释放【release】?
手动管理内存和自动管理内存
3.4删除变量
注意:当变量被删除之后,变量将无法再 使用,相当于该变量根本未被定义
语法:del 变量名
代码演示:
#3.删除变量【了解】 a = 23 print(a) #手动释放了该变量在内存中占用的空间 del a #print(a)
3.5总结
a.变量的值是可以随时发生改变的
b.变量的定义需要在内存中开辟空间
c.变量存在的意义:就是为了处理生活中各种可变的数据
3.6类型转换【掌握】
int(xx):将xx转换为整型,默认是十进制
float(xx):将xx转换为浮点型
str(xx):将xx转换为字符串
id():获取一个变量在内存中的地址
type():用来获取一个变量的数据类型
chr(xx)
ord(xx)
代码演示:
#1.
num1 = 100
print(type(num1))
print(id(num1))
num2 = num1
print(type(num2))
print(id(num2))
#2.str();可以将任意类型的数据转换为字符串
str1 = str(num1)
print(type(str1))
#3.int():将数据转换为整型
s1 = "245"
num3 = int(s1)
print(num3)
print(type(num3))
"""
注意:如果需要转换的字符串中包含字母和特殊符号,则会转换失败
如果+或者-出现在字符串的开头,则会被识别为正负号,则可以正常转换
"""
s2 = "abc123"
#num4 = int(s2)
#print(num4)
s3 = "-123"
num5 = int(s3)
print(num5)
#将浮点型转换为整型,实质是取整,不涉及四舍五入
num6 = int(10.63)
print(num6)
#4.float();将指定的数据转换为浮点型
f1 = float(24)
print(f1)
f2 = float("23.4")
print(f2)
#5,ASCII码表的转换
#将整型转换为字符串
c1 = chr(66)
print(c1)
c2 = chr(48)
print(c2)
#将字符串转换为整型
o1 = ord("a")
print(o1)
#练习:编写程序,定义一个变量,初始值为“e”,输出“E”
str1 = "e"
n1 = ord(str1) #101
n2 = n1 - 32
str2 = chr(n2)
print(str2)
三、输入输出【掌握】
1.输出print
作用:可以打印到屏幕上的信息【从内存到磁盘】
代码演示:
#第一部分:基本用法
#1.打印一个数据
print("hello world")
#2.可以使用一条print打印多个数据,多个数据之间使用逗号隔开
#注意:结果默认使用空格隔开
print("abc",27,True)
#3.可以进行拼接
print(10 + 20)
print("10 + 20 =",10 + 20)
num1 = 10
num2 = 20
print("num1 + num2 = ",num1 + num2)
#4.使用占位符拼接
"""
%d:整型
%f:浮点型
%s:目前代表的是字符串
语法:“占位符1 占位符2 。。。”% (数据1,数据2.。。。)
"""
#注意:占位符和后面的数据必须要一一对应【数量和类型】
print("%d + %d = %d" % (num1,num2,num1 + num2))
print("%s---%f****%d" % ("abc",1.2,10))
#需求:保留小数点后两位
#%.nf,表示保留小数点后n位,可以进行四舍五入
print("%.2f" % (1.4565))
#%.nd表示输出的数据总共有几位,不够在前面补0
print("%.4d" % (4))
#第二部分:高级用法
"""
print的完整写法
print(values....,sep=" ",end="\n",file=sys.stdout,flush=False)
values:多个不确定 的数据
sep:分隔符
end:结尾符
file:表示内容要输出的位置
flush:刷新,提高工作效率
"""
#1.values
print("good" * 5)
print("good","good","good","good","good")
print("good" + "hello")
#注意:在Python中,只能字符串和字符串进行运算
#print("good" + 5)
#2.sep:separate
#注意;当打印多个数据的时候,可以通过sep自定义数据之间的连接符,默认使用空格
print(123,"hello","abc",sep="*****")
#3,end:结尾符,可以自定义,默认为\n 【掌握】
#\n:转义字符,表示换行
#如果一个字母或者一个特殊符号的前面添加了\,
print("hello",end="\n")
print("good")
#\t:tab键
print("hello\tworld")
#4.file:可以指定内容打印的位置,可以自定义文件,默认为系统的控制台
#注意:需要导入import sys,一般书写在py文件的最前面
print("打印hello",file=sys.stdout)
#相对路径
f = open("abc.txt","w")
#flush表示是否立刻将内容写入到指定的位置,默认为Flase
print("打印hello~~~~~~",file=f,flush=True)
2.输入input
作用:从外部获取值【从磁盘到内存】
代码演示:
#从控制台获取
#当代码执行到input的时候,程序会被暂时阻塞,等待用户的输入,当输入完成之后,通过回车键结束阻塞
#str1 = input()
#print(str1)
#input("请输入数据:")
#1.需求:从控制台输入一个年龄,根据输入的年龄计算还能活多少年?
#假设:100
"""
age = input("请输入年龄:")
total = 100
print(type(age),type(total))
print("还能活%d年" % (total - int(age)))
"""
age = int(input("请输入年龄:"))
total = 100
print(type(age),type(total))
print("还能活%d年" % (total - age))
#注意:通过input从控制台获取进来的数据,不管输入的是什么数据,都是字符串
print("还能活",total - age,"年")
print("还能活" + str( total - age) + "年")
#练习:从控制台输入两个数,计算两个数的乘积
num1 = int(input("请输入第一个数:"))
num2 = int(input("请输入第二个数:"))
print("乘积为:",num1 * num2)
四、运算符和表达式【第一部分】
1.表达式
是由操作数和运算符组成的一条语句
作用:求值,也可以给变量赋值
num1 = 10
num2 = 29
num1 + num2
2.运算符
2.1算术运算符
+ - *【乘】 /【除】 %【求余,取模】 **【求幂】 //【取整】代码演示:
num1 = 5
num2 = 3
print(num1 + num2)
print(num1 - num2)
print(num1 * num2) #15
print(num1 / num2)
print(num1 % num2) #2
print(num1 ** num2) #m ** n:求m的n次方 pow(5,3)
print(num1 // num2) #取整数部分,1
#注意问题:以上的计算在计算机的底层通过补码的形式计算的
#结论:在算术运算符中,求幂运算符的优先级最高
print(2 ** 5 * 3) #96
print(2 * 5 ** 3) #250
print(10 / 2 ** 5)
print((2 * 5) ** 3) #1000
2.2赋值运算符
简单赋值运算符:=【给变量进行赋值】
复合赋值运算符:简单赋值运算符和算术运算符组合【给变量赋值的同时,还需要进行指定的运算】
+= -= *= /= %= **= //=代码演示:
#1.简单赋值运算符
num1 = 10
num2 = num1
num3 = num1 + 2
#2.复合赋值运算符
num = 10
#num += 4 #等价于num = num + 4【赋值,运算】
print(num)
#num -= 4
print(num)
#num *= 4
print(num)
#num /= 4
print(num)
#num %= 4
print(num)
#num **= 4
print(num)
num //= 4
print(num)总结:变量 算术运算符= 值
等价于 变量 = 变量 算术运算符 值
2.3关系【比较】运算符
> < == >= <= != [不等于]注意:运算的结果是一个布尔值
举例:3 > 5
代码演示:
print(3 > 5) print(3 == 5) #恒等于 print("abc" == "abc") str1 = "abc" str2 = "abc" print(str1 == str2) #比较运算符可以比较数字,也可以比较字符串,依据的是ASCII码【字典中的顺序】 print("abc" < "xyz")
2.4位运算符【了解】
二进制的运算
&【按位与】 |【按位或】 ^【按位异或】 ~【按位取反】
<<【左移】 >>【右移】
五、if语句【重点掌握】
语句的分类:
顺序结构:代码从上往下依次执行的
分支结构:根据条件执行不同的代码【if语句】
循环结构:重复执行某段代码【while循环,for循环】
if语句的使用:根据给定的条件进行判断,如果条件成立,则执行对应的分支语句,如果不成立,则执行其他的
1.简单if语句【单分支】
语法:
if 表达式:
执行语句
说明:
a.冒号代表的是代码块的开始
b.缩进代表代码块的内容
c.工作原理:单分支,要么执行,要么不执行【如果表达式为真,则执行代码块,如果表达式为假,则不执行,直接跳过整个if语句继续执行后面的代码】
d.表达式:常量,变量,比较表达式
思考问题:何为真,何为假?
假:0, 0.0 , None, "" ,False
代码演示:
import random #1.单分支 num1 = 50 num2 = 60 if num1 == num2: num1 = 100 print(num1) if True: print("hello") #练习:模拟彩票【随机获取一个数,和控制台输入的数作比较,如果相等,则认为中彩票了】 """ 获取随机数 第一步:导入import random 第二步:result = random.choice(range(100)) 从0~99之间获取随机数 """ """ result = random.choice(range(10,51)) print(result) num = int(input("请输入一个数:")) if result == num: print("中奖了") """ #练习:从控制台输入一个数,判断该数是否是偶数 num1 = int(input("请输入一个数:")) if num1 % 2 == 0: print("是偶数") print("是奇数")
2.if-else语句【双分支】
语法:
if 表达式:
执行语句1
else:
执行语句2
说明:如果表达式为真,则执行语句1,如果表达式为假,则执行语句2
代码演示:
#需求:从控制台输入一个数,判断该数是否是偶数 num1 = int(input("请输入一个数:")) if num1 % 2 == 0: print("是偶数") else: print("是奇数") #总结:双分支实际上实现了二选一的操作 #练习:根据年龄打印不同的年龄阶段 age = int(input("请输入合法的年龄:")) if age < 18: print("未成年") else: print("成年")
3.if-elif-else【多分支】
语法:
if 表达式1:
执行语句1
elif 表达式2:
执行语句2
elif 表达式3:
执行语句3
。。。。
else:
执行语句n
说明:实现了多选一的操作,不管其中的表达式有多少个成立,都只会执行其中的一个【优先原则】,如果所有的条件都不成立,则执行else分支
代码演示:
#根据年龄打印不同的年龄阶段 age = int(input("请输入合法的年龄:")) if age < 0: print("输入有误") elif age < 3: print("婴儿") elif age < 10: print("儿童") elif age <= 18: print("青少年") else: print("成年") #练习:从控制台输入一个成绩,打印不同的等级 """ 90~100:优秀 80~90:良好 70~80;继续努力 70以下:回家继续努力 """ score = int(input("请输入成绩")) if score > 100: print("你咋不上天呢") elif score >= 90: print("优秀") elif score >= 80: print("良好") elif score >= 70: print("继续努力") else: print("回家继续努力")