Python入门
1. 登录PAI-DSW平台
登录PAI-DSW平台
1. 登录PAI-DSW探索者版(https://dsw-dev.data.aliyun.com/)。
说明: 目前DSW探索者版仅支持阿里云主账号免费使用。
如果你看到一下页面,则表示已经成功登录PAI-DSW平台。
2. 在Launcher页签,定位到Notebook区域,单击Python3。
返回结果如下图所示图所示,即可开始输入代码。
2. 添加注释、声明变量和变量赋值
添加注释、声明变量和变量赋值
1. 注释。
Python中的注释有单行注释和多行注释。
Python中单行注释以#开头。在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
#这是一个注释 print("Hello world") #Hello world
返回结果如下图所示图所示。
多行注释用三个半角单引号(''')或者三个半角双引号(""")将注释括起来。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
''' 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用三个单引号 ''' print("Hello china") #Hello china """ 这是多行注释,用三个双引号 这是多行注释,用三个双引号 这是多行注释,用三个双引号 """ print("hello china") #hello china
返回结果如下图所示。
2. 声明变量和变量赋值。
变量命名规则:
变量名可以包括字母、数字、下划线,但变量名不能以数字开头。
Python变量名是大小写敏感的。例如,foo和Foo不一样。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
teacher = "阿里云的程序人生" print(teacher) # 阿里云的程序人生 first = 2 second = 3 third = first + second print(third) # 5 myTeacher = "阿里云的程序人生" yourTeacher = "阿里云的程序人生" ourTeacher = myTeacher + ',' + yourTeacher print(ourTeacher)# 阿里云的程序人生,阿里云的程序人生
返回结果如下图所示。
3. Python的数据类型与转换
Python的数据类型与转换
1. 定义整型变量。
类型 |
名称 |
示例 |
int |
整型 |
<class'int'>-876,10 |
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
a = 1031 print(a,type(a))
返回结果如下图所示,通过print()可看出a的值,以及类(class)是int。
2. 定义浮点型变量。
类型 |
名称 |
示例 |
float |
浮点型 |
<class'float'>3.149,11.11 |
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
print(1,type(1)) # 1 <class'int'> print(1.,type(1.)) # 1.0 <class'float'> a = 0.00000023 b = 2.3e-7 print(a) #2.3e-07 print(b) #2.3e-07
返回结果如下图所示,可到看出变量的值和类型。
3. 定义布尔型变量。
布尔(boolean)型变量只能取两个值,True和False。
类型 |
名称 |
示例 |
bool |
布尔型 |
<class'bool'>True,False |
当把布尔型变量用在数字运算中,用1和0代表True和False。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
print(True + True) #2 print(True + False) #1 print(True * False) #0
返回结果如下图所示。
您除了直接给变量赋值True和False,还可以用bool(X)来创建变量,其中X可以是:
基本类型:整型、浮点型、布尔型。
容器类型:字符串、元组、列表、字典和集合。
a. bool作用在基本类型变量:bool(X)中的X是整型数0或者浮点型数0.0时,则bool(X)是False,其余情况为True。在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
返回结果如下图所示。
b. bool作用在容器类型变量:bool(X)中的X是空的变量时,则bool(X)就是False,其余情况就是True。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
print(type(''), bool(''), bool('Python')) # <class'str'> False True print(type(()), bool(()), bool((10,))) # <class'tuple'> False True print(type([]), bool([]), bool([1,2])) # <class'list'> False True print(type({}), bool({}), bool({'a':1,'b':2})) # <class'dict'> False True print(type(set()),bool(set()),bool({1,2})) # <class'set'>FalseTrue
返回结果如下图所示。
4. 数据类型的转换。
转换为整型int(x, base=10)。
转换为字符串str(object='')。
转换为浮点型float(x)。在Untitled.ipynb页签中,输入如下Python语句,单击 云心按钮。
print(int('520')) #520 print(int(520.52)) #520 print(float('520.52')) #520.52 print(float(520)) #520.0 print(str(10+10)) #20 print(str(10.1+5.2)) #15.3
返回结果如下图所示。
4. 使用Python运算符
使用Python运算符
1. 使用操作运算符。
操作符 |
名称 |
示例 |
+ |
加 |
1+1 |
- |
减 |
2-1 |
* |
乘 |
3*4 |
/ |
除 |
3/4 |
// |
整除(地板除) |
3//4 |
% |
取余 |
3%4 |
** |
幂 |
2**3 |
在Untitled.ipynb页签中,输入如下七条Python语句,单击 运行按钮。
print(1+1) # 2 print(2-1) # 1 print(3*4) # 12 print(3/4) # 0.75 print(3//4) # 0 print(3%4) # 3 print(2**3) # 8
返回结果如下图所示。
2. 使用比较运算符。
操作符 |
名称 |
示例 |
> |
大于 |
2>1 |
>= |
大于等于 |
2>=4 |
< |
小于 |
1<2 |
<= |
小于等于 |
5<=2 |
== |
等于 |
3==4 |
!= |
不等于 |
3!=5 |
在Untitled.ipynb页签中,输入如下六条Python语句,单击 运行按钮。
print(2>1) # True print(2>=4) # False print(1<2) # True print(5<=2) # False print(3==4) # False print(3!=5) # True
返回结果如下图所示。
3. 使用逻辑运算符。
操作符 |
名称 |
示例 |
and |
与 |
(3>2)and(3<5) |
or |
或 |
(1>3)or(9<2) |
not |
非 |
not(2>1) |
在Untitled.ipynb页签中,输入如下三条Python语句,单击 运行按钮。
print((3>2)and(3<5)) # True print((1>3)or(9<2)) # False print(not(2>1)) # False
返回结果如下图所示
4. 位运算符。
操作符 |
名称 |
示例 |
~ |
按位取反 |
~4 |
& |
按位与 |
4&5 |
| |
按位或 |
4|5 |
^ |
按位异或 |
4^5 |
<< |
左移 |
4<<2 |
>> |
右移 |
4>>2 |
说明:有关二进制的运算,请您参见下一小节的讲解。
在Untitled.ipynb页签中,输入如下八条Python语句,单击 运行按钮。
print(bin(4)) # 0b100 print(bin(5)) # 0b101 print(bin(~4),~4) # -0b101-5 print(bin(4&5),4&5) # 0b1004 print(bin(4|5),4|5) # 0b1015 print(bin(4^5),4^5) # 0b11 print(bin(4<<2),4<<2) # 0b1000016 print(bin(4>>2),4>>2) # 0b11
返回结果如下图所示。
5. 三元运算符。
三元运算符的语法如下。
exp1 if condition else exp2
说明 :condition是判断条件,exp1和exp2是两个表达式。如果condition成立(结果为真),就执行exp1,并把exp1的结果作为整个表达式的结果;如果condition不成立(结果为假),就执行exp2,并把exp2的结果作为整个表达式的结果。
在Untitled.ipynb页签中,输入如下一条Python语句,单击 运行按钮。
x, y=4, 5 small = x if x < y else y print(small) # 4
返回结果如下图所示。
6. 使用in和not in运算符。
操作符 |
名称 |
示例 |
in |
存在 |
A' in ['A','B','C'] |
not in |
不存在 |
'h' not in ['A','B','C'] |
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
letters=['A','B','C'] if 'A' in letters: print('A'+'exists') if 'h' not in letters: print('h'+'notexists')
返回结果如下图所示。
7. is和is not运算符。
操作符 |
名称 |
示例 |
is |
是 |
"hello" is "hello" |
is not |
不是 |
"hello" is not "hello" |
说明:
is、is not对比的是两个变量的内存地址。
==、!=对比的是两个变量的值。
比较的两个变量,指向的都是地址不可变的类型(str等),那么is、is not和==、!=是完全等价的。
比较的两个变量,指向的是地址可变的类型(list,dict等),那么is、is not和==、!=不是等价的。
a. 比较的两个变量均指向不可变类型。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
a = "hello" b = "hello" print(a is b, a==b) # True True print(a is not b, a!=b) # False False
返回结果如下图所示。
b. 比较的两个变量均指向可变类型。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
a = ["hello"] b = ["hello"] print(a is b, a==b) # False True print(a is not b, a!=b) # True False
返回结果如下图所示。
Python的条件语句
1. if条件语句,语法如下。
#if expression: #expr_true_suite
说明:
if语句的expr_true_suite代码块只有当条件表达式expression结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。
单个 if 语句中的expression条件表达式可以通过布尔操作符and、or和not实现多重条件判断。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
if 2 > 1 and not 2 > 3: print('Correct Judgement!')
返回结果如下图所示。
2. if else条件语句,语法如下。
#if expression: #expr_true_suite #else: #expr_false_suite
说明:
Python提供与if搭配使用的else,如果if语句的条件表达式结果布尔值为假,那么程序将执行else语句后的代码。
a. 在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
temp = input("猜一猜小姐姐想的是哪个数字?") guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。 if guess == 666: print("你太了解小姐姐的心思了!") print("哼,猜对也没有奖励!") else: print("猜错了,小姐姐现在心里想的是666!") print("游戏结束,不玩儿啦!")
b. 在下方框中,输入任意数字,例如666,回车。
返回结果如下图所示。
3. if elif else条件语句,语法如下。
#if expression1: #expr1_true_suite #elif expression2: #expr2_true_suite . . #elif expressionN: #exprN_true_suite #else: #expr_false_suite
说明:
elif语句即为else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。
a. 在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
temp = input('请输入成绩:') source = int(temp) if 100 >= source >= 90: print('A') elif 90 > source >= 80: print('B') elif 80 > source >= 60: print('C') elif 60 > source >= 0: print('D') else: print('输入错误!')
5. Python的条件语句
b. 在下方框中,输入任意数字,例如70,回车。
返回结果如下图所示。
4. assert关键词。我们称assert为“断言”,当这个关键词后边的条件为False时,程序自动崩溃并抛出AssertionError的异常。只有后边的条件为True时才能让程序正常工作。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
assert 10 > 5 assert 3 > 7
返回结果如下图所示,您可以看到assert 10 > 5
Python语句可以正常运行,assert 3 > 7
语句使程序崩溃并跑出AssertionError的一场。
6. Python的循环语句
Python的循环语句
1. while循环语句。
while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句。while循环的代码块会一直循环执行,直到布尔表达式的值为False。如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。您也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。while语句语法如下。
#while 布尔表达式: #代码块
a. 在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
count = 0 while count < 3: temp = input("猜一猜小姐姐想的是哪个数字?") guess = int(temp) if guess > 8: print("大了,大了") else: if guess == 8: print("你太了解小姐姐的心思了!") print("哼,猜对也没有奖励!") count = 3 else: print("小了,小了") count = count + 1 print("游戏结束,不玩儿啦!")
在下方框中,输入任意数字,回车。
返回结果如下图所示。
2. while else循环语句。
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,例如break,将不执行else代码块的内容。while else循环语句语法如下。
#while 布尔表达式: #代码块 #else: #代码块
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
count = 0 while count < 5: print("%d is less than 5" % count) count = count + 1 else: print("%d is not less than 5" % count)
返回结果如下图所示。
3. for循环语句。
for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,例如str、list、tuple等,也可以遍历任何可迭代对象,如dict。每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。for循环语句语法如下。
#for 迭代变量 in 可迭代对象: #代码块
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
for i in 'ILoveAliyun': print(i, end=' ') #不换行输出。
返回结果如下图所示。
4. for else循环。
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,例如break,将不执行else代码块的内容,与while else语句一样。for else循环语法如下。
#for 迭代变量 in 可迭代对象: #代码块 #else: #代码块
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
for num in range(10, 20): # 迭代10到20之间的数字。 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, '是一个质数')
返回结果如下图所示。
5. range()函数。
range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。range()函数语法如下。
range(start, stop[, step])
参数说明:
start: 计数从start开始。默认是从0开始。例如:range(5)等价于range(0,5).
stop: 计数到stop结束,但不包括stop。例如:range(0,5)是[0, 1, 2, 3, 4]没有5.
step:步长,默认为1。例如:range(0,5)等价于range(0, 5, 1).
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
for i in range(2, 9): #不包含9。 print(i)
返回结果如下图所示。
6. enumerate()函数。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。enumerate()函数语法如下。
enumerate(sequence,[start=0])
参数说明:
sequence:一个序列、迭代器或其他支持迭代的对象。
start:下标起始位置。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
seasons = ['Spring', 'Summer', 'Fall', 'Winter'] lst = list(enumerate(seasons)) print(lst) # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] lst = list(enumerate(seasons, start=1)) # 下标从1开始。 print(lst) # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
返回结果如下图所示。
7. break语句。
break语句可以跳出当前所在层的循环。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
import random secret = random.randint(1, 10) #[1,10]之间的随机数 while True: temp = input("猜一猜小姐姐想的是哪个数字?") guess = int(temp) if guess > secret: print("大了,大了") else: if guess == secret: print("你太了解小姐姐的心思了!") print("哼,猜对也没有奖励!") break else: print("小了,小了") print("游戏结束,不玩儿啦!")
在下方框中,输入任意数字,并按回车。
返回结果如下图所示。
8. continue语句。
continue终止本轮循环并开始下一轮循环。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
for i in range(10): if i % 2 != 0: print(i) continue i += 2 print(i)
返回结果如下图所示。
9. pass语句。
pass语句的意思是“不做任何事”,如果您在需要有语句的地方不写任何语句,那么解释器会提示出错,而 pass 语句就是用来解决这些问题的。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
def a_func():
返回结果如下图所示,您可以看到解释器报错。
在上一步的Python语句加上pass,单击 运行按钮。
def a_func(): pass
返回结果如下图所示,您可以看到解释器发生报错。
7. Python的异常处理
Python的异常处理
异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
1. try except语句。
try except语句语法如下。
#try: #检测范围 #except Exception[as reason]: #出现异常后的处理代码
a. try 语句按照如下方式工作:
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try-except语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
try: f = open('test.txt') print(f.read()) f.close() except OSError: print('打开文件出错')
返回结果如下图所示。
b. 一个try语句可能包含多个except子句,分别来处理不同的特定的异常,并且最多只有一个分支会被执行。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
try: int("abc") s = 1 + '1' f = open('test.txt') print(f.read()) f.close() except OSError as error: print('打开文件出错\n原因是:' + str(error)) except TypeError as error: print('类型出错\n原因是:' + str(error)) except ValueError as error: print('数值出错\n原因是:' + str(error))
返回结果如下图所示。
2. try except finally语句。
在try except finally语句中,不管try子句里面有没有发生异常,finally子句都会执行。
说明:
如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
def divide(x, y): try: result = x / y print("result is", result) except ZeroDivisionError: print("division by zero!") finally: print("executing finally clause") divide(2, 1) # result is 2.0 # executing finally clause divide(2, 0) # division by zero! # executing finally clause divide("2", "1") # executing finally clause # TypeError: unsupported operand type(s) for /: 'str' and 'str'
返回结果如下图所示。
3. try except else语句。
如果在try子句执行时没有发生异常,Python将执行else语句后的语句。
说明:
else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。
#try: #检测范围 #except: #出现异常后的处理代码 #else: #如果没有异常执行这块代码
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
try: fh = open("testfile.txt", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: print("Error: 没有找到文件或读取文件失败") else: print("内容写入文件成功") fh.close()
返回结果如下图所示。
4. raise语句。
您可以使用Python中的raise语句抛出一个指定的异常。
在Untitled.ipynb页签中,输入如下Python语句,单击 运行按钮。
try: raise NameError('HiThere') except NameError: print('An exception flew by!')
返回结果如下图所示。
实验链接:https://developer.aliyun.com/adc/scenario/2f4865bdb65b40ebb4f85d003e30f273