笔记day01


今日内容概要

  • typora软件及markdown语法

  • 计算机基础知识

  • python解释器

  • pycharm编辑器

  • python语法之注释

  • python语法之变量与常量

  • python基本数据类型

  • python基本运算符

  • python流程控制(重点、难点)

今日内容详细

typora软件及markdown语法

我们以前涉及到要编写文本
第一时间会想到用txt、word
作为IT行业的人编写文本文件一般使用
typora(支持markdown语法>>>:最流行的语法)

1.该软件前几年是免费的
但是近几年使用人数大大增加 所以改为收费
ps:群里发的是免费版本(千万不要更新)
2.基本使用
1.标题
  ctrl+数字(0 1 2 3 4 5 6)\警号个数
2.小标题
  *或者+空格填写标题内容
3.语言环境
  ```环境名称
4.表格文档
  |表头字段|表头字段|表头字段|
5.更多功能
  可以百度搜索自行查阅
      数学公式、流程图(processon\xmind)
6.主题选择
  去中文网站下载对应的css文件 拷贝到typora文档主题文件夹 重启即可
ps:文档里面的图片直接分享无法查看 可以转pdf或者使用网络图床
"""
任何收费的软件到了咱的地盘 都是'免费'的
"""

计算机基础知识

计算机三大核心硬件
CPU
也叫作中央处理器 主要用于计算机的数学运算和逻辑运算 以及硬件控制
'''计算机上的应用程序要想运行 必须有CPU参与'''
硬盘
也叫作外存 主要用于长久存取数据
       断电数据不会丢失 人为不破坏的情况下可以永久保存数据
'''计算机上下载的应用程序基本上都是下载到了硬盘'''
内存
  主要用于临时存取数据 断电数据立刻丢失
       但是内存存取数据的速度非常的快 跟CPU能很好的交互工作
     '''计算机上正在运行的程序 代码肯定在内存 所以产生的数据优先也在'''

"""
1.计算机从网络上下载一个应用程序>>>:LOL游戏
其实是下载到了硬盘
2.鼠标左键双击程序应用图标
其实就是从硬盘上将该程序代码由硬盘读取到内存
3.程序画面运行起来
CPU去内存中取程序代码中得指令并运行
"""

编程与编程语言

1.如何理解编程语言
1.1.语言的概念
  老师讲课用中文(语言)
      为了表达出内心的想法 让学生听到并理解
      人与人之间沟通交流的媒介
1.2.编程语言的概念
  人与计算机之间沟通交流的媒介
      计算机也称为电脑 所以我们希望它通电之后通过编程语言能够理解  并执行我们人的写法
     
2.如何理解编程
编程的本质其实就是程序员使用编程语言将自己的思维逻辑和想法写下来的过程
   
3.学习编程语言到底难不难
其实学习编程语言跟学习英语是一模一样的 都是掌握新的语言
   所以只要下功夫肯定不难 难在对自己的掌控!!!(自制力)

编程语言的发展史

1.机器语言
程序员直接使用二进制与计算机沟通交流(二进制:逢二进一 01)
  优势:计算机可以直接理解程序员的意思 执行效率高
      劣势:学习成本太高 编写效率太低
2.汇编语言
程序员用简单的英文字母来表示一串二进制数
  优势:编写难度稍微降低一点点 执行效率高
      劣势:学习成本较高 编写效率较低
3.高级语言
程序员用人类能够直接理解的语言与计算机交流
  优势:学习难度低 编写效率高
      劣势:计算机无法直接理解 执行效率较低
ps:我们现在所学习的编程语言都是高级语言>>>:难度降低很多 全民编程
C++、C#、java、php、python、golang

编程语言的分类

"""
高级语言:人类能够直接看懂 但是计算机看不懂
eg: 有一个中国人跟一个日本人说话
中国人说的中文:去你妹的小日本 LZ弄si你
日本人说的日文:纳尼 si尼玛塞
如何让两个不同国家的人能够彼此听懂彼此说的话>>>:翻译
ps:要想在计算机上编写编程语言 必须先找个翻译
"""
编译型
类似于谷歌翻译 一次性将你写好的代码文件翻译成计算机能够读懂的语言
  eg:英文书籍翻译一次之后就可以反复使用
C++属于编译型 也就意味着你想编写C++必须先下载一个C++编译器
解释型
类似于同声传译 加载一句翻译一句
  eg:外交官说话 每说一段背后的翻译官翻译一段
python属于解释型 也就意味着你想编写python必须先下载一个python解释器

python解释器

"""解释器由荷兰的龟叔在圣诞节闲着无聊随便写写发明出来"""
python解释器版本问题
python1.X
  最初始的版本 功能不全 不推荐使用
python2.X
  python2.7 有些老版本使用的解释器
python3.X
  最新python3.10+
      python3.6
          python3.8
学习python的时候 版本差异不大 主要集中在底层
https://www.python.org/downloads/

针对安装路径
尽量不要使用c盘 尽量不要出现中文 尽量方便查找
  推荐放在根目录
      D:\python36  D:\python38  D:\python27

ps:苹果自带python27 所以只需要去官网下载python36和python38即可
苹果的安装很简单 直接按照提示下一步即可
'''在IT行业 很多软件不推荐使用最新版'''

解释器多版本共存(了解)

"""主要针对windows电脑"""
环境变量:计算机查找资源的公共仓库

1.拷贝各个版本解释器文件(复制到解释器文件当前目录)
python.exe
2.重命名拷贝的文件(千万不要修改原文件名词)
python36.exe

"""
针对win7 环境变量输入框很小 并且需要使用分号分隔多个路径
"""

ps:其实只需要保证你的计算机上有一个版本的解释器可以运行即可
python36或者python38

运行python程序的三种方式

1.计算机终端直接编写并运行
优点:简单快速
缺点:代码无法保存 一次性的
ps:建议编写一些简单的 用于验证思想的小代码

2.利用解释器自带的命令运行文件
python38 文件路径
优点:使用文件可以永久保存代码
缺点:文件内没有针对python的特定语法 编写效率慢

3.利用专门的代码编辑器
优点:开发效率高 功能强大
缺点:部分操作需要一定的专业性 并且部分软件还是收费的
sublime:对python小白不友好
vscode:对python小白不友好
pycharm:对python小白很友好 并且还继承了很多功能(git 数据库)

pycharm编辑器

1.访问官网
https://www.jetbrains.com/pycharm/download/#section=windows
2.注意事项
1.一定要下载Professional版本(专业版)
2.尽量不要下载最新版本(破解麻烦)
ps:专业版很好用 但是收费
3.破解方式
1.激活码破解
百度直接搜 淘宝买
2.破解版
3.无限试用
pycharm会给30天试用期 用完需要激活
我们可以无限试用
ps:30天之后pycharm还能用 每次30min
"""
无限破解版
pycharm版本2021.1.3
"""

pycharm基本使用

1.如何创建文件
右键选择python file
文件的后缀名有提示作用
.txt 文本文件
.html 网页文件
.py python文件
2.编辑样式
3.代码缩放
4.创建项目

python语法之注释

注释其实就是对一段代码的解释 能够让观看者更快的理解代码含义

python中注释有两种写法
方式1(单行注释): # 注释内容
方式2(多行注释): '''''' """""" 多行注释
ps:pycharm还提供了快捷注释和解开注释的语法 ctrl+?/command+?

符合注释语法的内容解释器就不会执行

PEP8规范:规定了一些编写的套路、尊则、规则
1.警号与注释内容之间空一格(主要针对单行注释)
2.如果注释跟在了代码的后面 那么需要空两格(主要针对单行注释)
"""
针对PEP8规范不需要刻意去记忆 可以利用pycharm提供的格式化代码功能反向记忆
"""

python语法之变量常量

"""
计算机主要就是模仿人
变量和常量其实就是模仿人的记忆能力
eg:
大街上看到老师 立刻就认出来
姓名是jason 年龄是18 身高是183 体重78
"""
变量
用于记录事物的变化状态
eg:年龄 身高 体重
常量
用于记录事物的不变状态
eg:圆周率 重力加速度

基本使用
name = 'jason'
"""
name是变量名/常量名
=是赋值符号
'jason'是数据值
ps:其实变量名和常量名本质是一样的 都是一个代名词(名字)
"""

变量的本质

# name = 'jason'
# age = 18


name = 'jason'
"""
=在python中叫赋值符号 以后看到之后
那么先看等号右边的代码 然后再看等号左边的代码

1.右边如果是一个数据值 那么需要在内存中申请一块内存空间存储该值
2.由于内存很大 数据值很小 所以需要给数据值绑定一个定位坐标 >>> name
3.以后如果想要使用jason 则只需要通过左边name即可访问到
"""

n1 = name
"""
1.先看赋值符号的右边 是一个变量名name
2.那么需要先找到name指向的数据值jason
3.将name指向的值也绑定给变量名n1指向
ps:jason就有了两个指向它的名字
"""
# print(name)
# print(n1)


x = 10
x = x + 1
print(x)
"""
一定要先看赋值符号的右侧 然后才是左侧
左侧的变量名可以重复出现 但是同一个变量名只能绑定一个值
"""

总结
一个数据值可以有多个变量名绑定
一个变量名只能绑定一个数据值

变量名的命名规范

1.变量名只能由数字、字母、下划线组成
2.数字不能开头
3.不能与关键字冲突
4.一定要做到见名知意(最重要)

变量名命名风格

1.下划线  python推荐使用
human_name_from_db = 'jason'
2.驼峰体 javascript推荐使用
大驼峰
HumanNameFromDb = 'jason'
小驼峰
humanNameFromDb = 'jason'
ps:建议统一采用一种格式

常量名

在python中没有真正意义上的常量 所有的名字都可以改变(绑定的值)
我们墨守成规的将全大写的变量名看成是常量(定义之后不轻易修改绑定关系)
HOST = '127.0.0.1'

HOST = '127.0.0.1'
print(HOST)
HOST = 666
print(HOST)

在其他的编程语言中是有真正意义上的常量的(绑定了就无法解除)
let name = 'jason'
name
'jason'
name = 'tony'
'tony'
name
'tony'
const pi = 3.1415926
pi
3.1415926
pi = 666

python基本数据类型

1.如何理解数据类型
"""
我们想要看电影 需要打开.mp4等视频类型的文件
我们想要看文档 需要打开.txt等文本类型的文件
我们想要听音乐 需要打开.mp3等音频类型的文件
...
在现实生活中的数据的表现形式多种多样
由于程序就是用来模拟现实社会 所以程序中的数据也应该有各种各样的表现形式
"""
print(type(age)) # 查看变量名age绑定的值的数据类型 int
print(type(18)) # 直接查看18属于什么数据类型

2.基本数据类型之整型与浮点型
2.1.整型int
大白话整型其实就是我们日常生活中的整数
作用:年龄、年份、学生人数
具体使用:(直接写整数即可)
age = 18
year = 2022
stu_num = 20
2.2.浮点型float
大白话浮点型其实就是我们日常生活中的小数
作用:薪资、身高、体重
具体使用:(直接写小数即可)
salary = 11.11
height = 183.1
weight = 78.2
2.3.字符串str
大白话字符串其实就是日常生活中的文本类型数据
作用:姓名、家庭住址、爱好等描述性性质的
具体使用:(四种方式) 引号引起来的部分
name = 'jason'
name1 = "jason"
name2 = '''jason'''
name3 = """jason"""
1.为什么定义字符串需要这么多种方式
防止我们在字符串的内部也需要使用引号造成内外冲突
2.倒数后两种跟多行注释的语法相似 如何区分
当三引号的左侧有赋值符合和变量名的时候那么是字符串
否则就是注释
字符串存储的数据默认是一个整体 如果后续需要频繁操作某些部分 那么使用字符串不太好用
2.4.列表list
大白话列表其实就是内部可以存放多个数据并且后续可以随意获取指定个数的类型
作用:学生名单、考试分数
具体使用:中括号括起来 内部可以存放多个数据 数据与数据逗号隔开 数据可以是任意数据类型
name_list = ['jason', 'kevin', 'oscar', 'tony']
l1 = [19, 11.11, 'jason', [11, 22, 33]]
索引取值(索引值默认都是从0开始)
name_list[索引值]
2.5.字典dict
大白话字典其实就是内部可以存放多个数据并且会给每个数据一个精准的描述
作用:详细信息
具体使用:大括号括起来 内部可以存放多个数据 数据的组织形式是采用K:V键值对的形式 彼此逗号隔开
K:是对V的描述性性质的信息 一般是字符串
V:是真正的数据值 可以是任意数据类型
info_dict = {'name': 'jason', 'age': 18, 'salary': 18, 'hobby': 'read'}
按K取值
print(info_dict['age']) # 18
注意:字典无法使用索引取值 因为字典内的数据是无序的 没有索引一说
2.6.布尔值bool
大白话其实就是用来描述事物对错、是否可行的状态
作用:对错
具体使用:
True 对的 可行的 正确的 没问题的(同意)
False 多的 不可行 不正确 有问题的(反对)
存储布尔值的变量名(is开头) 重要知识
is_right = True
is_delete = False
所有的数据类型都可以转成布尔值 重要知识
布尔值为False的数据值有0、None、''、[]、{}(空的数据类型都是)
2.7.元组tuple
大白话可以看成是不可变的列表
作用:与列表一致
具体使用:
t1 = (11, 22, 33, 44, 55)
索引取值
t1[0]
基本差异
l1 = [11, 22, 33, 44, 55]
t1 = (11, 22, 33, 44, 55)
l1[0] = 'jason' # 让列表索引0对应的数据变为jason
t1[0] = 'kevin' # 元组索引0对应的数据无法直接修改
2.8.集合set
s1 = {11, 22, 33, 44, 55}
注意与字典的区别
集合主要用于去重和关系运算 这个是后续课程内容
总结
我们目前只需要知道每个数据类型大致的作用以及定义方式即可
具体的功能和使用场景后续课程慢慢深入

与用户交互

username = input('请输入您的姓名>>>:')  # 输入
print(type(username)) # 输出
"""
1.先获取用户输入的数据
2.然后绑定给变量名username
3.后续可以通过变量名username反复使用用户输入的数据
注意:input获取到的用户输入都会自动转成字符串类型
"""

格式化输出

"""
提前准备好一些文本 然后将将来可能需要改变的地方 提前打上标记 之后动态修改
eg:奖状、录取通知书、合同

尊敬的XXX用户 您本月的话费是XXX 余额是XXX
尊敬的jason用户 您本月的话费是100 余额是1000000
尊敬的kevin用户 您本月的话费是200 余额是100
"""
# desc = "尊敬的%s用户 您本月的话费是%s 余额是%s"
# %s就是专门用于占位的 提醒用户将来打印的时候应该给%s传具体的数据值
# print(desc) # 尊敬的%s用户 您本月的话费是%s 余额是%s
# print(desc % ('jason', 100, 100000)) # 尊敬的jason用户 您本月的话费是100 余额是100000
# print("尊敬的%s用户 您本月的话费是%s 余额是%s" % ('kevin', 99, 100)) # 尊敬的kevin用户 您本月的话费是99 余额是100

# 占位符其实有很多 %s是使用频率最高的 %d
# desc1 = "尊敬的%d用户 您本月的话费是%s 余额是%d"
# print(desc1 % (999, 100, 100000))
"""
%s将来可以接收任意类型的数据(随便给数据)
%d将来只能接收数字类型的数据(不能随便给)
"""
# print('%08d' % 111) # 00000111 不够8位0填充
# print('%08d' % 11111111111) # 11111111111 够了有几位展示几位


username = input('username>>>:') # 获取用户名
age = input('age>>>:') # 获取用户年龄
gender = input('gender>>>:') # 获取用户的性别
job = input('job>>>:') # 获取用户的工作
print("""
-----------info of %s ------------
姓名:%s
年龄:%s
性别:%s
工作:%s
------------------------------------
""" % (username, username, age, gender, job))

基本运算符

数学运算符
+ - * / // % **

x = x - 10 # 等价于 x -= 10
x = x + 10 # 等价于 x += 10
x = x * 10 # 等价于 x *= 10
x = x / 10 # 等价于 x /= 10
ps:以后统一使用简化之后的写法 前面的写法不要用

比较运算符
< <= > >= == !=

print(5 == 5) # True 判断5是不是等于5
print(5 != 5) # False 判断5是不是不等于5

常见操作符

# name = 'jason'
# name1 = name
# name2 = name
# 链式赋值
name = name1 = name2 = 'jason'



m = 10
n = 666
# 将变量名m和n绑定的值互换
# m = n
# n = m
# print(m, n) # 666 666
# 交叉赋值
# m, n = n, m
# print(m, n) # 666 10
# 底层原理
temp = m
m = n
n = temp
print(m, n) # 666 10


name_list = ['jason', 'kevin', 'tony', 'oscar']
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
# 解压赋值(重要)
# name1, name2, name3, name4 = name_list # 正确
# name1, name2, name3 = name_list # 默认情况下两边的个数要一致
# name1, name2, name3, name4, name5 = name_list # 默认情况下两边的个数要一致
"""解压赋值也可以打破个数一致性"""
# name1, *a, name2 = name_list
# print(name1) # jason
# print(name2) # oscar
# print(a) # ['kevin', 'tony']

# name1, *a = name_list
# print(name1) # jason
# print(a) # ['kevin', 'tony','oscar']

*a, name1, name2 = name_list
print(name1) # tony
print(name2) # oscar
print(a) # ['jason', 'kevin']

逻辑运算符

and		与
and链接的多个条件必须同时成立 整体结果才成立
eg:你去相亲你提出的要求是 女方身高必须160以上并且长得必须好看并且家里必须有钱并且学历研究生起步并且非常爱你

or 或
or链接的多个条件只要有一个成立 整体结果就成立
eg:你去相亲你提出的要求是 女方长得必须好看或者家里必须有钱或者非常爱你

not 非
对整体结果取反(对的变成错的 错的变成对的)

print(111 > 0 and 3 > 4 and 10 > 4 and True) # False
print(111 < 0 or 3 > 4 or 10 > 4 or True) # True
print(not True) # False
print(not False) # True

"""
上述三个运算符可以混合使用 并且在混合使用的情况下 是有执行优先级的
但是我们不需要记忆 应该在编写的时候就人为的限制住先后顺序
eg: 先乘除后加减 但是可以通过加括号改变顺序
"""
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)

成员运算与身份运算

成员运算
判断某个个体在不在某个群体内
in 在就返回True不在就返回False
not in 与上面结果互为反关系
name_list = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
target_name = input('username>>>:')
print(target_name in name_list)


身份运算
判断两个变量名绑定的值是否是同一个
"""id()返回一串数字 可以代表内存地址"""
l1 = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
l2 = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
# print(id(l1)) # 4672283208
# print(id(l2)) # 4711190408
print(l1 == l2) # 判断两个变量绑定的数据值是否相同(长得一模一样就可以) True
print(l1 is l2) # 判断两个变量绑定的数据值是否就是同一个(就得是一个人) False
"""
数据值相同 内存地址可能不等
内存地址相等 数据值肯定相等
"""

流程控制

1.如何理解流程控制
流程控制其实就是通过编写代码来控制事物的执行流程
eg:
比如线上购物 用户点击购买之后 其实程序会分叉执行
1.如果用户账户余额足够 则扣钱并生成订单
2.如果用户账户余额不足 则提示无法完成

2.事物执行流程的分类
无论在现实生活中还是在代码世界里 事物的执行流程大致分为三种
1.顺序结构
代码从上往下依次执行(一条线往下)
我们之前编写的代码都属于顺序结构
2.分支结构
代码遇到某个条件之后经过判断可能会执行不同的流程
eg:比如明天出门到底带不带伞 下雨就带 不下雨不带
3.循环结构
代码遇到某个条件之后经过判断可能需要反复执行
eg:进厂上班打螺丝 到点就开始打 不到点就不停
ps:上述三种结构很多时候可能彼此嵌套 不是相互独立的!!!

必备知识补充(重要)

1.在python中我们是通过代码的缩进来表示代码的从属关系
2.并不是所有的代码都可以拥有缩进的代码
针对缩进的代码我们喜欢称之为>>>:子代码
3.输入同一个父代码的多行子代码需要保持相同的缩进量
4.在python中推荐使用四个空格来表示缩进关系(更美观)
针对四个空格一般情况下 使用tab键即可
5.相同缩进量的代码彼此拥有相同的执行权限 谁也决定不了谁 按照顺序结构执行

流程控制之分支结构

'''单if分支'''
if 条件:
条件成立之后执行

# 1.如果女孩子的年龄大于30 打印大姐姐
age = 18

if age > 30:
print('大姐姐')

print('我快不行了 连续一天的奋战!!!')

作业

1.整理今日内容最好可以写成网络博文形式
2.完成解释器、编辑器等环境准备工作
课外读物typora软件使用
https://www.cnblogs.com/Dominic-Ji/articles/15945506.html
3.预习下周内容
https://www.cnblogs.com/Dominic-Ji/p/11093137.html
 

 

 

posted @ 2022-08-15 21:08  呼长喜  阅读(46)  评论(0编辑  收藏  举报