Python入门基础知识学习(一)

Python是什么?

Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在我们使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

备注:想要了解更多关于Python的介绍,大家可以前往W3Cschool的Python编程入门教程查看。

初学者学习python2还是python3?

在开始学习python的时候,我们都会遇到一个比较让人很头疼的问题:版本问题!是学习python2 还是学习 python3 ?这是非常让人纠结的!搜索一下我们便会发现python3 和 python2 是不兼容的,而且差异比较大,到底学习哪个版本呢?就以下几个方面我们来分析一下:

语法设计

当初设计 Python3 的目的是没有代码兼容的包袱的情况下改进 Python,所以python3有很大改进,比 Python2更容易理解,更加合理。

现状分析

  • PyPy,各大 Web 框架,科学计算包,Scrapy 等常用模块, 都已经很好的支持Python3。 但是还有部分比较陈旧的库已经无人维护, 也就没有支持最新的Python3,不过不用担心, 这些库往往是不常用的,或者说可以找到替代方案。

  • 大部分的情况下可以直接写 2/3 兼容的代码,也有 six 这类的兼容层可用。

  • python2对旧库的支持要更多一些,至少在学界还是更流行的。

选择理由

  • Python3 才是Python的未来

  • Python官方都建议指直接学习Python3

  • Python2 据说只维护到2020年

总结

先学 Python2 还是 Python3 都不是问题,其实差别并不大, 主要的是下定决心学下去, 当我们学会了Python3, Python2代码开发完全没有问题!但是,我还是推荐直接学习Python3,毕竟它的语法更合理,更新。除非我们的外部环境只能允许我们使用Python2。

以上仅代表我的个人观点!

Python学习资源推荐

入门基础教学视频推荐

本人关于Python入门基础知识学习的系列博客都是基于B站的Python教学视频撰写,感兴趣的小伙伴们可以去看看,个人感觉讲得很不错,点击Python教程2019版即可跳转B站进行观看。

入门教程推荐

这里推荐W3Cschool的入门教程,内容非常详细,还有配套练习,大家可以点击W3Cschool的Python板块浏览。

开始Python的学习

新建一个python的项目工程

  • 1、打开PyCharm

  • 2、点击File->点击New Project

  • 填写自己的Python项目名称及路径后,点击Create

备注Base interpreter选项中需要选择Python3版本的解释器

  • 选中自己创建好的Python项目,右击选择New,并在出现的选项框中选择Python File

  • 填写python文件的名称,点击OK

第一个任务:画一个自己喜欢的形状

1、涉及的知识点

Python两种输出值的方式: 表达式语句和 print() 函数。这里只介绍:print()函数

2、练习使用

1
2
3
4
print("张之卿")
print('O----')
print(' ||||')
print('*' * 10)

备注:搞清楚双引号或者单引号来定义字符串的区别——定义一个字符串单引号或者双引号都可以,但有时存在特殊情况,详细见后文。

3、任务解决

1
2
3
4
print(' --  --')
print('| |__| |')
print('| |')
print('|______|')

第二个任务:We check in a patient named John Smith.He's 20 years old and is a new patient.根据内容定义三个变量——他的名字他的年龄、和另一个变量他是否是新病人

1、涉及的知识点

python基本数据类型如下表所示:

表示 意义
int 整数,用来进行数学运算
str 字符串,存放少量数据
bool 布尔值,用来判断True,False
list 列表,存放大量数据,[ ]表示
tuple 元组,只读列表,( ) 表示
dict 字典,存放大量数据,{key:value}表示
set 集合,存放大量数据,不重复

这里只介绍三种基本数据类型:intboolstr

2、使用练习

1
2
3
4
5
6
7
8
9
10
11
number = 12
number = 20
price = 4.6
name = 'Zhang Zhiqing'
is_right = True
is_right = False
# python严格区分大小写
print(number)
print(price)
print(name)
print(is_right)

备注:python语句是从上往下逐行运行的,一个变量可以多次赋值,但最终的值以最后一次赋值为准。

3、任务解决

1
2
3
h_name = "John Smith"
h_age = 20
is_new_patient = True

第三个任务:Ask two questions:person’s name and favorite color.Then,print a message like “Zhang Zhiqing likes blue.”

1、涉及的知识点

Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型

2、使用练习

1
2
name = input('What is your name? ')
print('Hello ' + name)

3、任务解决

1
2
3
name = input('What is your name? ')
color = input('What is your favorite color? ')
print(name + ' likes ' + color + '.')

第四个任务:Ask a user their weight(in pounds),convert it to kilograms and print on the terminal.

1、涉及的知识点

Python数据类型的显示转换,也称为数据类型的强制类型转换,是通过Python的内建函数来实现的类型转换。

(1)Python显式转换的多种类型如下表所示:

表示 意义
int(x [,base]) 将x转换为一个十进制的整数
long(x [,base]) 将x转换为一个十进制的长整数
float(x) 将x转换为一个浮点数
str(object) 转换为字符串
repr(object) 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(seq) 将序列seq转换为一个元组
list(seq) 将序列seq转换为一个列表
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

(2)Python中bool类型转换:bool(),比较特殊

在python中,以下数值会被认为是False,其他的值都认为是True:

  • 为0的数字,包括 0,0.0
  • 空字符串,包括 '',""
  • 表示空值的 None
  • 空集合,包括 (),[],{}

备注:None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样;bool(‘False’)的结果是True,因为’False’是一个不为空的字符串,当被转换成bool类型之后,就得到True;bool(‘ ‘)的结果是True,一个空格不能算作空字符串,bool(‘’)才是False。

此次练习中我们只介绍两种常用的强制类型转换:int()str()

2、使用练习

1
2
3
4
5
6
7
birth_year = input('Birth year: ')
# birth_year = '1997' != 1997
# 2019 - '1997' python不知道这是什么意思
print(type(birth_year))
age = 2019 - int(birth_year)
print(type(age))
print(age)

备注:type() 方法的语法:(1)type(object)(2)type(name, bases, dict)type() 函数如果我们只有第一个参数则返回对象的类型,有三个参数则返回新的类型对象。具体用法及实例请参照:Python type() 函数

3、任务解决

1
2
3
weight_lbs = input('What is your weight in pounds? ')
weight_kg = int(weight_lbs) * 0.45
print(str(weight_kg) + ' kg ')

单行字符串定义的特殊情况

1、使用练习

(1)第一种情况:字符串中需要使用单引号时

1
2
course = "Python's Course for Beginners"
print(course)

(2)第一种情况:字符串中需要使用双引号时

1
2
course = 'Python for "Beginners"'
print(course)

2、总结

字符串中有需要用到单引号的地方,那么整个字符串就用双引号定义;
字符串中有需要用到双引号的地方,那么整个字符串就用单引号定义。

多行字符串如何定义

1、使用练习

1
2
3
4
5
6
7
course = '''
Hi John,
Here is our first email to you.
Thank you,
The support team.
'''
print(course)

2、总结

使用三引号定义多行字符串,三引号既可以是三个单引号也可以是三个双引号。

Python 字符串的索引

字符串是字符的有序集合,可以通过其位置来获得具体的元素。在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始。

python 可以取负值,表示从末尾提取,最后一个为 -1,倒数第二个为 -2,即程序认为可以从结束处反向计数。

1、练习使用

1
2
3
4
5
6
course = 'Python for Beginners.'
# 索引号 0123456789
print(course[0])
print(course[-1])
print(course[0:3])
# python解释器会返回从索引0一直到索引3,但不包括索引3的字符串。

2、几种情况

(1)用户不提供结束索引:print(course[0:])

python解释器在用户不提供结束索引的情况下默认会返回从指定索引到末尾的字符串。

(2)用户不提供开始索引:print(course[:5])

python解释器在用户不提供开始索引的情况下默认会返回从索引0到指定索引的字符串。

(3)用户既不提供开始索引也不提供结束索引:print(course[:])

python解释器在用户不提供开始索引和结束索引的情况下默认会返回从索引0到末尾的所有字符串。

(4)用户提供的结束索引为负数

1
2
3
name = 'Zhang Zhiqing'
# 索引号 0123456789
print(name[1:-1])

python解释器会返回从索引1一直到倒数第1个索引,但不包括倒数第1个索引的字符串。

3、利用这个语法,我们可以复制或克隆一个字符串

1
2
another = course[:]
print(another)

Python格式化字符串f-string

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’ 或 F’xxx’),以大括号 {} 标明被替换的字段。

1、使用练习

目标:输出John [Smith] is a coder.

(1)传统方法

1
2
3
4
first = 'John'
last = 'Smith'
message = first + ' [' + last + '] is a coder.'
print(message)

(2)使用格式化字符串f-string输出

1
2
3
4
first = 'John'
last = 'Smith'
msg = f'{first} [{last}] is a coder.'
print(msg)

2、总结

格式化字符串常量,f-string用大括号{}表示被替换字段,其中直接填入替换内容。相比较传统的字符串输出,格式化字符串常量的输出方法使我们可以很容易看出最后的输出结果是怎样的。

备注:更多关于f-string的介绍和使用方法,请参照sunxb10的博客

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×