【Python 编程基础 ③】- Python 基础


目录

一、注释

1.1 - 注释的分类

1.2 - 有趣的注释

二、数据类型

三、变量 

3.1 - 赋值语句

3.2 - 标识符

四、输入输出函数

4.1 - print() 函数

4.2 - input() 函数

五、进制的表示及转换

5.1 - 不同进制数的表示方式

5.2 - 进制转换

六、强制类型转换

七、运算符

7.1 - 算术运算符

7.2 - 赋值运算符

7.3 - 比较运算符

7.4 - 逻辑运算符

7.5 - 位运算符

7.6 - 运算符的优先级



一、注释

在编码的过程中,如果一段代码的逻辑比较复杂,可以适当地添加注释,以辅助自己或者其他编码人员解读代码。注意:注释是给程序员看的,解释器会忽略注释

1.1 - 注释的分类

在 Python 中支持单行注释和多行注释。

  1. 单行注释

    以井号(#)开头,# 标志之后的所有文本都是注释。

    # This program says hello world
    print('hello world')
  2. 多行注释

    以三个单引号(''')或者三个双引号(""")开始,以 ''' 或者 """ 结束。

    按住 Ctrl 键 + 点击 print

可以使用快捷键 Ctrl + / 快速注释或取消注释选中的内容。

1.2 - 有趣的注释

//我写这一行的时候,只有上帝和我知道我在写什么

//现在,只有上帝知道了

// 喝大了,等会再修 bug

// 本人对代码概不负责。

// 他们让我写的,非本人自愿。

虽然没有年终奖,但我们有很多 bug 呀!


二、数据类型

数据类型是一类值,每个值都只属于一种数据类型。下图列出了 Python 中的数据类型。

** 是幂运算符,例如表达式 2 ** 3 的结果是 8,后面会对运算符进行详解


三、变量 

3.1 - 赋值语句

变量就像计算机内存中的一个盒子,其中可以存放一个值。如果你的程序稍后将会用到一个已求值的表达式的结果,就可以将它保存在一个变量中。

赋值语句将值保存在变量中。赋值语句包括一个变量名,一个等号(称作赋值操作符),以及要存储的值

示例

num = 10
pi = 3.1415926
cmplx = (-1) ** 0.5

3.2 - 标识符

计算机编程语言中,标识符(identifier)是用户编程时使用的名字,用于给变量函数模块等命名,以建立起名称和使用之间的关系。

  • 标识符的命名规则

    1. 由数字、字母和下划线(_)组成,并且不能以数字开头。

    2. 严格区分大小写。

    3. 不能使用关键字(在 Python 语言里具有特殊含义的单词)。

      False None True
      and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield

      以上关键字的学习以及使用,会在后续的内容中进行补充说明。

  • 标识符的命名规范

    1. 做到顾名思义。

    2. 小驼峰命名法:第一个单词的首字母小写,以后每个单词的首字母都大小,例如 userName

      大驼峰命名法:每个单词的首字母都大小,例如 UserName

    3. 使用下划线连接:例如 user_name

      在 Python 中,变量名、函数名和模块名建议使用下划线连接,类名则使用大驼峰命名法


四、输入输出函数

4.1 - print() 函数

print() 函数用于打印输出,是最常见的一个函数。

在 Python3.3 版增加了 flush 关键字参数。

print 在 Python 3.x 是一个函数,但在 Python 2.x 版本不是一个函数,只是一个关键字

语法

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

参数

  • value, ...:表示可以一次输出多个对象。

  • sep:string inserted between values, default a space.

    在值之间插入的字符串,默认为空格。

  • end:string appended after the last value, default a newline.

    在最后一个值之后追加的字符串,默认为换行符。

  • file:a file-like object (stream); defaults to the current sys.stdout.

    类似文件的对象(流);默认为当前的 sys.stdout

  • flush:whether to forcibly flush the stream.

    是否强行刷新流。

返回值:无。

示例

print('hello', 'world', sep = '+')  # hello+world

在屏幕上输出空行,只要调用 print() 即可,括号内没有任何内容。

4.2 - input() 函数

在 Python 3.x 中 raw_input()input 进行了整合,去除了 raw_input(),保留了 input 函数,其接受任意性输入,将所有输入默认为字符串处理,并返回字符串类型

语法

input([prompt])

参数prompt 即提示信息。

示例

name = input('Hello, what is your name?')


五、进制的表示及转换

5.1 - 不同进制数的表示方式

Python 语言支持二进制、八进制、十进制以及十六进制数的表示。

进制表示方式
二进制(Binary)以 0b 开头
八进制(Octal)以 0o 开头
十六进制(Hexadecimal)以 0x 开头

示例

a = 10
b = 0b1010
c = 0o12
d = 0xa
print(a, b, c, d)  # 10 10 10 10

当使用 print() 函数输出一个数时,默认输出的是十进制数

5.2 - 进制转换

在 Python 中可以使用内置函数实现进制转换。

函数说明
bin(x)将 x 转换为二进制数
oct(x)将 x 转换为八进制数
hex(x)将 x 转换为十六进制数

示例

num = 10
print(bin(num))  # 0b1010
print(oct(num))  # Oo12
print(hex(num))  # 0xa


六、强制类型转换

函数说明
int(x[, base])将 x 转换为一个整数
float(x)将 x 转换为一个浮点数
str(x)将 x 转换为字符串
bool(x)将 x 转换为布尔值

int() 强转为整型

pi = 3.1415926
print(int(pi))  # 3
​
age = input('How old are you?')  # 注意:input() 返回的是一个字符串
print(int(age) + 1)
​
x = '10'
print(int(x))  # 10
y = 'a'
print(int(y, 16))  # 10
z = '12'
print(int(z, 8))  # 10

float() 强转为浮点型

num = 10
x = '10'
print(float(num), float(x))  # 10.0 10.0

str() 强转为字符串类型

num = 10
pi = 3.1415926
print(str(num), str(pi))  # '10' '3.1415926'

bool() 强转为布尔类型

# 在数字中,只有数字 0(或 0.0)被转换成布尔值时为 False
print(bool(10))  # True
print(bool(-10))  # True
print(bool(0))  # False
print(bool(0.0))  # False
​
# 在字符串中,只有空字符串('' 或 "")被转换为布尔值时为 False
print(bool('hello'))  # True
print(bool('False'))  # True
print(bool(''))  # False
​
# 空数据 None 被转换为布尔值时为 False
print(bool(None))  # False
​
# 空列表、空元组、空字典、空集合被转换为布尔值时都为 Fasle
print(bool([]))  # False
print(bool(()))  # False
print(bool({}))  # False
print(bool(set()))  # False

总结:在 Python 中,只有数字 0(或 0.0)、空字符串、空数据 None、空列表 []、空元组 () 以及空集合 set() 被转换为布尔值时为 False,其余的都会被转换为 True


七、运算符

运算符是一些特殊的符号,主要用于数学计算,比较大小和逻辑运算等。Python 的运算符主要包括算术运算符赋值运算符比较(关系运算符)逻辑运算符位运算符

表达式包含值和运算符,并且总是可以求值(即归纳)为单个值。没有操作符的单个值也被认为是一个表达式,尽管它求值的结果就是它自己。

运算符和值之间的空格对于 Python 无关紧要(行首的缩进除外),但是惯例是保留一个空格。

7.1 - 算术运算符

算术运算符包括 +、-、*、/、//(整除)、%(取余) 和 **(幂运算),这些运算符都是双目运算符,每个运算符可以与两个操作数组成一个表达式。

a = 3, b = 5 为例

运算符描述示例
+加:使两个操作数相加,获取操作数的和a + b 的结果为 8
-减:使两个操作数相减,获取操作数的差a - b 的结果为 -2
*乘:使两个操作数相乘,获取操作数的积a * b 的结果为 15
/除:使两个操作数相除,获取操作数的商a / b 的结果为 0.6
//整除:使两个操作数相除,获取商的整数部分a // b 的结果为 0
%取余:使两个操作数相除,获取余数a % b 的结果为 3
**幂:使两个操作数进行幂运算,获取 obj1 的 obj2 次幂a ** b 的结果为 243
  1. 混合运算时,算术运算符优先级由高到低的顺序为:** > *、/、//、% > +、-,为了避免起义,建议使用小括号 () 来处理运算符优先级的问题。

  2. 不同类型之间的数据运算,会发生隐式类型转换。转换规则是:低类型向高类型转换。可以进行算术运算的各种数据类型,从高到低的顺序为:complex > float > int > bool

整除是向下取整

print(10 // 3)  # 3
print(-5 // 2)  # -3

幂运算

print(2 ** 10)  # 1024
print(81 ** 0.5)  # 9.0(求 81.0 的算术平方根)

字符串连接(加法操作符 + 用在两个字符串之间时,它将字符串连接起来)

print('Hello' + 'World')  # HelloWorld

字符串复制(乘法操作符 * 用在一个字符串和一个整型值之间时,它将原来的字符串复制若干次,次数就是整型的值):

print('Hello' * 3)  # HelloHelloHello

7.2 - 赋值运算符

赋值运算符用等号(=表示,一般有以下 3 种形式:

形式示例
变量名 = 表达式(或变量值)a = 10
变量名1 = 变量名2 = ...... = 表达式(或变量值)a = b = 10
变量名1, 变量名2, ...... = 表达式1(或变量值1), 表达式2(或变量值2), ......a, b = 5, 3

第 3 种形式实质上是元组的拆包(unpack)过程。元组是 Python 中一个重要的数据类型,元组的 () 可以省略

示例一

nums = 1, 2, 3  # 元组省略了 ()
print(nums)  # (1, 2, 3)
​
a, b, c = nums  # 拆包(要求接受的参数个数与元组内的个数相同)
print(a, b, c)  # 1 2 3
​
# 拆包过程中使用符号 *
x, *y, z = 1, 2, 3, 4, 5
print(x, y, z)  # 1 [2, 3, 4] 5

示例二(交换两个变量的值)

x = 10
y = 20
​
# 方法一:使用第三方临时变量进行交换
# temp = x
# x = y
# y = temp
​
# 方法二:使用加减法
# sum = x + y
# x = sum - x  # 和减 x 得 y
# y = sum - x  # 和减 y 得 x
​
# 方法三:原地交换
x, y = y, x
​
print(x, y)  # 20 10

复合赋值运算符包括 +=、-=、*=、/=、//=、%=、**=

7.3 - 比较运算符

比较运算符也称为关系运算符,它包括 >、>=、<、<=、!=、==

运算符描述示例
>大于5 > 2 返回 True;'5' > '12' 返回 True
>=大于或等于’a’ >= 'A' 返回 True;'ab' >= 'a' 返回 True
<小于5 < 2 返回 False;'5' < '12' 返回 False
<=小于或等于'a' <= 'A' 返回 False;'ab' <= 'a' 返回 False
==等于5 == 2 返回 False;'5' == 5 返回 False
!=不等于5 != 2 返回 True;'5' != 5 返回 True
  1. 若比较运算符的两个操作数是字符串,则会根据各个字符的编码值逐一进行比较,即:首先取两个字符串的第一个字符进行比较,较大的字符所在字符串更大;如果相同,则再取两个字符串的第二个字符进行比较,其余类推。

  2. 常用字符的大小关系为:空字符 < 空格 < '0' ~ '9' < 'A' ~ 'Z' < 'a' ~ 'z' < 汉字

  3. ==!= 操作符可以用于所有数据类型的值。请注意,整型或浮点型的值永远不会与字符串相等

  4. 浮点数比较是否相等时要注意:因为有精度误差,可能产生应该相等但比较结果却不相等的情况。因此可以用两个浮点数的差距小于一个极小值来判定是否"应该相等"

7.4 - 逻辑运算符

逻辑运算符包括 and(逻辑与)、or(逻辑或)、not(逻辑非)

运算符描述示例
and逻辑与运算符。只有两个操作数都为真,结果才为真True and True 返回 True
or逻辑或运算符。只要有一个操作数为真,结果就为真False or False 返回 False
not逻辑非运算符。单目运算符,反转操作数的逻辑状态not True 返回 False

逻辑运算符的短路问题

  1. 在逻辑与表达式中,遇到第一个为 False 的操作数,就不再执行它之后的操作数了

    1 < 2 and print('hello world')
    1 > 2 and print('你好,世界')

    输出 'hello world'

  2. 在逻辑或表达式中,遇到第一个为 True 的操作数,就不再执行它之后的操作数了

    1 < 2 or print('hello world')
    1 > 2 or print('你好,世界')

    输出 ''你好,世界'

7.5 - 位运算符

位运算符包括 &(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(按位左移)、>>(按位右移)

a = 3, b = 5 为例

运算符描述示例
&按位与运算符。两个操作数对应的二进制位同为 1,才为 1,否则为 0a & b 的结果为 1
|按位或运算符。两个操作数对应的二进制位同为 0,才为 0,否则为 1a | b 的结果为 7
^按位异或运算符。两个操作数对应的二进制位相同为 0,相异为 1a ^ b 的结果为 6
~按位取反运算符。对操作数的每个二进制位取反,即把 1 变成 0,把 0 变成 1~a 的结果为 -4
<<左移运算符。把操作数的二进制位按指定移动的位数向左移位,移除位被丢弃,右边的空位一律补 0a << 2 的结果为 12
>>右移运算符。把一个操作数的二进制位按指定移动的位数向右移位,移动位被丢弃,左边的空位一律补 0(逻辑右移),或者补符号位(算术右移)。a >> 2 的结果为 0

二进制解释

00000000000000000000000000000011(a 的补码)
---------------------------------------------
11111111111111111111111111111100(~a 的补码)
---------------------------------------------
10000000000000000000000000000100(~a 的原码)

所以 ~a 的输出结果为 -4。

示例一

# 使用位运算,获取十六进制颜色 0xF0384E 的 RGB 值,以十进制形式打印
color = 0xF0384E
red = color >> 16
green = (color >> 8) & 0xFF
blue = color & 0xFF
print(hex(red), hex(green), hex(blue))  # 0xf0 0x38 0x4e
print(red, green, blue)  # 240 56 78

示例二(交换两个变量的值)

x = 10
y = 20
​
x ^= y
y ^= x  # y ^ (x ^ y) 得到 x
x ^= y  # (x ^ y) ^ x 得到 y
​
print(x, y)  # 20 10

异或运算的性质

  1. 任意一个变量 x 与其自身进行异或运算,结果为 0,即 x ^ x = 0

  2. 任意一个变量 x 与 0 进行异或运算,结果不变,即 x ^ 0 = x

  3. 异或运算满足结合律,即 a ^ b ^ c = (a ^ b) ^ c = a ^ (b ^ c)

  4. 异或运算满足交换律,即 a ^ b = b ^ a

  5. 异或运算满足自反性,即 a ^ b ^ a = b(由异或运算以上的性质可推:a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b)。利用异或运算的自反性,可以把成对的变量消去,只留下单独的那个变量

7.6 - 运算符的优先级

运算符描述
**幂(最高优先级)
~、+、-按位取反和正负号
*、/、//、%乘、除、整除和取余
+、-加和减
>>、<<右移和左移运算符
&按位与
^按位异或
|按位或
>、>=、<、<=大于、大于或等于、小于、小于或等于
==、!=等于和不等于
not逻辑非
and逻辑与
or逻辑或

总结:幂运算符 > 单目运算符 ~、+、- > 算术运算符 > 位运算符 > 比较运算符 > 逻辑运算符(not > and > or

示例

print(True or False and True)  # 等价于 True or (False and True),结果为 True
print(False or not False)  # 等价于 False or (not False),结果为 True
print(True or True and False)  # 等价于 True or (True and False),结果为 True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值