python初体验
第一句代码print("hello world")
快速切换项目栏alt+1
快速运行当前文件shift + ctrl + F10
关闭控制台shift + ctrl + F4
注释:
单行注释:#(快捷键ctrl+/)
多行注释:"""三双引号 """
编程三步骤:
1.获取数据
cny = float(input("请输入人民币:"))
2.逻辑计算
usd = CNY* 0.1398
3.显示结果
print("str(cny)" + "人民币=" + str(usd))
控制台打印:print()
控制台输入:input() # input函数结果一定是str类型
人机交互(程序本质,以机器的视角看问题)

python变量
引子:
程序运行在哪里?==>内存
程序在处理什么?==>数据
作用:
在内存中操作数据
定义:
关联一个对象的标识符
建议命名:
字母小写,多个单词以下划线连接(开发python命名习惯)
语法:
变量名 = 数据
创建变量时,会在内存中开辟一个空间,它有一个地址值
创建数据时,也会在内存中开辟一个空间,它也有一个地址值,开辟的空间存储的是数据
当把数据赋值给变量后,变量开辟的空间存放的是数据的地址值
当把一个变量赋值给另一个变量,传递的是数据的地址值,即被赋值的变量存储的是赋值变量关联数据的地址值
下图中:
name01 = "谢x" # 创建变量
name01 = "韩xx" # 修改变量
name02 = "张xx" # 创建变量
name03 = name02 # 传递的是变量name02关联数据的地址值

python数据类型
python语言变量没有类型,但关联的数据有明确的类型
1.str 字符串 存储文本信息,使用双引号修饰
name = "小明"
2.int 整形 存储整数,正数,负数,0
age = 22
3.float 浮点数 存储小数
money = 22.3
4.bool 布尔值 用来条件的结果(python中True和False的首字母要大写,不像js首字母是小写)
True 表示为真(条件满足或成立)
False 表示为假(条件不满足或不成立)
python数据转换
转换为字符串 srt()
转换为整形 int()
转换为浮点数 float()
转换为布尔值 bool()
核心思想:
结果 = 目标类型(待转数据)
当str类型转换为其它类型时,有局限性
例如str类型2.33不能转换为int类型,只能转换为float类型
python不能像js拿样用+转换其它类型为str类型
例如js中"你好" + 1会的到字符串"你好1",在python这样写会报错,要写成"你好" + "1"
当int类型转换为float类型,会加上小数点
例如int类型的3,转换为float类型时,结果为3.0
当float类型转换为int类型,会把小数点后面的数值去掉
例如float类型的3.456转换为int类型时,结果是3
python算数运算符
产生新数据
1. + 加号
2. - 减号
3. * 乘号
4. / 除号(小数商,结果会有小数点,整除也有例如6/3结果是2.0)
5. // 整除号(整数商,结果为整数)
6. % 取余(余数)
// 整除和 % 余数可以活用在求时间,如几分零几秒,购买商品中,总金额能购买几件同一商品,找回多少钱
在java中没有 // 整除号,如果5和2都是int类型,用 / 除结果是2,如果5和2是有一个是float或者double类型用 / 除结果是2.5
js也没有 // 整除号

python增强运算符
在算术运算符基础上,增加对自身赋值的功能
1.y += x 相当于 y = y + x
2,y -= x 相当于 y = y - x
3.y *= x 相当于y = y * x
4.y /= x 相当于y = y / x
5.y //= x 相当于y = y // x
6.y %= x 相当于y = y % x
例:
data01 = 5
# data01 + 2 # 产生的数据7没有赋值给变量,所以直接被销毁
# data01 = data01 + 2 # 先相加再赋值
# data01 += 2 # 累加 相当于上一行的写法
python比较运算符(返回的是布尔类型的值)
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
在python中判断变量大于且小于可以这样写
36.5 < 变量 < 37.2(编程语言中只有python可以这样写,java和技术都不可以)
选择语句:让程序根据条件有选择性的执行
if elif else 语句(要注意不要忘记冒号:,python语句不同于java与js代码用大括号{}包裹,代码的层级是看缩进的代码的缩进一定要注意)
语法:
if 条件1: # 注意要有冒号
语句块1
elif 条件2: # 注意要有冒号
语句块2
else: # 注意要有冒号
语句块3
说明:
elif子句可以有0个或多个
else子句可以有0个或1个,且只能放在if语句的最后
pycharm程序的调试
调试:让程序中断,审查程序执行过程与变量取值
1.加断点(在可能出错的行,行号的右边,代码的左边点击加断点)
2.开始调试 运行(run) ==> 调试(debug)
3.程序到断点后中断,可以按f8逐行运行(此时在编译器的下方,调试器(debug)能查看变量的值和变量的类型)
循环语句:可以让一段代码满足条件,重复执行
while True: # 注意要有冒号
满足条件执行的语句
if 退出条件: # 注意要有冒号
break # 用break跳出循环,循环体内后续的代码不在执行
while 条件: # 注意要有冒号
满足条件执行的语句
for 语句
作用:
用来遍历可迭代对象的数据元素
可迭代对象是指能依次获取数据元素的对象
语法:
for 变量 in 可迭代对象: # 注意要有冒号
循环体
随机数 random
引入
import random
使用
random.randint(1,100) #获取1到100的整型的随机数
列表 list
作用:存储单一维度数据
创建:列表名 = [数据1,数据2,,,,]
list_name = [“小红”,"小蓝",“小橙”]
添加:列表名.append(数据)
list_name.append(“小绿”)
定位:列表名[索引] # 索引从0开始算,列表中第一个数据的索引是0
读取
list_name[1] # 取到的数据是小蓝
修改
list_name[2] = “小黑” # 小橙被修改为小黑
删除
del 列表名[索引] # del是python中的关键字
遍历(根据条件读取每个元素)
for 变量(通常用item表示) in 列表名:
变量item存储的是列表中的元素
for item in list_name:
print(item) # 会依次打印 “小红”,"小蓝",“小黑”,“小绿”
列表 list存储机制
一开始list_name存储的是列表的地址值
将list_name赋值给data01,data01存储的也是列表的地址值
将list_name[0]赋值给data02,data02存储的是"X红志"的地址值
当data02被赋值为"红志",data02存储的是"红志"的地址值
将"红民"赋值给data01[1],data01[1]即列表list[1]存储的是"红民"的地址值

list_name存储的是列表的地址值
将list_name赋值给list_new,list_new存储的是列表的地址值
将list_name[1]赋值给tmz,tmz存储的是"铁木真"的地址值
将"星期五"赋值给list_name[0],此时列表list_name[0]存储的是"星期五"地址值
tmz与"餐厅"累加后,tmz存储的是"铁木真餐厅"的地址值

python语言数据类型
可变数据:列表
存储机制:预留空间
不可变数据:字符串,整数,小数,布尔
存储机制:按需分配
因为内存很宝贵,对每一块空间都利用的满满当当,数据存储没有预留空间,要改变只能在新的位置开一个空间存储修改后的数据,不能在原来的存储位置直接扩展,因为没有预留位置,周围已经没有空间扩容了.

python列表list添加append和删除del内存原理
列表list_name中python是可变数据类型再内存中有预留空间
list_name进行append("谢X")时,将添加数据"谢X"的地址值,存放在列表list_name的最后面
当用del list_name[1]将list_name[1]原本存储"韩XX"的地址值删除后,列表list_name后面的存储的地址值都会往前移动,即"谢X"的地址值会存储在原来存放"韩XX"地址值的位置

list_name存储的是列表地址值
将list_name赋值给list_new,此时list_new存储的是列表地址值
列表list_name中python是可变数据类型再内存中有预留空间
list_name进行append("海底捞")时,将添加数据"海底捞"的地址值,存放在列表list_name的最后面
当用del list_name[0]将list_name[0]原本存储"星期五餐厅"的数据地址值删除后,列表list_name后面的存储的地址值都会往前移动,即"铁木真"的地址值会存储在原来存放"星期五餐厅"地址值的位置

python列表list for in 循环内存原理
list_name存储的是列表的地址值
for in循环中item存储的依次是"王XX"地址值,"XX"地址值,"韩XX"地址值,"XX"地址值,"谢X"地址值"XX"地址值

list_name存储的是列表的地址值
在下图for in循环中
list_name[0]开始存储的是"王XX"的地址值,接着存储的是"王XX同学"的地址值
list_name[1]开始存储的是"韩XX"的地址值,接着存储的是"韩XX同学"的地址值
list_name[2]开始存储的是"谢X"的地址值,接着存储的是"谢X同学"的地址值

python字典dict
字典dict
存储多个维度数
# 1. 创建 # 字典名 = {键1:值,键2:值} dict_xw = {"name": "小王", "sex": "男", "age": 26} # 2. 添加 # 字典名[键] = 值 dict_xw["money"] = 1000 print(dict_xw) # {"name": "小王", "sex": "男", "age": 26, "money",1000} # 3. 定位 # --修改 # 字典名[键] = 值 dict_xw["sex"] = "女" print(dict_xw) # {"name": "小王", "sex": "女", "age": 26, "money",1000} # --读取 # 值 = 字典名[键] print(dict_xw["name"]) # 小王 print(dict_xw["age"]) # 26 # 4. 删除 del dict_xw["sex"] print(dict_xw) # {"name": "小王", "age": 26, "money",1000} # 5. 遍历 # -- 根据值查找键 for key in dict_xw: if dict_xw[key] == 26: print(key) # key为字典的键
内存原理
变量保存的是list_user的地址值,list_user保存的是字典dict的地址值

思维导图



浙公网安备 33010602011771号