# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernel_info:
#     name: python3
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # Python

# Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言,如今已成为绝大部分数据分析师的首选数据分析语言。其设计的核心理念是代码的易读性，以及允许编程者通过若干行代码轻松表达想法创意。

# ## 版本
#
# 本教程所有代码采用 Python3.6 进行编写，可通过`!python --version`命令查看版本。

# + outputHidden=false inputHidden=false
# !python --version
# -

# ## 语法
#
# ### 缩进
#
# 锁紧是表达代码间包含和层次关系的唯一手段，在 Python 中通过 4 个空格或 1 个 TAB 键来表示。
#
# ### 注释
# 注释是不被程序执行的辅助性说明信息。在 Python 中单注释分为单行和多行，单行注释以`#`开头，其后内容为注释；多行注释以`'''`开头和结尾，中间内容为注释。
#

# +
# 这是一个单行注释

'''
这是一个多行注释
这是一个多行注释
'''

print('注释')
# -

# ### 变量
#
# 变量是用来保存和表示数据的占位符号。在 Python 中通过等号`=`用向变量赋值或修改值。
# 变量名是大小写字母、数字、下划线`_`和汉字等字符的组合，对大小写敏感，首字母不能是数字，也不能与保留字相同。

# + outputHidden=false inputHidden=false
# 向变量x赋值为1
x = 1
print('x =',x)

# 修改变量x的赋值为2
x = 2
print('x =',x)
# -

# ### 保留字
#
# 保留字是被编程语言内部定义并保留使用的标识符。在 Python 中有 33 个保留字，保留字是编程语言的基本单词，对大小写敏感。
#
# |||||||
# |:-:|:-:|:-:|:-:|:-:|:-:|
# |and|  as  | assert | break | class | continue |
# | def  | elif | else | except | finally | for |
# | from | if | import |in|is|lambda|
# | not | or | pass |raise|return|try|
# | while | with | yield |del|global|nonlocal|
# | True | False | None ||||

# ## 操作符
#
# 操作符是完成运算的一种符号体系
#
# ### 运算操作符
#
# |操作符|描述|
# |:-:|:-|
# |x + y|加法运算|
# |x - y|减法运算|
# |x * y|乘法运算|
# |x / y|除法运算|
# |x // y|整除运算|
# |x % y|取模(余数)运算
# | - y|负数运算|
# |x ** y|幂运算，y 为小数时为开方运算|
#
# ### 赋值操作符
#
# |操作符|描述|
# |:-:|:-|
# |x += y|即 x = x + y|
# |x -= y|即 x = x - y|
# |x *= y|即 x = x * y|
# |x /= y|即 x = x / y|
# |x //= y|即 x = x // y|
# |x %= y|即 x = x % y|
# |x **= y|即 x = x ** y|
#
# ### 比较运算符
#
# 比较运算结果为 True 或 False。
#
# |操作符|描述|
# |:-:|:-|
# |==|等于|
# |！=|不等于|
# |<>|不等于，与 ！= 类似|
# |>|大与|
# |<|小于|
# |>+|大于等于|
# |<=|小于等于|
#
# ### 位运算符
#
# 按位运算符是把数字看作二进制来进行计算的。
#
# |操作符|描述|
# |:-:|:-|
# |&|按位与|
# |&#124;|按位或|
# |^|按位异或|
# |~|按位取反|
# |<<|左移动|
# |>>|右移动|
#
# ### 逻辑运算符
#
# |运算符|描述|
# |:-:|:-|
# |and|布尔"与"|
# |or|布尔"或"|
# |not|布尔"非"|
#
# ### 成员运算符
#
# |运算符|描述|
# |:-:|:-|
# |in|变量在指定序列中找到值返回 True，否则返回 False|
# |not in|变量在指定的序列中没有找到值返回 True，否则返回 False|
#
# ### 身份运算符
#
# 身份运算符用于比较两个对象的存储单元。
#
# |运算符|描述|
# |:-:|:-|
# |is|判断两个标识符是不是引用自一个对象|
# |is not|判断两个标识符是不是引用自不同对象|

# ## 数据类型
#
# 数据类型是供计算机程序理解的数据形式，在 Python 中数据类型被分为基本数据类型和复合数据类型。
#
# - 基本数据类型：也称为数值，包括整数、浮点数、复数、布尔数值和空值。
# - 复合数据类型：也称为序列，包括字符串、列表、元组、字典和集合。

# ### 基本数据类型
#
# #### 整数
#
# Python 中的整数与数学中整数的概念一致，可正可负，没有取值范围限制，在 Python 中有 4 种表达形式。
#
# |表达形式|格式|
# |:-:|:-|
# |十进制|-100,0,100|
# |二进制|以0b或0B开头：0b01,-0B01|
# |八进制|以0o或0O开头：0o17,-0O17|
# |十六进制|以0x或0X开头：0x0f, -0X0f|
#
# 整数虽然有 4 种表达形式，但输出格式都是十进制。

# + outputHidden=false inputHidden=false
print("二进制数 0b01 的输出格式是：",0b01)
print("八进制数 0o17 的输出格式是：",0o17)
print("十六进制数 0x0f 的输出格式是：",0x0f)
# -

# #### 浮点数
#
# Python 中的浮点数与数学中实数的概念一致，指带有小数点及小数的数字。浮点数取值范围和小数精度都存在限制，但常规计算可忽略。取值范围数量级约$-10^{308}$至$10^{308}$，精度数量级$10^{16}$。
#
# 在 Python 中浮点数有两种表达形式：一种用小数点+数字形式表示；一种用科学计数法表示，使用字母e或E作为幂的符号，以10为基数，$<a>e<b>$表示$a*10^b$
#

print('浮点数 110e-3 值为：',110e-3)
print('浮点数 5.2E2 值为：',5.2E2)

# 在 Python 中浮点数间运算存在不确定尾数，但这并不是 Bug ，由于计算机有二进制表示小数，只能无限接近小数值，但不会完全相同。

# + outputHidden=false inputHidden=false
0.1 + 0.2
# -

# 方法：
#
# - `round(x, b)`：对 x 四舍五入，d 是小数截取位数。

round(0.1 + 0.2, 1)

# #### 复数
#
# Python 中的复数与数学中复数的概念一致，记 a+b*j 为复数，其中 a 是实部，b 是虚部。

x = 1 + 2j
print('复数 1 + 2j 的实部是：', x.real)
print('复数 1 + 2j 的虚部是：', x.imag)

# #### 布尔数值
#
# Python 中的布尔数值与数学中布尔代数的概念一致，分为 True 和 False。利用布尔数值可进行逻辑运算。

# +
x = True
y = False

# 与运算
print('x and y =',x and y)
print('x&y = ',x&y)

# 或运算
print('x or y =',x or y)
print('x|y = ',x|y)

# 异或运算
print('x ^ y =',x ^ y)

# 非运算
print('not x =',not x)
# -

# #### 空值
#
# 空值是 Python 中一种特殊的数据类型，用 None 表示。None 表示一个空对象，不能理解为 0。

# + outputHidden=false inputHidden=false
x = None
x == 0
# -

# ### 序列

# #### 字符串
#
# 字符串是由 0 个或多个字符组成的有序字符序列，由一对单引号`''`或一对双引号`""`表示。

# ## 循环语句

print('我是一个字符串')
print("我是另一个字符串")

# ## 参考资料
#
# [北京理工大学：Python语言程序设计](https://www.icourse163.org/course/BIT-268001?tid=1003243006)
#
# [菜鸟教程：Python3教程](http://www.runoob.com/python3/python3-tutorial.html)

StarcoderdataJupyterScriptsDedupFiltered