Linux环境下安装与设置
1)部分Linux发行版包含所有的Python包,可以通过apt
这样的工具进行安装;
2)Anaconda的安装:安装时需要使用一个文件名类似于Anaconda3-4.1.0-Linux-86_64.sh的文件,在bash命令行输入bash Anaconda3-4.1.0-Linux-86_64.sh
,接受许可后选择安装路径;修改.bashrc文件export PATH=/home/user/anaconda/bin:$PATH
,将他的/bin目录添加到$PATH变量中去;新开一个终端,通过source~/.bashrc
来执行一次.bashrc;
3)安装其他包:conda install package_name
,pip install package_name
4)更新包:conda update package_name
,pip install --upgrade package_name
关于解释器
Python 是一个脚本语言,可以在 Python 解释器中直接写代码,也可以将代码写到一个即脚本文件里。
1)解释器:打开终端,键入pu t hon3
回车,此时解释器便处于交互模式,输入C t r l+D
退出解释器;
2)脚本文件:以vim为例,vim helloworld.py
启动vim并编辑hello world.py,输入代码;chmod +x helloworld.py
为文件添加执行权限;./helloworld.py
执行脚本文件(条件是代码里面有#!/usr/bin/env python3
),否则使用python3
执行;
代码风格
在 Python 中,空格很重要,如果行开始处缩进是错误的,Python 解释器会抛出错误。建议遵守以下约定:
- 使用 4 个空格来缩进
- 在函数之间空一行
- 在类之间空两行
- 字典,列表,元组以及参数列表中,在
,
后添加一个空格。对于字典,:
后面也添加一个空格 - 注释`#
变量和数据类型
keywords
- 不需要为指定数据类型;
- 单行定义多个变量或者赋值,e.g.,
$ python3
>>> x , y = 12, 17
>>> a
12
>>> b
17
可以用来交换两个数的值:
>>> x, y = y , x
>>> x
17
>>> y
12
工作机制是元组(tuple)的封装(等号右边)和元组拆封(左边),eg.,
>>> data = ("shiyanlou", "China", "Python")
>>> name, country, language = data
>>> name
'shiyanlou'
>>> country
'China'
>>> language
'Python'
简单的代码例子:
1)下面的程序用来求 N 个数字的平均值。请将程序代码写入到文件 /home/shiyanlou/averagen.py 中,程序中将需要输入 10 个数字,最后计算 10 个 数字的平均值。
#!/usr/bin/env python3
N = 10
sum = 0
count = 0
print("please input 10 numbers:")
while count < N:
number = float(input())
sum = sum + number
count = count + 1
average = sum / N
print("N = {}, Sum = {}".format(N, sum))
print("Average = {:.2f}".format(average))
运行程序:
$ chmod +x averagen.py
$ ./averagen.py
2)在下面的程序里,我们使用公式 C = (F - 32) / 1.8 将华氏温度转为摄氏温度。
{:5d} 的意思是替换为 5 个字符宽度的整数,宽度不足则使用空格填充。 {:7.2f}的意思是替换为为7个字符宽度的保留两位的小数,小数点也算一个宽度,宽度不足则使用空格填充。其中7指宽度为7,.2f指保留两位小数。
#!/usr/bin/env python3
fahrenheit = 0
print("Fahrenheit Celsius")
while fahrenheit <= 250:
celsius = (fahrenheit - 32) / 1.8 # 转换为摄氏度
print("{:5d} {:7.2f}".format(fahrenheit , celsius))
fahrenheit = fahrenheit + 25
运算符和表达式
类型转换:
- 字符串 -> 浮点值:
float(string)
; - 字符串 -> 整数值:
int(string)
- 整数值 -> 字符串:
str(integer)
- 浮点值 -> 字符串:
str(float)
一个栗子
计算半径为 2 的圆的面积并打印输出,保留小数点后10位:
$ cd /home/user/Code
$ touch CircleArea.py
$ python3 /home/user/Code/CircleArea.py
import math
# 计算圆的面积
area = 2 * 2 * math.pi
# 格式化输出圆的面积,保留10位小数
print("{:.10f}".format(area))
列表
- 可以写作中括号之间的一列逗号分隔的值,列表的元素不必是同一类型:
>>> a = [ 1, 342, 223, 'India', 'Fedora']
>>> a
[1, 342, 223, 'India', 'Fedora']
- 索引从零开始:
>>> a[0]
1
>>> a[4]
'Fedora'
>>> a[-1]
'Fedora'
- 切片
>>> a[0:-1]
[1, 342, 223, 'India']
>>> a[2:-2]
[223]
>>> a[:]
[1, 342, 223, 'India', 'Fedora']
切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小:
>>> a[:-2]
[1, 342, 223]
>>> a[-2:]
['India', 'Fedora']
+---+-----+-----+---------+----------+
| 1 | 342 | 223 | 'India' | 'Fedora' |
+---+-----+-----+---------+----------+
0 1 2 3 4 5
-5 -4 -3 -2 -1
- 对于非负索引,如果上下都在边界内,切片长度就是两个索引之差。例如
a[2:4]
是 2。 - Python 中有关下标的集合都满足左闭右开原则,切片中也是如此,也就是说集合左边界值能取到,右边界值不能取到。对上面的列表,
a[0:5]
用数学表达式可以写为[0,5)
,其索引取值为0,1,2,3,4
,所以能将a中所有值获取到。 也可以用a[:5], 效果是一样的。而a[-5:-1]
,因为左闭右开原则,其取值为-5,-4,-3,-2
是不包含 -1 的,为了取到最后一个值,可以使用a[-5:]
,它代表了取该列表最后5个值。 - 切片操作还可以设置步长
>>> a[1::2]
[342, 'India']
从切片索引 1 到列表末尾,每隔两个元素取值。
- 列表连接操作
>>> a + [36, 49, 64, 81, 100]
[1, 342, 223, 'India', 'Fedora', 36, 49, 64, 81, 100]
- 列表元素修改
>>> cubes = [1, 8, 27, 65, 125]
>>> cubes[3] = 64
>>> cubes
[1, 8, 27, 64, 125]
- 要检查某个值是否存在于列表中
>>> a = ['ShiYanLou', 'is', 'cool']
>>> 'cool' in a
True
>>> 'Linux' in a
False
- 获得列表的长度
>>> len(a)
3
- 检查列表是否为空
if list_name: # 列表不为空
pass
else: # 列表为空
pass
- 列表嵌套
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
range()函数——生成数值序列(不是列表)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> range(1, 5)
range(1, 5)
>>> list(range(1, 5))
[1, 2, 3, 4]
>>> list(range(1, 15, 3))
[1, 4, 7, 10, 13]
>>> list(range(4, 15, 2))
[4, 6, 8, 10, 12, 14]