【Python】1.基础语法(1)

文章目录

  • 1.变量的语法
    • 1.1定义变量
      • 1.1.1硬性规则(务必遵守)
      • 1.1.2软性规则(建议遵守)
    • 1.2使用变量
  • 2.变量的类型
    • 2.1整型
    • 2.2浮点型
    • 2.3 字符串类型
    • 2.4布尔类型
    • 2.5其他类型
    • 2.6 动态类型特性
  • 3.注释
    • 3.1 注释行
    • 3.2 文档字符串
  • 3.3 如何批量注释
    • 3.4注释的规范
  • 4.输入输出
    • 4.1 和用户交互
    • 4.2 通过控制台输出
    • 4.3 通过控制台输入
  • 5.运算符
    • 5.1 算术运算符
    • 5.2 关系运算符
    • 5.3 逻辑运算符
    • 5.4 赋值运算符
    • 5.5 其他
  • 6. 练习


1.变量的语法

1.1定义变量

1.1.1硬性规则(务必遵守)

  1. 变量名由数字字母下划线构成
  2. 数字不能开头
  3. 变量名不能和 “关键字” 重复
  4. 变量名大小写敏感. numNum 是两个不同的变量名

1.1.2软性规则(建议遵守)

  1. 给变量命名的时候,尽量使用描述性的单词来表示,尽量通过名字来表现出变量的左右
  2. 当我们使用一个单词描述不清楚的时候,可以使用多个单词来命名,不怕变量名字长,而怕变量的含义表达的不清楚
  3. 当变量名包含多个单词的时候, 建议使用 “驼峰命名法”. 形如 totalCount , personInfo 这种, 除了首个单词外, 剩余单词首字母大写

当包含多个单词的时候,命名有多种规范:

  1. 驼峰命名:除了第一个单词的首字母,后续每个字母的首字母都大写

    例如:totalCount

  2. 蛇形命名:单词之间使用下划线来进行分割

    例如:total_count


1.2使用变量

读取变量的值

a = 10#首次使用=对a进行设置值,这个过程是创建变量(初始化)
b = a
print(b)#当然, 也可以用一个变量的值赋给另外一个变量.

打印:

10

修改变量的值

a = 10#首次使用=对a进行设置值,这个过程是创建变量(初始化)
b = a
print(b)a = 20#后续对a使用=操作,相当于修改了a的内容(赋值)
print(a)

打印:

10
20

注意: 在 Python 中, 修改变量也是使用 = 运算, 看起来和定义变量没有明显区别.


2.变量的类型

变量里面存储的不仅仅是数字, 还可以存储其它种类的数据. 为了区分不同种类的数据, 我们引入了 “类型” 这样的概念.

C++ / Java 等语言不同, Python 变量的类型不需要显式指定, 而是在赋值的时候确定的.

typeprint 类似, 也是 python 内置的函数. 我们可以通过type关键字来查看变量的类型。


2.1整型

a71258e61be4595b65e3b309399b209d

打印:

<class 'int'>

注意: 和 C++ / Java 等语言不同, Pythonint 类型变量, 表示的数据范围是没有上限的。只要内存足够大, 理论上就可以表示无限大小的数据。因此,python中就没有long这样的类型了,像byteshort这些类型在python中也不存在。


2.2浮点型

cadb48bdc875677ff5da6aac34acca34

打印:

<class 'float'>

注意: 和 C++ / Java 等语言不同, Python 的小数只有 float 一种类型, 没有 double 类型. 但是实际上 Pythonfloat 就相当于 C++ / Javadouble, 表示双精度浮点数。


2.3 字符串类型

使用 ' ' 或者 " " 引起来的, 称为 字符串. 可以用来表示文本.

87b36660af8cd36e601b21a3563df4b3

打印:

<class 'str'>

注意: 在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别.。'hello'"hello" 是完全等价的.。

这个单引号和双引号看似没用,实际上是有用的。

比如想打印一个句子:My name is 'YDK'

如果只用单引号或者双引号的话是无法实现的。

049428b49dc0f6b6c328b06552271174


python里面还有一种三引号,来适用下面这种情况:

f725268d092a6254bf3b5a3520a2feb0

将错误语句注释后,运行。

打印:

My 'name' is "YDK"

可以使用 len 函数来获取字符串的长度.

98becb5f9c3e7ba6d3117619401ae0f6

打印:

<class 'str'>
5
helloworld
10

python中 ,报错有两种情况:

  1. 语法错误:在程序运行之前,python 解释器就能把错误识别出来
  2. 运行错误:在程序运行之前,识别不了的。必须要执行到对应的代码才能发现问题

2.4布尔类型

布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假)

3e7d43a90439e211175307ec80c04868

打印:

<class 'bool'>
<class 'bool'>

布尔类型在后续进行逻辑判断的时候, 是非常有用的


2.5其他类型

除了上述类型之外, Python 中还有 list, tuple, dict, 自定义类型 等等。后续再介绍。

为什么要有这么多类型?

(1) 类型决定了数据在内存中占据多大空间.

例如 float 类型在内存中占据 8 个字节.

计算机里面使用二进制来表示数据. 也就是每个位只能表示 0 或者 1

1 个二进制位, 就称为是一个 “比特”, 8 个二进制位, 就称为一个 “字节” (Byte)一个 float 变量在内存中占据 8 个字节空间, 也就是 64 个二进制位。

(2) 类型其实约定了能对这个变量做什么样的操作.

例如 int / float 类型的变量, 可以进行 + - * / 等操作

str 类型的变量, 只能进行 + (并且行为是字符串拼接), 不能进行 - * / , 但是还能使用 len 等其他操作.

类型系统其实是在对变量进行 “归类”。 相同类型的变量(数据) 往往具有类似的特性和使用规则。


2.6 动态类型特性

Python 中, 一个变量是什么类型, 是可以在 “程序运行” 过程中发生变化的。这个特性称为 “动态类型” 。

3d30c13d2c0e866a1ac524d2aaac98da

打印:

<class 'int'>
<class 'str'>
<class 'bool'>

在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str,最后变成了bool

C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 “静态类型”.

4c5e73e456e92d64b0e786d8b6acbd8c

这个是类型声明,方便程序员读程序的时候,更好的去理解,也方便开发工具更好的去解析。

动态类型特性是一把双刃剑:

对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型)

对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解)


3.注释

Python 中有两种风格的注释

3.1 注释行

使用 # 开头的行都是注释

# 这是一行注释

3.2 文档字符串

使用三引号引起来的称为 “文档字符串”, 也可以视为是一种注释.

  • 可以包含多行内容

  • 一般放在 文件/函数/类 的开头

  • “”" 或者 ‘’’ 均可 (等价)

"""
这是文档字符串
这是文档字符串
"""

3.3 如何批量注释

选中想要注释的代码,然后同时按Ctrl和/这两个键,即可完成批量注释。


3.4注释的规范

  1. 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  3. 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  4. 积极向上: 注释中不要包含负能量(例如 领导 SB 等).

4.输入输出

4.1 和用户交互

程序需要和用户进行交互.

用户把信息传递给程序的过程, 称为 “输入”.

程序把结果展示给用户的过程, 称为 “输出”.

输入输出的最基本的方法就是控制台. 用户通过控制台输入一些字符串, 程序再通过控制台打印出一些字符串。

PyCharm 运行程序, 下方弹出的窗口就可以视为是控制台.

8db894c197ddbc151137e0ff8be6248d

windows 自带的 cmd 程序, 也可以视为是控制台.

输入输出的最常见方法是图形化界面. 如我们平时用到的 QQ, 浏览器, steam 等, 都不需要用户输入命令, 而只是通过鼠标点击窗口点击按钮的方式来操作


4.2 通过控制台输出

Python 使用 print 函数输出到控制台

不仅能输出一个字符串, 还可以输出一个其他类型的变量

d9791ddfb9333332b008efb07d11f942

打印:

10
True

更多的时候, 我们希望能够输出的内容是混合了字符串和变量的

例如:输出 num = 10

442e7e8d33cf757c07e79cd6ba5276d5

打印:

num = 10

注意:

使用 f 作为前缀的字符串, 称为 f-string

里面可以使用 { } 来内嵌一个其他的 变量/表达式


9cbb0703b7d53455f174734c645aaca6

打印:

num = 10
num = 20

4.3 通过控制台输入

python 使用 input 函数, 从控制台读取用户的输入

30eb7b57882875c95b0e73f961107043

打印:

请输入一个整数: 1
你输入的整数是 1

注意:

input 的参数相当于一个 “提示信息”, 也可以没有

input 的返回值就是用户输入的内容是字符串类型


f6b90b854ae6e265893f275b6e422a6f

打印:

请输入第一个整数: 1
请输入第二个整数: 2
a + b = 12

此处的结果是字符串拼接, 不是算术运算. 如果要想进行算术运算, 需要先转换类型。


f09ba7b06ccd4edcbada27ca8340ae11

打印:

请输入第一个整数: 1
请输入第二个整数: 2
a + b = 3

通过 int( ) 把变量转成了 int 类型

类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换


5.运算符

5.1 算术运算符

+ - * / % ** // 这种进行算术运算的运算符, 称为 算术运算符

注意1:/ 中不能用 0 作为除数。否则会抛出异常

4046dfee3a7cbae490884127c62b09a2

打印:

2197278e67347ab39d3aec321ccfd3f8

这种运行时出现的错误,也叫做抛出异常。如果程序运行过程中抛出异常,程序直接就中止了。异常后面的代码也就不会执行到了。

图中的ZeroDivisionError是除0异常。

异常是编程语言中的一种常见机制, 表示程序运行过程中, 出现了一些 “意外情况”, 导致程序不能继续往下执行了。


1f8904de130e885ca498e3b6a1858640

打印:

c1dddcdc4bac17caa116bfcedb994882

有些编程语言中,/整数0 也会抛出异常;/浮点数0 会得到无穷大。


注意2: 整数 / 整数 结果可能是小数,而不会截断

929e25dd146d67b3948afb9ace372c7d

打印:

0.5

注意3: % 不是 “百分数”, 而是求余数

69af50c6f4f1f225f3ee870d613aa7d3

打印:

1

注意4: ** 是求乘方,不光能算整数次方, 还能算小数次方

fdb6a2dd8520950159123511eebb0ca8

打印:

16
2.0

注意5: // 是取整除法(也叫地板除)。

整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整,不是四舍五入)

c60d46703a6cb5742e76be31098a0cf5

打印:

3
-4

5.2 关系运算符

<, <=, >, >=, ==, != 这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的关系。

其中:

<= 是 “小于等于”

= 是 “大于等于”

== 是 “等于”

!= 是 “不等于”

  1. 如果关系符合, 则表达式返回 True。如果关系不符合, 则表达式返回 False

a5a8d82dae27958a72130ce74c6e54a1

打印:

True
True
False
False
False
True

  1. 关系运算符不光针对整数/浮点数进行比较, 还能针对字符串进行比较。

0cd8519ff54404e989626591ec24e507

打印:

True
True
False
False
False
True

注意:

直接使用 == 或者 != 即可对字符串内容判定相等。(这一点和 C / Java 不同)

字符串比较大小, 规则是 “字典序”

关于字典序:

想象一个英文词典, 上面的单词都是按照字母顺序排列。如果首个字母相同, 就比较第二个字母。(就比如著名单词 abandon)

我们认为一个单词在词典上越靠前, 就越小。 越靠后, 就越大。


  1. 对于浮点数来说, 不要使用 == 判定相等

c463cc6fe5cba5190b86cb470c195857

打印:

False

注意: 浮点数在计算机中的表示并不是精确的! 在计算过程中, 就容易出现非常小的误差。

d097bb4098f2bf5eef17d04ddddc9e6d

打印:

0.1
0.2
0.3
0.30000000000000004

不止是 Python 如此, 主流编程语言都是如此。这个是 IEEE754 标准规定的浮点数格式所引入的问题

正确的比较方式: 不再严格比较相等了, 而是判定差值小于允许的误差范围

eb52a4d2f629333e1752c95b87bd2979

打印:

True

5.3 逻辑运算符

and or not 这一系列的运算符称为 逻辑运算符。

and 并且

  • 两侧操作数均为 True, 最终结果为 True。 否则为 False。 (一假则假)

or 或者

  • 两侧操作数均为 False, 最终结果为 False。否则为 True。 (一真则真)

not 逻辑取反

  • 操作数本身为 True, 则返回 False。本身为 False, 则返回 True

d530bd10de6a7599a410672f403899a7

打印:

True
False
False
True
False
True

一种特殊写法:

a < b and b < c 这个操作等价于 a < b < c 。这个设定和大部分编程语言都不相同。

关于短路求值

和其他编程语言类似, Python 也存在短路求值的规则.

对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行。

对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行。

18889909fcd7f5d80dd7bd8fb2cfec33

打印:

False
True

上述代码没有抛出异常, 说明右侧的除以 0 操作没有真正执行。


5.4 赋值运算符

  1. = 的使用

= 表示赋值. 这个我们已经用过很多次了。注意和 == 区分。

= 除了基本的用法之外, 还可以同时针对多个变量进行赋值。

链式赋值:

a = b = 10

先把10赋值给b,然后把b赋值给a

多元赋值:

a, b = 10, 20

10赋值给a,把20赋值给b


代码实例: 交换两个变量

1.基础写法

a = 10
b = 20
tmp = a
a = b
b = tmp

2.基于多元赋值

a = 10
b = 20
a, b = b, a

  1. 复合赋值运算符

Python 还有一些 复合赋值运算符。例如 += -= *= /= %=

其中 a += 1 等价于 a = a + 1 。 其他复合赋值运算符也是同理。

a = 10
a = a + 1
print(a)
b = 10
b += 1
print(b)

注意:

C++ / Java 中, 存在 ++ -- 这样的自增/自减运算符。

Python 中则不支持这种运算。如果需要使用, 则直接使用 += 1 或者 -= 1

++ -- 最大的问题就是容易分不清前置和后置的区别。 这一点 Python 语法在设计的时候就进行了规避, 避免出现这种不直观, 并且容易混淆的语法。


5.5 其他

除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符 ( & | ~ ^ << >>) 等。



6. 练习

(1) [多选] 以下关于变量之间加法运算的说法, 正确的是:

A. Python 中的字符串之间够能相加.

B. Python 中的字符串可以和整数相加.

C. Python 中的整数可以和浮点数相加.

D. Python 中的整数可以和布尔值相加.

答案:A,C,D


(2) [单选] 以下关于类型的说法, 正确的是:

A. Python 中既有字符串类型, 也有字符类型.

B. Python 中既有 float, 也有 double.

C. Python 中既有 int, 也有 long

D. Python 中的整数表示范围无上限.

答案:D

python里面只有字符串类型,没有字符类型。

python中只有float

python里面只有int


(3) [单选] 以下 Python 代码, 合法的是

A. int a = 10

B. a = 10;

C. a = true

D. a = ‘aaa’ + 10

答案:B

A里面指定类型写法是:a:int = 10

B里面的通常情况下是不加的,但是加了也没错。如果多个语句写一行就要加 了,但是这种写法不推荐。

C里面应该是True

D里面也是错误的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/408686.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深信服上半年亏损5.92亿,营收同比降低2.3亿

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

如何使用ssm实现网络安全宣传网站设计

TOC ssm177网络安全宣传网站设计jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管…

【SQL】指定日期的产品价格

目录 题目 分析 代码 题目 产品数据表: Products ------------------------ | Column Name | Type | ------------------------ | product_id | int | | new_price | int | | change_date | date | ------------------------ (product_id, chang…

九、前端中的异步方法Promise,Promise详解

文章目录 1.Promise简介什么是promise为什么使用Promisepromise中的状态 2.Promis的用法 1.Promise简介 什么是promise Promise是异步编程的一种解决方案&#xff0c;它的构造函数是同步执行的&#xff0c;then 方法是异步执行的。 为什么使用Promise 在JavaScript的世界中…

Java 入门指南:List 接口

Collection 接口提供了一系列用于操作和管理集合的方法&#xff0c;包括添加、删除、查询、遍历等。它是所有集合类的根接口&#xff0c;包括 List、Set、Queue 等。 Collection 接口常见方法 add(E element)&#xff1a;向集合中添加元素。 addAll(Collection col)&#xff1…

洛谷 P2569 [SCOI2010] 股票交易

题目来源于&#xff1a;洛谷 题目本质&#xff1a;动态规划&#xff0c;单调队列 解题思路&#xff1a; 方程f[i][j]表示第 i 天结束后&#xff0c;手里剩下 j 股的最大利润&#xff0c;则不买不卖&#xff1a;f[i][j]f[i-1][j]。 买入&#xff1a;f[i][j]max{f[i-w-1][k]k*…

vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放

前言 分享一个刚做完项目集成技术&#xff0c;一个车辆行驶轨迹监控、行车视频监控、对特种车辆安全监管平台&#xff0c;今年政府单位有很多监管平台项目&#xff0c;例如&#xff1a;渣土车监控、租出车监管、危害气体运输车监管等平台&#xff0c;这些平台都有车辆行驶轨迹…

uniapp实现区域滚动、下拉刷新、上滑滚动加载更多

背景&#xff1a; 在uniapp框架中&#xff0c;有两种实现办法。第1种&#xff0c;是首先在page.json中配置页面&#xff0c;然后使用页面的生命周期函数&#xff1b;第2种&#xff0c;使用<scroll-view>组件&#xff0c;然后配置组件的相关参数&#xff0c;包括但不限于&…

Spring(一篇就懂)

Spring框架简介 Spring 是一个开源的Java企业级应用开发框架。 特点&#xff1a; 控制反转&#xff08;IoC&#xff09;&#xff1a;通过依赖注入&#xff08;DI&#xff09;减少组件间的耦合&#xff0c;由Spring容器负责对象的创建和绑定。 面向切面编程&#xff08;AOP&am…

企业高性能web服务器(nginx)

目录 Web服务器基础介绍 正常情况下的单次web服务器访问流程 Apache 经典的 Web服务端 Apache prefork 模型 Apache work模型 Apache event模型 服务端的I/O流程 服务器的I/O 磁盘I/O 网络I/O 网络I/O处理过程 I/O模型 I/O模型相关概念 同步/异步 阻塞/非阻塞 网…

面向对象06:super关键字详解

本节内容视频链接&#xff1a;面向对象10&#xff1a;Super详解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p69&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Java中的‌super关键字是一个特殊的引用&#xff0c;‌用于指代父类对象‌。‌在子…

鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信

基本 IPC&#xff08;Inter-Process Communication&#xff09;与RPC&#xff08;Remote Procedure Call&#xff09;用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱动&#xff0c;用于设备内的跨进程通信&#xff0c;后者使用软总线驱动&#xff0c;用于跨设备跨进…

学习yolo+Java+opencv简单案例(三)

主要内容&#xff1a;车牌检测识别&#xff08;什么颜色的车牌&#xff0c;车牌号&#xff09; 模型作用&#xff1a;车牌检测&#xff0c;车牌识别 文章的最后附上我的源码地址。 学习还可以参考我前两篇博客&#xff1a; 学习yoloJavaopencv简单案例&#xff08;一&#xff0…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门班-task2

一开始假设的模型是ybw1&#xff0c;但在可视化预测值和真实值后&#xff0c;发现数据具有规律性&#xff0c;因此换成7天 额&#xff0c;不知道为什么要在这里这样引入sigmoid函数&#xff0c;有点怪怪的&#xff0c;但确实用无限多的分段函数就能拟合很多曲线 所以这里的意…

5步实现猫眼电影爬虫与k-means算法可视化分析

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

框架——特殊符号处理,模糊查询

1.特殊符号处理 在 mybatis 中的 xml 文件中&#xff0c;存在一些特殊的符号&#xff0c;比如&#xff1a;<、>、"、&、<>等&#xff0c;正常书写mybatis 会报错&#xff0c;需要对这些符号进行转义。具体转义如下所示&#xff1a; 特殊字符 转义字符 &…

【GNSS射频前端】MA2769初识

MAX2769 芯片概述&#xff1a; MAX2769是一款单芯片多系统GNSS接收器&#xff0c;采用Maxim的低功耗SiGe BiCMOS工艺技术。集成了包括双输入低噪声放大器&#xff08;LNA&#xff09;、混频器、图像拒绝滤波器、可编程增益放大器&#xff08;PGA&#xff09;、压控振荡器&#…

微信小游戏授权问题

微信小程序获取用户相关信息的接口&#xff0c;如wx.getUserCloudStorage&#xff0c;报错&#xff1a;please go to mp to announce your privacy usage。 需要在微信公众平台设置用户隐私保护。

(论文解读)Domain Adaptation via Prompt Learning

摘要 无监督域适应( UDA )旨在将从带有标签的源域数据中学习到的模型适应到未标注的目标域数据集。现有的UDA方法通过对齐源域和目标域特征空间来学习领域不变特征。这种对齐是通过约束实现的&#xff0c;例如统计差异最小化或对抗学习。 然而&#xff0c;这些约束会导致语义…

AudioNotes -将音频内容转 markdown

文章目录 一、关于 AudioNotes效果展示音视频识别和整理与音视频内容对话 二、使用方法1、安装 Ollama2、拉取模型3、部署服务3.1 Docker部署&#xff08;推荐&#xff09;&#x1f433;3.2 本地部署 &#x1f4e6; 一、关于 AudioNotes AudioNotes 能够快速提取音视频的内容&…