今日练习
1.如何书写python的注释语法
【1】 单行注释
-
单行注释是指只对一行进行注释,一旦换了一行就不生效了
-
注释方法: # 注释内容
-
快速注释单行代码
【2】多行注释
-
多行注释适用于代码块
-
注释方法: 英文状态下的三个单引号或者双引号,头尾皆需要
-
"""内容"""
-
'''内容'''
【3】快速注释
-
Ctrl + /
2.变量的基本使用,以及底层原理
-
变量就用来代表随时可能会发生改变的状态或者值
-
变量名 = 变量值
3.变量的命名规范
-
英文字母(大写字母和小写字母)
-
数字(0-9)
-
下划线(_)
-
变量名又不能随便声明
-
符合一定的规范
(1)可以字符+数字+下划线任意组合
-
a_1 = 1
(2)不能用数字开头
-
1_a = 1
(3)不能将Python中的关键字作为变量名
-
以后我们可能会用到规定好的已经具有特定含义和功能的单词
-
if = 1 # 如果
else elif
def class int float ...
['and', 'as', 'assert', 'break',
'class', 'continue', 'def', 'del',
'elif', 'else', 'except', 'exec',
'finally', 'for', 'from','global',
'if', 'import', 'in', 'is', 'lambda',
'not', 'or', 'pass', 'print',
'raise', 'return', 'try', 'while',
'with', 'yield']
4.python解释器的版本有哪些,推荐使用的版本是哪个
-
1989年,Guido开始写Python语言的编译器。
-
1991年,第一个Python编译器诞生。
-
它是用C语言实现的,并能够调用C语言的库文件。
-
从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
-
-
Python 2.7 - July 3, 2010
-
Python 3.6 - 2016-12-23 发布python3.6.0版
-
Python3.10版本我们学
-
-
最新版本的解释器不稳定存在bug
5.python解释器的多版本共存是怎么做到的,环境变量的查找顺序是如何的
(1)查找环境变量,首先看用户变量中也没有python,没有的话查看系统变量中的path,需要用哪个版本的解释器就将之上移
(2)找到python快捷方式所在的文件夹,复制一份副本,修改成指定版本名,再去系统环境变量中上移所要用的版本
昨日内容回顾
【一】补充Python知识点
【1】pip换源
(1)临时换源
-
pip install 第三方模块 -i 第三方源
(2)永久换源
-
如果不换源,默认使用的是Python官网的源 ---> 访问Python官网的时候发现很慢
-
为了解决安装模块慢的问题 ---> 选择换源 ---> 可以从国内的镜像源库拉取第三方模块下载
-
直接复制命令 ---> 因为这只会在安装完Python解释器后第一次用
-
如果电脑中安装了多个版本的Python解释器,给一个换源,其他的解释器也会同事生效
【2】系统解释器环境和虚拟环境
(1)系统环境
-
就是你点击安装包安装在电脑本地的环境
-
随时随地都能使用的环境
(2)虚拟环境
-
虚拟环境就是每一次基于已经安装的系统解释器环境在创建出来的新的解释器环境
-
只在当前文件夹下生效
-
创建好的虚拟环境 ---> Scripts ---> python.exe
(3)系统环境和虚拟环境
-
我们正常开发使用系统解释器环境就可以了
-
如果开发一个成品的大项目时,建议使用虚拟环境(将当前项目使用的包和系统中的隔开)
【二】pycharm相关知识
【1】判断当前使用的版本号
-
右下角会显示当前使用的python解释器的版本
【2】添加解释器环境
【3】快捷键
-
CTRL + d 快速复制一行
-
Ctrl + c 复制
-
Ctrl + v 粘贴
-
Ctrl + x 剪切
-
Ctrl + alt + L 快速格式化代码
-
Ctrl + / 快速注释点名
【4】汉化
-
settings --- plugins ---> chinese
【5】自定义文件头
【6】查看系统解释器
-
setting ---> projiects ---> python interperter
【三】Python中的注释语法
【1】单行注释
-
井号 空格 内容
【2】多行注释
-
语法:三个引号(可以是单引号也可以是双引号)
【3】快速注释
-
最常用的注释方法
-
Ctrl + /
【四】变量和常量
【1】常量
-
常量就是固定不变的量
-
即使是常量也是可以更改的,但在其他语言中常量是不允许更改的
【2】变量
-
变量就是表示能够变化的状态和值
-
如人的年龄,身高,体重
【3】代码中同样有名字来表示相应的值和状态
-
身份证上的地址:常量表示
-
年龄:变量表示
【五】变量的语法
-
变量名 = 变量值
【1】变量名的命名规范
-
可以使用数字 + 字母 + 下划线表示变量名
-
可以任意组合
-
不能数字开头
-
Python中的关键字不能作为变量名 如:if def else
【2】变量名的命名风格
-
驼峰体
-
大驼峰: 每一个单词的首字母都大写 UserName
-
小驼峰: 第一个单词的首字母小写其他首字母大写 userName
-
组合风格:任意数字 + 字母 --->下划线拼接 user_name
【六】变量的三大特性
【1】变量值 变量类型 变量内存地址
-
实际存在的值 值的类型 实际存在的空间地址
-
变量名 = 变量值 内部的原理
-
变量值:就是在内存空间中开辟一块空间存储指定的值
【2】如何查看三大特性
-
变量值:直接通过打印变量名
-
变量类型:type()
-
变量的内存空间地址:ID()
今日内容
【一】学习变量的目的
-
学习变量有助于在程序中存储和操作数据,提高代码质量
-
有了质量以后能够更加的方便操作和修改数据
【二】学习基本数据类型的目的
-
是为了在不同的场景下使用对于的数据类型来操作数据
【三】八大基本数据类型介绍
-
数字类型
-
整数类型
-
浮点数类型
-
-
字符串类型
-
列表类型
-
字典类型
-
布尔类型
-
元组类型
-
集合类型
【四】数字类型
# 【1】整数类型 # (1)用途 # 用来标识整数,最广泛使用的数据类型之一 # (2)语法 # 语法:变量名 = 数字 age = 18 # 可以查看当前变量的变量类型 print(tpye(age)) <class 'int'> # (3)使用场景 # 可以用来表示带小数的数值 # 【2】浮点数类型 # (1)用途 # 可以用来表示带小数的数值 # (2)语法 # 变量名 = 浮点数 weight = 90.00 print(type(weight)) <class 'float'> # (3)场景 # 取款的时候金额和余额都不是整数 #100.00
【五】字符串类型
# 【1】用途 # 用来标识文本信息 # 【2】语法 # 变量名 = 变量值(加引号 ,一个单引号,一个双引号,三个单引号,三个双引号) name = "dream" print(name, type(name)) # dream <class 'str'> name = 'Dream' print(name, type(name)) # Dream <class 'str'> name = '''Dream''' print(name, type(name)) # Dream <class 'str'> name = """Dream""" print(name, type(name)) # Dream <class 'str'> # 如果单双引号进行混用 name = "'name'" # 双引号中混用的单引号 print(name, type(name)) # 'name' <class 'str'> name = '"name"' # 单引号中混用的双引号 print(name, type(name)) # "name" <class 'str'> # 测试在双引号内存出现单独的单引号 name = "name'" print(name, type(name)) # name' <class 'str'> name = 'name"' print(name, type(name)) # name" <class 'str'> sentence = "my name is dream ,I'm 18 years old,hope you 'wonderful!'" # 中间的 ' 产生了歧义 按照正常的字符串语法 单双引号应该成对出现 # 所以在单引号内部不能出现单独单引号,但是单引号内部可以出现单独的双引号 # sentence = 'my name is dream ,I'm 18 years old,hope you "wonderful!"' # 所以在双引号内部不能出现单独双引号,但是双引号内部可以出现单独的单引号 # sentence = "my name is dream ,I"m 18 years old,hope you 'wonderful!'" # 在三引号内部,如果第一行不写内容默认存在一个换行 sentence = ''' my name is yang, I'm 22 year old, hope you 'wonderful!' ''' print(sentence,type(sentence)) # # my name is yang, # I'm 22 year old, # hope you 'wonderful!' # <class 'str'> # 【3】使用方法 # (1)字符串加法 print(1 + 1) # 字符串 + 字符串 = 字符串 print("1" + "1",type("1" + "1")) # 11 <class 'str'> # (2)字符串乘法 print(1 * 9) print("1" * 9) # 111111111 # 字符串 * 数字 = 当前字符串重复出现几次 # (3)可以索引取值 # 索引的意思就是左边 -3 -2 -1 0 1 2 3 # h e l l o w o r l d # 0 1 2 3 4 5 6 7 8 9 10 # 支持索引取值 world = "hello world" # 索引取值的语法 字符串[索引坐标] print(world[0]) print(world[5],type(world[5])) # <class 'str'> # 虽然输出的内容是空白,但其实输出的就是空格,他也是字符串 # 支持负索引取值 print(world[-1], type(world[-1])) # 计算当前字符串的总字符数 print(len(world)) # 11 # 当我们使用正索引取值的时候,索引是从0开始的所以取不到第11个 print(world[11]) print(world[len(world) - 1]) # 如果是负索引取值,从 -1 开始,可以取到 -11 print(world[-len(world) + 2]) # 【4】字符串的格式化输出 # 这样修改整条语句太麻烦 myself_sentence = "my name is gdy ,my age is 22," myself_sentence = "my name is hyt ,my age is 24," # (1) %占位输出法 myself_sentence = "my name is %s,my age is %s"%(name,age) name = "gdy" age = 22 # myself_sentence = "my name is name,my age is age" # %s : string字符串类型的数据 # %d : int类型的数据 myself_sentence = "my name is %s,my age is %s"%(name,age) print(myself_sentence) # (2)f + {}输出法 name = "gdy" age = 22 myself_sentence = f"my name is {name},my age is {age}" print(myself_sentence) # (3)format输入语法 name = "gdy" age = 22 # 按照位置传值 myself_sentence = "my name is {},my age is {}".format(name,age) print(myself_sentence) # 按照关键字传值 myself_sentence = "my age is {age},my name is {name}".format(name=name,age=age) print(myself_sentence) # \在Python中属于是转义符号 name = "gdy \n" age = 22 names = "gdy\\" #想要输出dream\ print(name) print(age) print(names)
【六】列表类型
# 【1】作用 # 可以在列表中存放多个值,不限制数据类型 # 例如用一个列表存储很多名字 # 【2】语法 name_list =["gdy","hyt"] print(name_list,type (name_list)) # ['gdy', 'hyt'] <class 'list'> # 【3】放了值是为了方便使用 # (1)索引取值 # 索引取值正向从0开始,负向 -1 开始 name_list =["gdy","hyt"] print(name_list[0]) # gdy print(name_list[-1]) # hyt # 【4】索引支持嵌套 info_list = [ "gdy",["22",["上海"]] ] # 如果想要取最后一层,从0开始,一层一层 print(info_list[1][1][0]) # 上海
【七】字典类型
# 【1】 作用 # 可以记录多个值,并且这些值带有各自的名字 # 字典数据存储方式是 key:value # 里面存的每一个值都是 key:value 的kv键值对 info_data ={ "name":"gdy", "age":18, "hobby":["music","run"] } # 【3】放就是为了取的时候方便 #(1)索引取值 # 字典不支持索引取值! # (2)根据键取值 print(f"以下是字典类型") print(info_data["name"]) #gdy # (3).get(键)取值 print(info_data.get("name")) #gdy
练习
info = { 'name': 'gdy', 'addr': { '国家': '中国', 'info': [ 666, {'age': 22}, 999, {'编号': 466722, 'hobby': ['read', 'study', 'music']} ] } } # 格式化输出 sentence = "my name is name ,my age is age ,my id is id ,my location is location , my hobby is music-read-study" # 从info字典中获取name键对应的值 name = info.get("name") age = info["addr"]["info"][1].get("age") id = info["addr"]["info"][3].get("编号") # 从info字典中获取到addr对应的字典,在从字典中获取 键 国家 对应的值 location = info["addr"].get("国家") hobby =info["addr"]["info"][3].get("hobby")[0] + '-' + info["addr"]["info"][3].get("hobby")[1] + '-' + info["addr"]["info"][3].get("hobby")[2] sentence = f'''my name is {name}, my age is {age} my id is id {id}, my location is {location} my hobby is {hobby} ''' print(sentence) #最后整合起来 sentence = f'''my name is {info.get("name")}, my age is {info["addr"]["info"][1].get("age")} my id is id {info["addr"]["info"][3].get("编号")}, my location is {info["addr"].get("国家")} my hobby is {info["addr"]["info"][3].get("hobby")[0] + '-' + info["addr"]["info"][3].get("hobby")[1] + '-' + info["addr"]["info"][3].get("hobby")[2] } ''' print(sentence) #输出结果 # my name is gdy, # my age is 22 # my id is id 466722, # my location is 中国 # my hobby is read-study-music
【八】布尔类型
# 就是我们生活中的真或假 # 真 true # 假 false is_right = True print(is_right,type(is_right)) # True <class 'bool'> # 【二】在Python中典型的真或假的情况 # 哪些情况是真? # 哪些情况是假?0为假,空的字符串,空的列表,空的字典,空的元组 # 不存在的情况,空值为假 name = "" print(bool(name)) # False names = ("11") print(bool(names)) # True
【九】元组类型
# 【1】用来存储不变的元素 name = ["gdy"] name[0] = "hyt" print(name[0]) # 特别注意,元组中只有一个元素的时候一定要加 , name = ("gdy") # 不加逗号 print(name,type(name)) # gdy <class 'str'> name = ("gdy"), # 加逗号 print(name,type(name)) # ('gdy',) <class 'tuple'> name[0] = "hyt" # 原组无法替换元素 print(name) # 元组可以解包,解压赋值 info = ("gdy",22) print(info[0]) print(info[1]) name,age = ("gdy",22) print(name) print(age)
【十】集合类型
# 无序,在集合中看不到重复的元素 # {key:value}:字典 # {key}:集合 num ={1,2,3,4,5,6,7,8,9,10,10,10} print(num,type(num)) # 每一次输出的顺序都会变,除非集合中只有数字或者只有字母 # 集合类型中不能存放字典和列表,因为字典和列表是可变数据 num = {1,2,3,"name","gdy",4,1.11,4,4,4} print(num)