栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Python3入门——01

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3入门——01

Python3入门——01

相关链接地址如下:
Python tutorial:http://www.pythondoc.com/pythontutorial3/index.html_Python for you and me_:http://pymbook.readthedocs.io/en/latest/
The Python Standard Library:https://docs.python.org/3/library/index.html


前言

首先,创建的文件会放在 /home/shiyanlou 目录下,打开 Xfce 终端,键入 vim helloworld.py 来启动 Vim 并编辑 helloworld.py,启动后不要乱按键。
然后按 i 键进入插入模式,此时你可以看到左下角有 “插入” 两个字,现在你可以键入下面的代码了。
然后按 Esc 键退出插入模式,再键入 :wq 回车,Vim 就会保存文件并退出。
要运行脚本文件 helloworld.py,还要为文件添加可执行权限(否则会出现权限不足的错误):

chmod +x helloworld.py

在这里使用到了 linux 下的 chmod 命令来变更文件或目录的权限,+x代表赋予了其可执行的权限。

然后执行脚本文件:

./helloworld.py

这里需要注意如果程序中没有 #!/usr/bin/env python3 的话,应该使用 python3 helloworld.py来执行,否则使用 ./helloworld.py程序会被当作 bash 脚本来执行,最终报错。
若想要了解更多,你也可以点击此处快速掌握常用Unix/Linux 常用命令查看。https://i.linuxtoy.org/files/pdf/fwunixref.pdf


一、准备工作 代码风格建议

在 Python 中,空格很重要,我们使用空格将标识符区分开,行开始处的空格我们称之为缩进,如果你的缩进是错误的,Python 解释器会抛出错误。例如下面情形:

>>> a = 12
>>>   a = 12
  File "", line 1
    a = 12
    ^
IndentationError: unexpected indent

这是因为第二行开始处出现了多余的空格,所以需要经常检查代码的缩进。
如果你在代码中混用制表符和空格,这种缩进错误会很常见。
所以如果是用空格,就一直用空格缩进,不要使用制表符。

建议遵守以下约定:

使用 4 个空格来缩进;永远不要混用空格和制表符;在函数之间空一行;在类之间空两行;字典,列表,元组以及参数列表中,在 , 后添加一个空格。对于字典,: 后面也添加一个空格; 在赋值运算符和比较运算符周围要有空格(参数列表中除外),但是括号里则不加空格:a = f(1, 2) + g(3, 4)


注释

注释是一些文本用来解释此处代码是做什么的,写注释是为了使他人更容易理解代码。
Python 的注释以 # 字符开始的,在 # 字符到行尾之间的所有东西都被程序忽略为注释,也就说对程序没有任何影响。

>>> # 这是一个注释
>>> # 下面这一行是求两数之和
>>> a = 12 + 34
>>> print(a) # 这里也是注释 :)

注释主要面向的人群是开发人员和维护代码库的人员,所以如果你写了一些复杂代码,你应该写足够的注释在里面,以便让其他任何人能够通过你的注释读懂代码。你应该总是在 # 后跟一个空格,然后再写注释。你也可以做一些标准的注释,像下面这样。

# FIXME -- fix these code later
# TODO -- in future you have to do this

模块

模块是包含了我们能复用的代码的文件,包含了不同的函数定义,变量。模块文件通常以 .py 为扩展名。
Python 本身在默认安装时就带有大量的模块。我们之后将会用到其中的一部分。在使用模块前先导入它。

>>> import math    # 导入math模块
>>> print(math.e)
2.71828182846

二、 Python 基本的数据类型和变量 1.关键字和标识符

每一种编程语言都有它们自己的语法规则,就像我们所说的外语。
下列的标识符是 Python3 的关键字,并且不能用于通常的标识符。关键字必须完全按照下面拼写:

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

这些内容可以在 Python3 解释器中得到。
在 Python 中 我们不需要为变量指定数据类型。所以你可以直接写出 abc = 1 ,这样变量 abc 就是整数类型。如果你写出 abc = 1.0 ,那么变量 abc 就是浮点类型。

>>> a = 13
>>> b = 23
>>> a + b
36

在 Python 中定义变量,也就是只需要输入变量名和值就行了。Python 也能操作字符串,它们用单引号或双引号括起来,就像下面这样。

>>> 'ShiYanLou'
'ShiYanLou'
>>> 'ShiYanLou's best'
"ShiYanLou's best"
>>> "Hello World!"
'Hello World!'
2.从键盘读取输入

通常情况下,Python 的代码中是不需要从键盘读取输入的。不过我们还是可以在 Python 中使用函数 input() 来做到这一点,input() 有一个用于打印在屏幕上的可选字符串参数,返回用户输入的字符串。
我们来写一个程序,它将会从键盘读取一个数字并且检查这个数字是否小于 100。这个程序名称是 /home/shiyanlou/testhundred.py。
在终端中输入:

vim testhundred.py

输入i后,编写以下代码,注意缩进:

#!/usr/bin/env python3
number = int(input("Enter an integer: "))
if number <= 100:
    print("Your number is less than or equal to 100")
else:
    print("Your number is greater than 100")

接着按 ESC 键并输入 :wq 退出 Vim。
该段代码的含义如下:
如果 number 小于等于 100,输出 “Your number is less than or equal to 100”,如果大于 100,输出 “Your number is greater than 100”。
在执行程序前,别忘了为文件添加可执行权限:

chmod +x testhundred.py

程序运行起来就像这样:

./testhundred.py
Enter an integer: 13
Your number is less than or equal to 100
./testhundred.py
Enter an integer: 123
Your number is greater than 100

后续程序中将会用到 while 循环语句。
while 是使用一个表达式作为判断的条件,如果条件不能够达成则停止循环:

w = 20
while w > 1:
    print(w)
    w -= 1

这个循环中判断条件为 w > 1,当条件不满足的时候就停止循环。当 w 的值小于等于 1 的时候,循环退出。这里要注意 w -= 1,等同于 w = w - 1。
下一个程序我们写入 /home/shiyanlou/investment.py,来计算投资,使用 Vim 输入以下代码:

#!/usr/bin/env python3
amount = float(input("Enter amount: "))  # 输入数额
inrate = float(input("Enter Interest rate: "))  # 输入利率
period = int(input("Enter period: "))  # 输入期限
value = 0
year = 1
while year <= period:
    value = amount + (inrate * amount)
    print("Year {} Rs. {:.2f}".format(year, value))
    amount = value
    year = year + 1

运行程序:

cd /home/shiyanlou
chmod +x investment.py
./investment.py
Enter amount: 10000
Enter Interest rate: 0.14
Enter period: 5
Year 1 Rs. 11400.00
Year 2 Rs. 12996.00
Year 3 Rs. 14815.44
Year 4 Rs. 16889.60
Year 5 Rs. 19254.15

while year <= period: 的意思是,当 year 的值小于等于 period 的值时,下面的语句将会一直循环执行下去,直到 year 大于 period 时停止循环。
Year {} Rs. {:.2f}".format(year, value)称为字符串格式化,大括号和其中的字符会被替换成传入 str.format()的参数,也即 year 和 value。其中{:.2f} 的意思是替换为 2 位精度的浮点数。

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

三、 运算符和表达式 运算符

运算符是一些符号,它告诉 Python 解释器去做一些数学或逻辑操作。一些基本的数学操作符如下所示:

>>> 2 + 3
5
>>> 23.0 - 3
20.0
>>> 22 / 12
1.8333333333333333

只要有任意一个操作数是浮点数,结果就会是浮点数。
进行除法运算时若是除不尽,结果将会是小数,这很自然,如果要进行整除,使用 // 运算符,它将返回商的整数部分。

% 是求余运算符:

>>> 14 % 3
2
整数运算符

整数运算符比较容易理解,代码如下:

#!/usr/bin/env python3
days = int(input("Enter days: "))
months = days // 30
days = days % 30
print("Months = {} Days = {}".format(months, days))

在终端里使用 Vim 输入上述代码后,用chmod命令赋予可执行权限,最后运行程序:

3-2.1-1

在Enter days:后获得用户输入的天数,然后获得月份数和天数,最后把这些数打印出来。你可以使用更容易的办法:

#!/usr/bin/env python3
days = int(input("Enter days: "))
print("Months = {} Days = {}".format(*divmod(days, 30)))

divmod(num1, num2) 返回一个元组,这个元组包含两个值,第一个是 num1 和 num2 相整除得到的值,第二个是 num1 和 num2 求余得到的值,然后我们用*运算符拆封这个元组,得到这两个值。

关系运算符

你可以使用下面的运算符实现关系运算。

OperatorMeaning
<Is less than
<=Is less than or equal to
>Is greater than
>=Is greater than or equal to
==Is equal to
!=Is not equal to

在终端里输入python3进入交互页面,试一试以下一些例子:

>>> 1 < 2
True
>>> 3 > 34
False
>>> 23 == 45
False
>>> 34 != 323
True
逻辑运算符

对于逻辑与,或,非,我们使用and,or,not这几个关键字。
逻辑运算符 and 和 or 也称作短路运算符:它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果 A 和 C 为真而 B 为假,A and B and C 不会解析 C 。作用于一个普通的非逻辑值时,短路运算符的返回值通常是能够最先确定结果的那个操作数。
关系运算可以通过逻辑运算符 and 和 or 组合,比较的结果可以用 not 来取反意。逻辑运算符的优先级又低于关系运算符,在它们之中,not 具有最高的优先级,or 优先级最低,所以 A and not B or C 等于 (A and (notB)) or C。当然,括号也可以用于比较表达式。
下面是一些例子:

>>> 5 and 4   # 首先判断5,肯定为true,那么最终的结果就取决于 and 后面那个的布尔值,4 的布尔值为 true,这样就可以确定整个表达式的值为 true 了,所以返回 4
4
>>> 0 and 4   # 首先判断0,因为 0 的布尔值为 false,那么不管 and 后面那个的布尔值是什么,整个表达式的布尔值都应该为 false 了,这个时候就不需要判断 4 了,直接返回最先确定结果的那个数也就是0
0
>>> False or 3 or 0
3
>>> 2 > 1 and not 3 > 5 or 4
True
简写运算符

x op= expression为简写运算的语法形式。其等价于x = x op expression ,举例如下:

>>> a = 12
>>> a += 13
>>> a
25
>>> a /= 3
>>> a
8.333333333333334
>>> a += (26 * 32)
>>> a
840.3333333333334

/home/shiyanlou/shorthand.py 示例,输入quit()退出 python 交互页面,用 Vim 写入以下代码:

#!/usr/bin/env python3
N = 100
a = 2
while a < N:
    print(str(a))
    a *= a

运行程序:

cd /home/shiyanlou
chmod +x shorthand.py
./shorthand.py
2
4
16
表达式

通常我们书写表达式的时候,会在每一个运算符左右都放一个空格,这样使代码更可读,如:

a = 234 * (45 - 56 / 34)

一个用于展示表达式的例子,注意其中运算符的优先级。

#!/usr/bin/env python3
a = 9
b = 12
c = 3
x = a - b / 3 + c * 2 - 1
y = a - b / (3 + c) * (2 - 1)
z = a - (b / (3 + c) * 2) - 1
print("X = ", x)
print("Y = ", y)
print("Z = ", z)

运行程序:

cd /home/shiyanlou
chmod +x evaluationexp.py
./evaluationexp.py
X = 10.0
Y = 7.0
Z = 4.0

第一个计算的是 x,步骤如下:

9 - 12 / 3 + 3 * 2 -1
9 - 4 + 3 * 2 - 1
9 - 4 + 6 - 1
5 + 6 - 1
11 - 1
10
类型转换
类型转换函数转换路径
float(string)字符串 -> 浮点值
int(string)字符串 -> 整数值
str(integer)整数值 -> 字符串
str(float)浮点值 -> 字符串
>>> a = 8.126768
>>> str(a)
'8.126768'

总结 例题

求 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))

运行程序过程,需要输入 10 个数字:

cd /home/shiyanlou
chmod +x averagen.py
./averagen.py
1.2
3.4
3.5
33.2
2
4
6
2.4
4
5.5
N = 10, Sum = 65.2
Average = 6.52

温度转换
在下面的程序里,我们使用公式 C = (F - 32) / 1.8 将华氏温度转为摄氏温度。

#!/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

{:5d} 的意思是替换为 5 个字符宽度的整数,宽度不足则使用空格填充。 {:7.2f}的意思是替换为为 7 个字符宽度的保留两位的小数,小数点也算一个宽度,宽度不足则使用空格填充。其中7指宽度为 7,.2f指保留两位小数。
运行程序:

cd /home/shiyanlou
chmod +x temperature.py
./temperature.py
Fahrenheit Celsius
    0  -17.78
   25   -3.89
   50   10.00
   75   23.89
  100   37.78
  125   51.67
  150   65.56
  175   79.44
  200   93.33
  225  107.22
  250  121.11

单行定义多个变量或赋值
你甚至可以在一行内将多个值赋值给多个变量。
在终端中输入:

python3
copy
进入到 python3 交互式界面:

>>> a , b = 45, 54
>>> a
45
>>> b
54

这个技巧用来交换两个数的值非常方便。

>>> a, b = b , a
>>> a
54
>>> b
45

要明白这是怎么工作的,你需要学习元组(_tuple_)这个数据类型。我们是用逗号创建元组。在赋值语句的右边我们创建了一个元组,我们称这为元组封装(_tuple packing_),赋值语句的左边我们则做的是元组拆封 (_tuple unpacking_)。

下面是另一个元组拆封的例子:

>>> data = ("shiyanlou", "China", "Python")
>>> name, country, language = data
>>> name
'shiyanlou'
>>> country
'China'
>>> language
'Python'

quadraticequation.py
这个程序的名称为 quadratic equation 组合,是二次方程的英文词组。
这个程序用来求解二次方程式:

#!/usr/bin/env python3
import math
a = int(input("Enter value of a: "))
b = int(input("Enter value of b: "))
c = int(input("Enter value of c: "))
d = b * b - 4 * a * c
if d < 0:
    print("ROOTS are imaginary")
else:
    root1 = (-b + math.sqrt(d)) / (2 * a)
    root2 = (-b - math.sqrt(d)) / (2 * a)
    print("Root 1 = ", root1)
    print("Root 2 = ", root2)

编写完成后运行 chmod +x quadraticequation.py 给文件增加运行权限。
salesmansalary.py
这个程序计算一位数码相机销售人员的工资。他的基本工资是 1500,每售出一台相机他可以得到 200 并且获得 2% 的抽成。程序要求输入相机数量及单价。

#!/usr/bin/env python3
basic_salary = 1500
bonus_rate = 200
commission_rate = 0.02
numberofcamera = int(input("Enter the number of inputs sold: "))
price = float(input("Enter the price of camera: "))
bonus = (bonus_rate * numberofcamera)
commission = (commission_rate * price * numberofcamera)
print("Bonus        = {:6.2f}".format(bonus))
print("Commission   = {:6.2f}".format(commission))
print("Gross salary = {:6.2f}".format(basic_salary + bonus + commission))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/599582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号