资讯专栏INFORMATION COLUMN

【Python3学习】走进Python

fuchenxuan / 609人阅读

摘要:如为,小数点后两位是,存在四舍五入。在中,有一个小坑,就是并不是真正的四舍五入如图而可以这样的总结为在奇数的时候,是四舍五入,在偶数的时候是五舍六入函数执行后输出的提示返回的是数据类型是,所以有时需要进行类型转换,这样的函数。

Python语言的概述

Pyhthon 是 蟒蛇的意思。
python语言的拥有者是 Python Software Foundation(PSF)
RSF是一个非盈利组织,致力于保护Python语言开放、开源和发展。

可以说:
Python语言是一个由编程牛人领导设计开发的编程语言
Python语言是一个有开放、开源精神的编程语言
从应用上讲,Python语言应用于火星探测、搜索引擎、引力波等众多领域

python的环境搭建

在ubuntu里面内置了python的环境,可以在终端中输入命令python2来进入python2的环境,输入python3来进入python3的运行环境。很是方便。

至于window版本,以后再补充。

第一个Python程序

学习编程少不了helloWorld!
所以开始吧!
有三种方式运行Python,第一种方式直接在终端上操作,第二种方式用文件方式执行,第三种用ide集成开发环境运行。

第一种

在终端输入python3

写下如下程序:

myString = "hello world!"
print(myString)

第二种

在某一个文件中,书写程序。并命名后缀名为.py

打开终端,见图

 安装插件

python 都是通过pip命令进行安装的,所以首先安装pip
在终端中输入sudo apt install python-pip安装pip

安装第一个插件

安装科学计算包numpy
只需输入命令pip install numpy就可以了,方便吧。

它提示pip需要更新,所以只要输入pip install update pip即可更新。

另一种安装插件的方法

使用python开发平台(继承软件包)类似于ide,如anaconda

注释

使用#来进行注释单行。
使用来进行续行,

 无须续行符的情况
1.括号内()  [] {}
2. `"""`三引号下包括的字符串也可以跨行书写。
缩进

在python中,缩进相当重要,他代表着不同的语句块。常用四个空格

python基础 变量

变量用来标识一个对象或者引用一个对象。和其他语言相同。使用变量名,大小写敏感。

常量

python中是没有常量一说的,任何的量都是可以变得。但是我们可以通过一些方法来实现。如创建一个常量类。

关于变量的命名准许你一定的规则:

必须是字母、数字、下划线和汉字等字符组合。

如:python123 python是一门好语言

大小写敏感,开头不能是数字,同时不能与python保留字相同。驼峰式命名法。

【注】True和False是首字母大写的,和Java语言不同。

运算符

运算符在运算符有很多种类型。

算数运算符 
+ - * / % **(乘方) //(取整)
位运算符
~(取反) &(与) |或 ^异或 <<左移 >>右移
比较运算符
< > <= >= == !=
逻辑运算符
not and or
赋值

=来赋值。
不需要显示的来声明类型,为什么呢?因为python是一种动态的强类型语言。根据值来确定类型。
和其他语言不同的是,python是通过引用的方式来实现赋值。python中所有的赋值都是将一个引用指向相应的内存单元。

增量赋值

如:*= += /= *= %= **= <<= >>= &= |= ^=
他们的实际就是 x += 1等价于 x = x +1

链式赋值

可以使用x = y = 1这样的方式进行赋值,从右向左。

多重赋值

x,y = 3,4这个,运算符,在python中代表着一种元组的数据结构,为了更加清晰,建议加上括号(x,y)=(3,4)

介于python中不同于其他语言的赋值方式,可以使用下面的不同赋值形式来进行两个元素的互换:x,y = y,x当然应该写成(x,y)=(y,x)

更加细致的解释后续再说

数据类型

python是一种动态的强类型语言,分为数字类型(整型、浮点型)布尔类型

Numbers类型

Numbers类型分为四种基本类型int long float complex

int

对于int而言,在python2.2以后的版本,将他扩展到了和计算机内存有关的很大的一个数,不像其他语言会溢出。所以对于int和long已没有本质的区别。

也就是说 在32位机器上面,int的值范围是:2^31 -- 2^31-1
在64位机器上面,int的范围是:2^63 -- 2^63-1
这个数字可是相当大了。

float

对于float类型也就是常说的实数,如5.33
同样float类型可以用科学计数法表示。
在python输入1.2e-2则会输出:

complex

complex是复数形式。复数分为实部和虚部,虚部必须有j
复数类型,有很多方法。
可以使用复数.real获取实数部分
使用复数.imag获取虚数部分
使用复数.conjugate获取它的共轭复数。

序列类型

序列类型可以分为字符串(String)、列表、元祖

String类型

可以使用" " """来包裹String,字符串是不可变类型。可以使用[]运算符来进行元素的获取;提供递增索引和递减索引
也就是说正向 0 , 1 , ...
反向: -1 , -2 ,...

关于字符串的操作有切片:
使用[M:N]命令,即可取出M-N的字符,包左不包右。包括N

列表

使用[]表示,中间的元素用,分离,英文为List,可变类型

通过保留字in,来查询一个元素是否在列表中。

元组

“圆”组,“圆”组,必须用圆括号啦,,,()它是不可变类型。

映射类型

用{}表示,里面是一些键值对,s = {"hello":"world"}
获取值通过s["hello"]同样是[]操作符。

Python的变量管理

首先每个对象在创建的时候都会有一个身份id,这个id可以使用id()函数来查看.
对于float类型变量来说,它存储的方式就和我们之前说的一样,每创建一个变量就将其指向一个地址.

而为了使运行更加高效,针对于小整数(并无确切范围)和字符串是不可变得,也就是说,只会为相同的数据创建一次.

可以说明一切

对于一些较大的整数还是会按正常方式创建

函数

函数分为内建函数和非内建函数,内建函数可以通过使用命令`dir(__builtins__)`来进行列出.
而非内建函数则需要导入相应的模块.

一些函数
print函数

print(变量/字符串)
输出语句
【注】在Python2中,语法和python3有所不同,需要python + 输出的内容,如上面的helloworld程序,在python2中需要这样写:print myString

格式化print函数,有些时候我们需要按照一定的格式向外输出语句,现在就需要格式化了。

print("转换后的温度值为{:.2f}C".format(C))

上面的{}表示槽,后续变量会填充在槽中,{:.2f}表示将变量C填充到这个位置时取小数点后两位。如C为12.3456,小数点后两位是12.35,存在四舍五入。

round函数

round函数方法返回浮点数的整数值,注意是整数值。具体的规则看下面。
在python3中,有一个小坑,就是round()并不是真正的四舍五入.如图

而可以这样的总结为:在奇数的时候,是四舍五入,在偶数的时候是五舍六入.

input函数

input("执行后输出的提示")
返回的是数据类型是str,所以有时需要进行类型转换,int(),float()这样的函数。也可以通过eval()把他当成有效的python表达式来求值并返回计算结果。

eval函数

去掉参数最外侧引号并执行余下语句的函数。评估函数。

模块

所谓模块,就是一个.py文件.
在物理上的组织方式我们称为文件.
而在逻辑上的组织方式我们就称为模块.
这样说来这个就是说法不同而已.

所谓的包,就是有层次的文件目录结构.
如下:

AAA/
    __int__.py
    bbb.py
    CCC/
        __int__.py
        c1.py
        ...
    DDD/
        __int__.py
        ...
    EEE/

以上就是一个一个目录结构,如果我们要导入具体的模块的话,如c1的话,就需要如下命令:

>>>import AAA.CCC.c1
>>>AAA.CCC.c1.func1(123)//通过import导入的,我们还需要写前面的一大堆

>>>from AAA.CCC.c1 import func1
>>>func1(123)//这个就可以直接写函数
如何导入模块呢?

有以下几种方式:

import 包名.类名
import 包名.类名,包名.类名
from 包名.类名 import 具体的属性和函数

用import和from import有什么区别呢?
import:导入包,使用时要用包.属性和方法来使用
from import:将包中的某个属性和方法导入,直接用方法和属性直接使用。

还有一个不同的地方在于,from import 因为是直接导的方法和属性,这就存在着重名的问题,如果程序很大 ,那么重名的就很难受,所以from import 适用于小型代码量。

语句 分支语句

if : elif : else : ,来表示条件判断分支语句。

循环语句 for循环
for 变量 in 可迭代对象:
    被执行的语句

可迭代对象包括:String List Tuple Dictionary File
【注意】for j in range(10)类似这种的,在跳出循环,j不会像其他高级语言一样跳出之后再+1。

Range函数也生成一个可迭代的对象。
例如:

for i in range(5)
    print(i)

输出:
0
1
2
3
4

range(N)函数,产生循环计数序列的
range(M,N):产生M到N-1的整数序列。
range(M,N,Step):步长
当缺省step时,默认值为1,
缺省start和step 默认值0 和 1
end不能缺省。
range(5): 0,1,2,3,4 产生0到N-1的整数序列,共N个

range()生成的是一个range对象,类似于一个生成器generator,可迭代。
可以用在列表解析和生成器表达式中,具体如下:

列表解析
>>> [i for i in range(10)]
[0,1,2,3,4,5,6,7,8,9]
>>> [i + 1 for i in range(10) if i%2 == 0 ]
[1,3,5,7.9]
生成器表达式
>>> (i+1 for i in range(10) if i % 2 == 0)
 at 0x00000100392405900> #生成一个生成器对象而不是列表

一般在数据量大的时候用生成器表达式,在数据量小的时候用列表解析。

while循环
while 条件:
    循环语句
continue break 和else

break:跳出当前循环
continue:跳出本次循环
else:如果循环代码从break出终止,跳出循环
如果正常结束循环,则执行else中的代码

如:

from math import sqrt
num = int(input("Please enter a number:"))
j = 2 
while j <= int(sqrt(num)):
    if num% j == 0:
        print("{:d} is not prime".format(num))
        break
    j += 1
else:
    print("{:d} is a prime".format(num))
自定义函数
def 函数名(参数):
    文档字符串"apply operation + to argument"
    函数体

通过print fn.__doc__来获取文档字符串

默认参数

默认参数可以按照以下给出:

def f(x,y=True):
    ...
    ...

这样在调用的时候,如果不给出默认参数就会直接传入默认参数。
如调用f(20)其实等同于`f(20,True)

【注】不可以将默认参数放在其他参数的前面。结合前面的例子:如

def f(x = True,y):
    ...

如果以上可行的话,调用f(False)是将False传给哪一个呢?

关键字参数

关键字参数指的是,在调用函数的时候,可以自己指定参数。如
调用上面的f函数,可以这样调用:f(y= False,x=20)这样就可以打乱顺序自己定义。

【注】:一旦出现了一个关键字定义了,就必须全部,可以理解为,有两种模式,一种是普通的参数传递,另一种就是这个按键值进行传,我把这个开关打开了,你就必须全部按照这个规则去做、

函数传递

函数可以作为参数进行传递。

lambda表达式

所谓的lambda表达式,其实是匿名函数。
它是这样的格式:

lambda 参数1,参数2,... : 返回的值

当然这个lambda表达式赋值给一个变量就可以通过这个变量进行调用了。

如:

r = lambda x : x+x
r(5)

输出:

10

其实就是等同于以下语句:

def r(x):
    return x + x
测试

=

1单选(1分)
以下哪一个语句不可以打印出"hello world"字符串(结果需在同一行)?

A.print("hello world")

B.print("""hello 
    world""")

1.00/1.00
C. print("hello 
    world")

D.print("hello world")

2单选(1分)
Python中input()函数的返回的是以下哪一种类型?

A.dict
B.int
C.list
D.str
1.00/1.00

3单选(1分)
以下关于模块module的描述中错误的是哪一项?

A.用import导入了模块之后,可以按照“模块.函数”的格式使用这个模块的函数
B.一个完整的Python文件即是一个模块,是增强Python功能的扩展
C.Python目前还不支持一次性导入多个模块
1.00/1.00
D.可以使用变量来引用函数,例如可以通过bar=math.sqrt进行赋值,然后就可以使用bar来进行计算平方根,例如bar(9)结果是3.0

4单选(1分)

以下关于Python的赋值说法中错误的是哪一个选项?

A.Python 赋值时大小写不敏感
1.00/1.00
B.Python中同一个变量名在不同位置可以被赋予不同的类型与数值
C.Python中不需要显式声明该变量的类型,根据“值”确定类型
D.Python支持链式赋值和多重赋值

5多选(1分)

以下表达式的计算结果是3(或3.0)的选项有哪些?

A.ord("D") – ord("A")
0.50/1.00
B.1 / 2 + 2.5
0.50/1.00
C.9 // 2 – 1.5
D.35 % 10

6多选(1分)

如果想要查看math库中pi的取值是多少,可以利用以下什么方式(假设已经执行了import math,并且只要包含pi取值就可以)?

A.help(math)
0.50/1.00
B.dir(math)
C.print(math.pi)
0.50/1.00
D. print(pi)

7多选(1分)

以下哪些不是Python的关键字?

A.from
B.as
C.list
0.50/1.00
D.dict
0.50/1.00

8判断(1分)

判断如下陈述是否正确?

Python既可以在Shell中运行执行,也可以存储成以.py为扩展名的文本文件使用Python解释器去执行。

A.不可以
B.可以
1.00/1.00

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44637.html

相关文章

  • Tensorflow快餐教程(2) - 标量运算

    摘要:在机器学习中,用途最广泛的是向量和矩阵的运算。同样,也提供了到各种数据类型的转换函数。定义这么多函数太麻烦了,还有一个通用的转换函数格式为类型名。这在机器学习的计算中是件可怕的事情。只有是例外,它会立即返回这两个是否是同一对象的结果。 Tensorflow的Tensor意为张量。一般如果是0维的数组,就是一个数据,我们称之为标是Scalar;1维的数组,称为向量Vector;2维的数组...

    gggggggbong 评论0 收藏0
  • [零基础学python]一个免费的实验室

    摘要:在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西。再后来,终于发现原来计算机是一个最好的实验室。通过实验,研究清楚了,才能在编程实践中使用。其实,这就是一个非常好的实验室。 在学生时代,就羡慕实验室,老师在里面可以鼓捣各种有意思的东西。上大学的时候,终于有机会在实验室做大量实验了,因为我是物理系,并且,遇到了一位非常令我尊敬的老师——高老师,让我在他的实验室里面,把所有已经...

    soasme 评论0 收藏0
  • Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践

    摘要:前端一种新一代高性能全栈开发实践背景本项目将使用配合最简单的逻辑来展示一个基于的全新一代高性能全栈开发实践的为什么是对于为何不是等著名框架,或许可能很多人会产生疑惑,本身和非常的相似,而它的出现,不仅是大大改进过去时代性能低下通病,外加配 SanicCRUD-vue Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践showImg(https://segmentfa...

    Profeel 评论0 收藏0

发表评论

0条评论

fuchenxuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<