我爱编程程序员

跟上时代的步伐,学一波Python(一)

2017-12-26  本文已影响0人  朱敏_ITer

注:笔记整理自《Python编程:从入门到实践》

1. 环境搭建

OS X系统默认安装了 Python2,我们需要到Python官网下载Python3
Windows系统下需要下载Python2和Python3
Python下载地址
命令行输入 python 和 python3查看切换python版本

python2
python3
输入python命令后,可以直接在控制台编写代码,也可以使用编辑器。
推荐使用Sublime Text3 编辑器 插件比较多,比较方便

2. 变量和简单的数据类型

2.0 Python关键字与Python内置函数

warning:第一排黑体没有特殊含义,我是markdown新手,表格用的不好,第一排默认是表头,不知道怎么改成普通文本

Python关键字

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

关于缩进
对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
示例:

if True:
    print("Hello girl!") #缩进一个tab的占位
else:                    #与if对齐
    print("Hello boy!")  #缩进一个tab的占位

2.1 变量

创建变量时不需要声明数据类型,直接声明变量名进行赋值
message = "hello world"
age = 13
age = 14
在程序中可随时修改变量的值,而Python将始终记录变量的最新值

2.1.1 变量的命名和使用

在Python中使用变量时,需要遵守一些规则

2.1.2 使用变量名时避免命名错误

程序存在错误时,Python解释器将竭尽所能地帮助你找出问题所在。程序无法成功地运行时,解释器会提供一个traceback。traceback是一条记录,指出了解释器尝试运行代码时, 在什么地方陷入了困境。下面是你不小心错误地拼写了变量名时,Python解释器提供的traceback:


traceback

往往像这样的小错误很难发现,会浪费不少时间,所以,还是尽量避免吧。

2.2 字符串

字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:

"This is a string."
'This is also a string.'

这种灵活性让你能够在字符串中包含引号和撇号

'I told my friend, "Python is my favorite language!" '
"The language 'Python' is named after Monty Python, not the snake." 
"One of Python's strengths is its diverse and supportive community."

2.2.1 使用方法修改字符串的大小写

对于字符串,可执行的最简单的操作之一是修改其中的单词的大小写,如下所示,

首字母大写:

name = "sun wu kong"
print(name.title())

输出结果:

Sun Wu Kong

全部大写或小写:

name = "Zhu Ba Jie" 
print(name.upper()) 
print(name.lower())

输出结果:

ZHU BA JIE
zhu ba jie

2.2.2 合并(拼接)字符串

Python使用加号(+)来合并字符串。

first_name = "Yu"
last_name = "Guan"
full_name = last_name + " " + first_name
print(full_name)

输出结果:

Guan Yu

2.2.3 使用制表符或换行符来添加空白

可在同一个字符串中同时包含制表符和换行符。字符串"\n\t" 让Python换到下一行,并在下一行开头添加一个制表符。

>>> print("Languages:\n\tPython\n\tC\n\tJavaScript") 
Languages:
    Python
    C 
    JavaScript

2.2.4 删除空白

在程序中,额外的空白可能令人迷惑。对程序员来说,'python' 和'python ' 看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。Python能够发
现'python ' 中额外的空白,并认为它是有意义的——除非你告诉它不是这样的。
空白很重要,因为你经常需要比较两个字符串是否相同。例如,一个重要的示例是,在用户登录网站时检查其用户名。但在一些简单得多的情形下,额外的空格也可能令人迷惑。所幸在Python中,删除用户输入的数据中的多余的空白易如反掌。
Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法rstrip() 。

>>> favorite_language = 'python ' 
>>> favorite_language
'python '
>>> favorite_language.rstrip()
'python'
>>> favorite_language
'python '

使用rstrip()方法后重新赋值,原值才会改变

>>> favorite_language = favorite_language.rstrip()
>>> favorite_language
 'python'

剔除字符串开头的空白,或同时剔除字符串两端的空白,可分别使用方法lstrip() 和strip() :

>>> favorite_language = ' python '
>>> favorite_language.rstrip()
' python'
>>> favorite_language.lstrip() 
'python '
>>> favorite_language.strip() 
'python'

2.3 数字

2.3.1 整数

在Python中,可对整数执行加(+ )减(- )乘(* )除(/ )运算。

>>>2+3
 5 
>>>3-2 
1 
>>>2*3 
6 
>>>3/2 
1.5

在终端会话中,Python直接返回运算结果。Python使用两个乘号表示乘方运算:

>>>  3**2 
9 
>>>  3**3 
27 
>>>  10**6 
1000000

Python还支持运算次序,因此你可在同一个表达式中使用多种运算。你还可以使用括号来修改运算次序,让Python按你指定的次序执行运算,如下所示:

>>>2+3*4
14 
>>>(2+3)*4 
20

2.3.2 浮点数

Python将带小数点的数字都称为浮点数 。大多数编程语言都使用了这个术语,它指出了这样一个事实:小数点可出现在数字的任何位置。每种编程语言都须细心设计,以妥善地 处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。
从很大程度上说,使用浮点数时都无需考虑其行为。你只需输入要使用的数字,Python通常都会按你期望的方式处理它们:

>>> 0.1 + 0.1 
0.2
>>> 0.2 + 0.2 
0.4 
>>>2*0.1 
0.2 
>>>2*0.2 
0.4

2.3.3 使用函数str()避免类型错误

在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str() , 它让Python将非字符串值表示为字符串:

age=23
message = "Happy " + str(age) + "rd Birthday!"
print(message)

输出结果:

Happy 23rd Birthday!

2.3.4 Python 2中的整数

在Python 2中,将两个整数相除得到的结果稍有不同:

>>> python2.7 
>>>3/2
1

Python返回的结果为1,而不是1.5。在Python 2中,整数除法的结果只包含整数部分,小数部分被删除。请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直 接删除。
在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数:

>>>3/2 
1 
>>>3.0/2 
1.5 
>>>3/2.0 
1.5
>>> 3.0 / 2.0 
1.5

2.4注释

在Python中,注释用井号(# )标识。井号后面的内容都会被Python解释器忽略。

print("merry christmas") #圣诞节快乐!

输出结果:

merry christmas

3.列表

3.1 修改、添加、插入和删除元素

(1)修改元素

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles)
motorcycles[0] = 'ducati' 
print(motorcycles)

输出结果:

['honda', 'yamaha', 'suzuki'] 
['ducati', 'yamaha', 'suzuki']

(2)添加元素

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles)
motorcycles.append('ducati') 
print(motorcycles)

输出结果:

['honda', 'yamaha', 'suzuki'] 
['honda', 'yamaha', 'suzuki', 'ducati']

(3)插入元素

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati') 
print(motorcycles)

输出结果:

['ducati', 'honda', 'yamaha', 'suzuki']

(4)删除元素
使用del语句删除元素:

motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles)
del motorcycles[0] 
print(motorcycles)

输出结果:

['honda', 'yamaha', 'suzuki'] 
['yamaha', 'suzuki']

使用方法pop()删除元素:

motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)
print('The first motorcycle I owned was a ' + first_owned.title() + '.')

输出结果:

The first motorcycle I owned was a Honda.

根据值删除元素:

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] 
print(motorcycles)
motorcycles.remove('ducati') 
print(motorcycles)

输出结果:

['honda', 'yamaha', 'suzuki', 'ducati'] 
['honda', 'yamaha', 'suzuki']

3.2 组织列表

3.2.1 使用方法sort()对列表进行永久性排序

sort()方法

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

输出结果:

['audi', 'bmw', 'subaru', 'toyota']

3.2.2 使用函数sorted()对列表进行临时排序

sorted()函数

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:") 
print(cars)
print("\nHere is the sorted list:") 
print(sorted(cars))
print("\nHere is the original list again:") 
print(cars)

输出结果:

Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again: ['bmw', 'audi', 'toyota', 'subaru']

3.2.3 倒序打印列表

revers()方法:

cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print(cars)
cars.reverse() 
print(cars)

输出结果:

['bmw', 'audi', 'toyota', 'subaru'] 
['subaru', 'toyota', 'audi', 'bmw']

3.2.4 确定列表的长度

>>> cars = ['bmw', 'audi', 'toyota', 'subaru'] 
>>> len(cars)
4

4.操作列表

4.1 遍历整个列表

for循环:

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians:
    print(magician)

输出结果:

alice david carolina

4.1.1 在for循环中执行更多的操作

在for 循环中,想包含多少行代码都可以。在代码行for magician in magicians 后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因 此,可对列表中的每个值执行任意次数的操作。

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians:
    print(magician.title() + ", that was a great trick!")
    print("I can't wait to see your next trick, " + magician.title() + ".\n")

由于两条print 语句都缩进了,因此它们都将针对列表中的每位魔术师执行一次。第二条print 语句中的换行符"\n" 在每次迭代结束后都插入一个空行,从而整洁地 将针对各位魔术师的消息编组:

Alice, that was a great trick!
I can't wait to see your next trick, Alice.

David, that was a great trick!
I can't wait to see your next trick, David.

Carolina, that was a great trick!
I can't wait to see your next trick, Carolina.

4.1.2 在for循环结束后执行一些操作

在for 循环后面,没有缩进的代码都只执行一次,而不会重复执行。下面来打印一条向全体魔术师致谢的消息,感谢他们的精彩表演。想要在打印给各位魔术师的消息后面打印 一条给全体魔术师的致谢消息,需要将相应的代码放在for 循环后面,且不缩进:

magicians = ['alice', 'david', 'carolina'] for magician in magicians:
    print(magician.title() + ", that was a great trick!")
    print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("Thank you, everyone. That was a great magic show!")

开头两条print 语句针对列表中每位魔术师重复执行。由于第三条print 语句没有缩进,因此只执行一次:

Alice, that was a great trick!
I can't wait to see your next trick, Alice.

David, that was a great trick!
I can't wait to see your next trick, David.

Carolina, that was a great trick!
I can't wait to see your next trick, Carolina.

Thank you, everyone. That was a great magic show!

for else语法
(1)触发else
正常结束的循环:

list = [1,2,3,4,5]
for x in list:
    print(x)
else:
    print("else")

输出结果:

1
2
3
4
5
else

使用continue关键字

list = [1,2,3,4,5]
for x in list:
    if x==2:
        continue
 
    print x
else:
    print("else")

输出结果:

1
3
4
5
else

(2)不触发else

list = [1,2,3,4,5]
for x in list:
    if x==3:
        break
 
    print x
else:
    print("else")

输出结果:

1
2

4.2 创建数值列表

4.2.1 使用函数range()

for value in range(1,5): 
    print(value)

输出结果:

1
2
3
4

4.2.2 使用range()创建数字列表

numbers = list(range(1,6)) 
print(numbers)

输出结果:

[1,2,3,4,5]

使用函数range() 时,还可指定步长。例如,下面的代码打印1~10内的偶数:

even_numbers = list(range(2,11,2)) 
print(even_numbers)

输出结果:

[2,4,6,8,10]

打印1-10的平方:

squares = []
for value in range(1,11):
    square = value**2 squares.append(square)
    print(squares)

输出结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.2.3 对数字列表执行简单的统计计算

有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:

>>>digits=[1,2,3,4,5,6,7,8,9,0] 
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits) 
45

4.2.4 列表解析

前面介绍的生成列表squares 的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析 将for 循环和创建新元素的代码合并成一行,并自动附加新元素。

squares = [value**2 for value in range(1,11)] 
print(squares)

输出结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.3 使用列表的一部分

4.3.1 切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需 要指定索引0~3,这将输出分别为0 、1 和2 的元素。

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[0:3])

4.3.2 遍历切片

如果要遍历列表的部分元素,可在for 循环中使用切片。

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:") 
for player in players[:3]:
      print(player.title())

输出结果:

Here are the first three players on my team: 
Charles
Martina
Michael

4.3.3 复制列表

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个 列表。

my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods[:]
print("My favorite foods are:") 
print(my_foods)
print("\nMy friend's favorite foods are:") 
print(friend_foods)

输出结果:

My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are: ['pizza', 'falafel', 'carrot cake']

4.4 元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修
改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。

4.4.1 定义元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

dimensions = (200, 50) 
print(dimensions[0])
print(dimensions[1])

4.4.2 遍历元祖中的所有值

像列表一样,也可以使用for 循环来遍历元组中的所有值:

dimensions = (200, 50)
for dimension in dimensions:
    print(dimension)

输出结果:

200 
50

4.4.3 修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。

dimensions = (200, 50) 
print("Original dimensions:") 
for dimension in dimensions:
    print(dimension)

dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions: 
    print(dimension)

输出结果:

Original dimensions:
200 
50

Modified dimensions: 
400
100

5 if语句

5.1 一个简单的示例

cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
    if car == 'bmw':
         print(car.upper()) 
    else:
         print(car.title())

输出结果:

Audi 
BMW 
Subaru 
Toyota

5.2 条件测试

每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。

5.2.1 检查是否相等

>>> car = 'bmw' 
>>> car == 'bmw'
True

5.2.2 检查是否相等时区分大小写

>>> car = 'Audi' >>> 
car == 'audi' 
False

>>> car = 'Audi'
>>> car.lower() == 'audi' 
True

5.2.3 检查是否不相等

要判断两个值是否不等,可结合使用惊叹号和等号(!= ),其中的惊叹号表示不 ,在很多编程语言中都如此。

requested_topping = 'mushrooms'
if requested_topping != 'anchovies': 
    print("Hold the anchovies!")

输出结果:

Hold the anchovies!

5.2.5 检查多个条件

1.使用and检查多个条件(且运算,OC中为 && )
要检查是否两个条件都为True ,可使用关键字and 将两个条件测试合而为一;如果每个测试都通过了,整个表达式就为True ;如果至少有一个测试没有通过,整个表达式就
为False 。

>>> age_0 = 22 
>>> age_1 = 18
>>> (age_0 >= 21) and (age_1 >= 21)
False
>>> age_1 = 22
>>> (age_0 >= 21) and (age_1 >= 21)
 True

2.使用or检查多个条件(或运算,OC中为 || )
关键字or 也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or 的表达式才为False 。

>>> age_0 = 22 
>>> age_1 = 18
>>> (age_0 >= 21) or (age_1 >= 21)
True
>>> age_0 = 18
>>> (age_0 >= 21) or (age_1 >= 21) 
False

5.2.6 检查特定值是否包含在列表中

有时候,执行操作前必须检查列表是否包含特定的值。例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。在地图程序中,可能需要检查用户提交的位置是否包含在已知位置列表中。
要判断特定的值是否已包含在列表中,可使用关键字in 。

>>> requested_toppings = ['mushrooms', 'onions', 'pineapple'] 
>>> 'mushrooms' in requested_toppings
True
>>> 'pepperoni' in requested_toppings
False

5.2.7 检查特定值是否不包含在列表中

还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in 。

banned_users = ['andrew', 'carolina', 'david'] 
user = 'marie'
if user not in banned_users:
    print(user.title() + ", you can post a response if you wish.")

输出结果:

Marie, you can post a response if you wish.

5.2.8 布尔表达式

与条件表达式一样,布尔表达式的结果要么为True ,要么为False 。

isLogin = true;
isVip = false;

5.3 if语句

5.3.1 简单的if语句

最简单的if 语句只有一个测试和一个操作:

if conditional_test: 
    do something

5.3.2 if-else 语句

经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else 语句。if-else 语句块类似于简单的if 语句,但 其中的else 语句让你能够指定条件测试未通过时要执行的操作。

age=17
if age >= 18:
    print("You are old enough to vote!")
    print("Have you registered to vote yet?") 
else:
    print("Sorry, you are too young to vote.") 
    print("Please register to vote as soon as you turn 18!")

5.3.3 if-elif-else 结构

常需要检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
在现实世界中,很多情况下需要考虑的情形都超过两个。

age=12
if age < 4:
    print("Your admission cost is $0.")
elif age < 18:
    print("Your admission cost is $5.")
else:
    print("Your admission cost is $10.")

输出结果:

Your admission cost is $5.

5.3.4 使用多个elif 代码块

可根据需要使用任意数量的elif 代码块。

age = 12
if age < 4:
    price = 0
elif age < 18: 
    price = 5
elif age < 65: 
    price = 10
else:
    price = 5
print("Your admission cost is $" + str(price) + ".")

5.4 使用if 语句处理列表

5.4.1 检查特殊元素

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings: 
    if requested_topping == 'green peppers':
        print("Sorry, we are out of green peppers right now.") 
    else:
        print("Adding " + requested_topping + ".") 
        print("\nFinished making your pizza!")

5.4.2 确定列表不是空的

requested_toppings = []
if requested_toppings:
    for requested_topping in requested_toppings:
        print("Adding " + requested_topping + ".") 
        print("\nFinished making your pizza!")
else:
    print("Are you sure you want a plain pizza?")

输出结果:

Are you sure you want a plain pizza?

5.4.3 使用多个列表

available_toppings = ['mushrooms', 'olives', 'green peppers', 'pepperoni', 'pineapple', 'extra cheese']
requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
for requested_topping in requested_toppings: 
    if requested_topping in available_toppings:
        print("Adding " + requested_topping + ".") 
    else:
        print("Sorry, we don't have " + requested_topping + ".")       
print("\nFinished making your pizza!")

未完待续...

上一篇下一篇

猜你喜欢

热点阅读