当前位置: 首页 > article >正文

python--基础语法(1)

1.常量和表达式

print 是一个 Python 内置的 函数,可以使用 + - * / ( ) 等运算符进行算术运算.,先算乘除, 后算加减.。运算符和数字之间, 可以没有空格, 也可以有多个空格.。但是一般习惯上写一个空格(比较美观)。

可以把 Python 当成一个计算器, 来进行一些算术运算.

形如 1 + 2 * 3 这样是算式, 在编程语言中称为 表达式, 算式的运算结果, 称为 表达式的返回值 其中 1 , 2 , 3 这种称为 字面值常量, + - * / 这种称为 运算符 或者 操作符. 

2.变量和类型

给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的方差.

avg, total, result 均为变量.

** 在 Python 中表示乘方运算. ** 2 即为求平方. 

2.1变量的语法

(1) 定义变量

a=10

a 为变量名,当我们创建很多个变量的时候, 就可以用名字来进行区分.

= 为赋值运算符, 表示把 = 右侧的数据放到 = 左侧的空间中.

注意: 变量的名字要遵守一定规则:

硬性规则(务必遵守):

   变量名由数字字母下划线构成

   数字不能开头,

   变量名不能和 "关键字" 重复.

   变量名大小写敏感. num 和 Num 是两个不同的变量名.

软性规则(建议遵守):

   变量名使用有描述性的单词来表示, 尽量表达出变量的作用.

    一个变量名可以由多个单词构成, 长一点没关系, 但是含义要清晰.

   当变量名包含多个单词的时候, 建议使用 "驼峰命名法". 形如 totalCount , personInfo 这种, 除 了首个单词外, 剩余单词首字母大写.

   数学上, 变量通常使用 x, y, z 这种简单的英文字母或者拉丁字母表示. 但是在编程中不建议这样使 用. 原因是编程中, 一个程序里通常会同时创建出很多个变量. 如果只是使用单个字母表示, 在变量多了 的时候, 就很难记住哪个变量是干啥的, 从而给维护程序带来了一定的困难.

(2) 使用变量

读取变量的值

a=10
print(a)

赋值

 

2.2变量的类型 

变量里面存储的不仅仅是数字, 还可以存储其它种类的数据 

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

(1) 整数

 type 和 print 类似, 也是 python 内置的函数. 可以使用 type 来查看一个变量的类型.

和 C++ / Java 等语言不同, Python 的 int 类型变量, 表示的数据范围是没有上限的. 只要内存足够 大, 理论上就可以表示无限大小的数据.

(2) 浮点数(小数)

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

相比于单精 度浮点数, 双精度浮点数占用的内存空间更多, 同时表示的数据精度更高即可(大概精确到小数点后 15 位).

(3) 字符串

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

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

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

可以使用 + 针对两个字符串进行拼接. 

此处是两个字符串相加. 不能拿字符串和整数/浮点数相加.

(4) 布尔 

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

3.动态类型特性 

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

a=10
print(type(a))

a='hello'
print(type(a))

 

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

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

动态类型特性是一把双刃剑. 对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型). 对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解). 

4.注释

注释是一种特殊的代码, 它不会影响到程序的执行, 但是能够起到解释说明的作用, 能够帮助程序猿理解程 序代码的执行逻辑

# 计算 4 个数字 67.5, 89.0, 12.9, 32.2 的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg)
** 2
result = total / 3
print(result)

4.1注释的语法

Python 中有两种风格的注释.

(1) 注释行

使用 # 开头的行都是注释. 

# 这是一行注释.

(2) 文档字符串

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

可以包含多行内容, 一般放在 文件/函数/类 的开头. """ 或者 ''' 均可 (等价) 

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

5.输入输出

5.1和用户交互

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

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

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

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

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

5.2通过控制台输出

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

示例:a= 10

a=10
print(f'a={a}')

使用 f 作为前缀的字符串, 称为 f-string 里面可以使用 { } 来内嵌一个其他的变量/表达式

5.3通过控制台输入

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

a=0
a=input("请给a赋值:")
print(f'a={a}')

 

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

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

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

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

通过 int( ) 把变量转成了 int 类型. 类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换.

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')

a=int(a)
b=int(b)

print(f'a + b = {a + b}')

 

6.运算符 

6.1算术运算符

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

1.   / 中不能用 0 作为除数. 否则会 抛出异常

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

2.整数 / 整数 结果可能是小数. 而不会截断

print(1 / 2)

 

 3.    % 不是 "百分数", 而是求余数.

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

5.   // 是取整除法(也叫地板除). 整数除以整数, 结果还是整数(舍弃小数部分, 并向下取整. 不是四舍五入

6.2关系运算符

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

<=是小于等于

>= 是 "大于等于"

== 是 "等于"

!= 是 "不等于"

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

a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

 

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

a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

 

 

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

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

关于字典序: 想象一个英文词典, 上面的单词都是按照字母顺序排列. 如果首个字母相同, 就比较第二个字母. (就 比如著名单词 abandon). 我们认为一个单词在词典上越靠前, 就越小. 越靠后, 就越大.

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

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

print(0.1 + 0.2 == 0.3)

 

print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

 

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

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b)< 0.000001)

 6.3逻辑运算符

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

and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)

or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)

not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True.

a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

 

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

 短路求值

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

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

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

print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

 

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

6.4赋值运算符

(1) = 的使用

= 表示赋值. 注意和 == 区分. = 除了基本的用法之外, 还可以同时针对多个变量进行赋值

链式赋值

a = b = 10

多元赋值 

a, b = 10, 20

a = 10
b = 20
a, b = b, a
print(a)
print(b)

 (2) 复合赋值运算符

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 语法在设计的时候就进行了 规避, 避免出现这种不直观, 并且容易混淆的语法. 

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


http://www.kler.cn/news/295048.html

相关文章:

  • 《Ajax 是什么?如何在 HTML5 中使用》
  • 数据结构--二叉树(C语言实现,超详细!!!)
  • 彩色成像的基础和应用 原理 Principles (论文引用目录)
  • 2024年高教社杯数学建模国赛C题超详细解题思路分析
  • 图论篇--代码随想录算法训练营第五十天打卡| 深度优先搜索理论基础,98. 所有可达路径,广度优先搜索理论基础
  • 数字化转型专家讲师培训师唐兴通中欧国际工商学院数字化转型战略与实现路径AIGC人工智能数字化战略数字商业模式创新
  • 【数据库中级】1_DBeaver操作数据库
  • 【微信小程序】搭建项目步骤 + 引入Tdesign UI
  • Flink SQL 中常见的数据类型
  • 开源网安引领AIGC+开发安全,智能防护铸就软件安全新高度
  • 【Springboot基础知识】
  • 基于 rt-thread的I2C操作EEPROM(AT24C02)
  • 如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐
  • 【linux学习指南】Linux编译器 gcc和g++使用
  • python 中使用tkinter构建一个图片的剪切器-附源码
  • 漫谈设计模式 [15]:观察者模式
  • 9. 相机控件OrbitControls
  • C++11线程池、多线程编程(附源码)
  • 信息熵|atttion矩阵的注意力熵
  • 设计并用Java实现一个简易的规则引擎
  • Python | Leetcode Python题解之第392题判断子序列
  • 【leetcode详解】爬楼梯:DP入门典例(附DP通用思路 同类进阶练习)
  • 使用Protocol Buffers传输数据
  • 在vscode中用virtual env的方法
  • git如何灵活切换本地账号对应远程github的两个账号
  • 代码随想录:279. 完全平方数
  • 如何在Selenium中使用Chrome进行网络限速
  • ComfyUI+Krea免费利用AI制作网站萌宠IP,五步搞定制作AI萌宠
  • React 响应事件
  • 【Godot4.3】多边形的斜线填充效果基础实现