文章目录
系列文章目录
第一章 Python基础入门:从变量到异常处理--阿里云天池
前言
阿里云天池是阿里云旗下大数据平台,围绕云生态挖掘输送优秀人才。平台从大赛做起,现在除了大赛之外,还拥有丰富的学习资源、在线编程、实验室、技术圈等版块。对于开发者而言,在这里不仅仅可以学习到技术、还可以了解到阿里许多复杂业务场景以及这些场景下提出的各种解决方案。通过学习还可以在天池礼品库挑选自己喜欢的礼品进行兑换。因此,小编在这里强烈向大家推荐,点击右边链接访问:https://tianchi.aliyun.com/?spm=5176.19700039.J_4642415020.2.68f13ff4zNHabx
介绍完天池,下面进入今天学习的主题:Python基础入门:从变量到异常处理
一、python简介及环境搭建
1.简介
Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品,总的来说,它是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。正是由于其“优雅”和“数学类”语法的缘故,它的语义与许多常见的数学思想具有特定的对应关系,在Python语言中应用这些数学思想并不需要学习曲线,又由于其拥有庞大的外部库,尤其是与机器学习相关的库,如Matplotlib、Numpy、Pandas、SciPy、TensorFlow等,其在科学计算和机器学习领域具有广泛的应用。如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。
2.环境搭建
Python环境搭建在菜鸟教程上讲解的非常详细,没有装过的同学请访问链接按照步骤搭建。
二、变量、运算符与数据类型
1.注释
在Python中,注释有单行注释和多行注释,具体使用如下
# 这是一个单行注释
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
2.运算符
在Python中,运算符有算术运算符、比较运算符、逻辑运算符、位运算符、三元运算符、其他运算符,具体包含哪些如下列表:
- 算术运算符
操作符 | 名称 | 示例 |
---|---|---|
+ | 加 | 1 + 1 |
- | 减 | 2 - 1 |
* | 乘 | 3 * 4 |
/ | 除 | 3 / 4 |
// | 整除(地板除) | 3 // 4 |
% | 取余 | 3 % 4 |
** | 幂 | 2 ** 3 |
- 比较运算符
操作符 | 名称 | 示例 |
---|---|---|
> | 大于 | 2 > 1 |
>= | 大于等于 | 2 >= 4 |
< | 小于 | 1 < 2 |
<= | 小于等于 | 5 <= 2 |
== | 等于 | 3 == 4 |
!= | 不等于 | 3 != 5 |
- 逻辑运算符
操作符 | 名称 | 示例 |
---|---|---|
and | 与 | (3 > 2) and (3 < 5) |
or | 或 | (1 > 3) or (9 < 2) |
not | 非 | not (2 > 1) |
- 位运算符
操作符 | 名称 | 示例 |
---|---|---|
~ | 按位取反 | ~4 |
& | 按位与 | 4 & 5 |
` | ` | 按位或 |
^ | 按位异或 | 4 ^ 5 |
<< | 左移 | 4 << 2 |
>> | 右移 | 4 >> 2 |
- 三元运算符
x, y = 4, 5
if x < y:
small = x
else:
small = y
print(small) # 4
- 其他运算符
操作符 | 名称 | 示例 |
---|---|---|
in | 存在 | 'A' in ['A', 'B', 'C'] |
not in | 不存在 | 'h' not in ['A', 'B', 'C'] |
is | 是 | "hello" is "hello" |
not is | 不是 | "hello" is not "hello" |
- 以上运算符如果在一起使用,遵循下面优先级:
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~+- | 按位翻转,一元加号和减号 |
* / % // | 乘,除,取模和取整除) |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位‘AND’ |
^| | 位运算符 |
<=<>>= | 比较运算符 |
<>==!= | 等于运算符 |
=%=/=//=-=+==*= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
3.变量和赋值
- 在使用变量之前,需要对其先赋值。
- 变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
- Python 变量名是大小写敏感的,如:foo != Foo。
- Python之父Guido推荐命名规范包括如下几点:
1.文件名、模块名和包名采用小写字母并且以下划线分隔单词的形式;如:regex_syntax,py_compile,_winreg
2.类名或异常名采用每个单词首字母大写的方式;如:BaseServer,ForkingMixIn,KeyboardInterrupt
3.全局或者类常量,全部使用大写字母,并且以下划线分隔单词;如:MAX_LOAD
4.其余变量命名包括方法名,函数名,普通变量名则是采用全部小写字母,并且以下划线分隔单词的形式命名;如:my_thread
5.以上的内容如果是内部的,则使用下划线开头命名。如:__init__,__new__ 参考:
4.数据类型与转换
在Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。在Python3 中有六个标准的数据类型,分别是:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
在六个标准数据类型中,又可分为不可变数据和可变数据,分别是:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
获取类型信息
type()
不会认为子类是一种父类类型,不考虑继承关系。isinstance()
会认为子类是一种父类类型,考虑继承关系。
类型转换
- 转换为整型
int(x, base=10)
- 转换为字符串
str(object='')
- 转换为浮点型
float(x)
5.Print()函数
- 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按
str()
方式进行转换为字符串输出; - 关键字参数
sep
是实现分隔符,比如多个参数输出时想要输出中间的分隔字符; - 关键字参数
end
是输出结束时的字符,默认是换行符\n
; - 关键字参数
file
是定义流输出的文件,可以是标准的系统输出sys.stdout
,也可以重定义为别的文件; - 关键字参数
flush
是立即把内容输出到流文件,不作缓存。
三、条件语句
1、if 语句
if 10>9:
print('10比9大')
10比9大 # 输出结果
2、if - else 语句
name = 'luren'
if name == 'python': # 判断变量是否为 python
print 'welcome boss' # 输出欢迎信息
else:
print name # 条件不成立时输出变量名称
luren # 输出结果
3、if - elif - else 语句
num = 5
if num == 3: # 判断num的值
print 'boss'
elif num == 2:
print 'user'
elif num == 1:
print 'worker'
elif num < 0: # 值小于零时输出
print 'error'
else:
print 'roadman' # 条件均不成立时输出
roadman # 输出结果
4、assert 关键词
assert
这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError
的异常。
四、循环语句
1、while 循环
count = 0
while (count < 1):
print 'The count is:', count
count = count + 1
print "Good bye!"
The count is: 0
Good bye! # 输出结果
2、while - else 循环
count = 0
while count < 1:
print count, " is less than 1"
count = count + 1
else:
print count, " is not less than 1"
0 is less than 5
1 is not less than 1 # 输出结果
3、for 循环
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print '当前水果 :', fruit
当前水果 : banana
当前水果 : apple
当前水果 : mango # 输出结果
4、for - else 循环、break 语句
nums = [10, 11]
for num in nums: # 迭代数组
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print '%d 等于 %d * %d' % (num,i,j)
break # 跳出当前循环
else: # 循环的 else 部分
print num, '是一个质数'
10 等于 2 * 5
11 是一个质数 # 输出结果
5、range() 函数
range([start,] stop[, step=1])
- 这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step=1
表示第三个参数的默认值是1。range
这个BIF的作用是生成一个从start
参数的值开始到stop
参数的值结束的数字序列,该序列包含start
的值但不包含stop
的值。
6、enumerate()函数
enumerate(sequence, [start=0])
- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置。
- 返回 enumerate(枚举) 对象
8、continue 语句
for letter in 'Python': # 第一个实例
if letter != 'h':
continue
print '当前字母 :', letter
当前字母 : h # 输出结果
9、pass 语句
for letter in 'Python':
if letter == 'h':
pass
print '这是 pass 块'
print '当前字母 :', letter
当前字母 : P
当前字母 : y
当前字母 : t
这是 pass 块
当前字母 : h
当前字母 : o
当前字母 : n # 输出结果
10、推导式
- 列表推导式
x = [i ** 2 for i in range(1, 10)]
print(x)
[1, 4, 9, 16, 25, 36, 49, 64, 81] # 输出结果
- 元组推导式
a = (x for x in range(10))
print(tuple(a))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) # 输出结果
- 字典推导式
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
{0: True, 3: False, 6: True, 9: False} # 输出结果
- 集合推导式
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
{1, 2, 3, 4, 5, 6} # 输出结果
五、异常处理
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
1、try - except 语句
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
2、try - except - finally 语句
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
finally:
print "执行Finally"
3、try - except - else 语句
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
else:
print "内容写入文件成功"
fh.close()
4、raise语句
def mye( level ):
if level < 1:
raise Exception,"Invalid level!"
# 触发异常后,后面的代码就不会再执行
try:
mye(0) # 触发异常
except Exception,err:
print 1,err
else:
print 2
1 Invalid level! # 输出结果
总结
学如逆水行舟,不进则退;心似平原走马,易放难收。