概述
Python是一种面向对象的解释性语言。
-
Python的优点很多,简单的可以总结为以下几点。
- 简单和明确,做一件事只有一种方法。
- 学习曲线低,与其他很多语言比上手更容易。
- 开放源代码,拥有强大的社区和生态圈。
- 解释型语言,完美的平台可移植性。
- 支持两种主流的编程范式,可以使用面向对象和函数式编程。
- 可扩展性和可嵌入性,可以调用C/C++代码也可以在C/C++中调用。
- 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。
-
Python的缺点主要集中在以下几点:
- 执行效率低下,因此计算密集型任务可以由C/C++编写。
- 代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题慢慢会淡化。
- 在开发时可以选择的框架太多,有选择的地方就有错误。
今天当计算机硬件足够发达的时候,我们追求的更多的不是程序的执行效率,而是开发效。
可以从Python的官方网站下载Python的安装程序(建议下载3.X的版本)以及查看相关文档。
说明:如果我们要在Linux环境下更新到Pyhon 3.X版本需要通过源代码的构件安装。
- 如果想用交互式环境进行Python开发,那么我们可以使用Python的包管理工具pip来安装第三方模块ipython和jupyter。
具体操作如下所示.
pip install ipython jupyter
或
python -m pip install ipython jupyter
- 第一个Python的程序 - hello, world
"""
第一个Python程序
Version:0.1
Author: Kyle
Date: 2018-03-02
"""
#使用了内置的print函数打印字符.
print("hello world")
- 如果要做团队开发以及要使用多文件模块协作的大项目,我们推荐使用pycharm的集成开发工具,我们可以从JetBrains公司的官方网站进行下载。
变量
作用:数据的载体.
-
命名:
对于每个变量我们需要给它取一个名字,就如同我们每个人都有属于自己的响亮的名字一样。在Python中,变量命名需要遵循以下这些必须遵守硬性规则和强 烈建议遵守的非硬性规则.- 硬性规则:
- 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头.
- 大小写敏感(大写的a和小写的A是两个不同的变量).
- 不要跟关键字(有特殊含义的单词)和系统保留字(如函数、模块等的名字)冲突
- PEP 8要求(官方建议):
- 用小写字母拼写,多个单词用下划线连接.
- 受保护的实例属性用单个下划线开头.
- 私有的实例属性用两个下划线开头.
- 硬性规则:
类型:整数,浮点数,字符串,布尔值等
特别说明: 在Python在语言层面没有定义常量的语法,但是我们可以通过把变量名用全大写来做隐含提示
全大写的变量要当做常量来看待在代码中不能修改它的值
经验提示: 符号常量总是优于字面常量
常用的部分运算符
描述 | 运算符 |
---|---|
赋值运算符 | = |
算术运算符 | + - * / // % ** |
关系运算符 | == != <= < > >= |
逻辑运算符 | and or not |
身份运算符 | is is not |
说明:在实际开发中,如果搞不清楚优先级可以使用括号来确保运算的执行顺序
分支结构
- 定义:当程序执行到需要判断的时候,就会产生两个或者多个分支,而且这两个或者多个分支只有一个会被执行,那么这样的结构就叫做分支结构(选择结构).
- 应用场景:分支结构应用在需要判断的程序中,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后我们要根据玩家得到分数来决定究竟是进入第二关还是告诉玩家“Game Over”.那么这个时候就应该用分支结构
- if语句的使用
- 在Python中,要构造分支结构可以使用if、elif和else关键字(系统保留的有特殊含义的字). 像if和else就是专门用于构造分支结构的关键字。
提示:在python的逻辑中关键字是可以是可以用作变量名的,但是一旦你用关键字作为了变量名,就会破坏关键字代表的函数或者模块导致该函数或者模块无法使用,所以我们不能用关键字作为变量名。
"""
判断闰年
Version:0.1
Author: Kyle
Date: 2018-03-04
"""
year = int(input('请输入一个年份:'))
if (year % 4 == 0 and yaer % 100 != 0) or year % 400 == 0:#如果搞不清楚优先级可以使用括号来确保运算的执行顺序
print('%d年是闰年' % year)
else:
print('%d年不是闰年' % year) # %d整数占位符
- 如果要构造出更多的分支,可以使用if…elif…else…结构。
"""
找出三个数中最大的一个数
Version:0.1
Author: Kyle
Date: 2018-03-04
"""
扁平写法
a = int(input())
b = int(input())
c = int(input())
max = a #假设最大值是a
if b > max:
max = b
if c > max:
max = c
print('max = %d' % max)
(嵌套写法)当然根据实际开发的需要,分支结构是可以嵌套的,例如判断是否通关以后还要根据你获得的宝物或者道具的数量对你的表现给出等级(比如点亮两颗或三颗星星),那么我们就需要在if的内部构造出一个新的分支结构,同理elif和else中也可以再构造新的分支,我们称之为嵌套的分支结构,也就是说上面的代码也可以写成下面的样子。
a = int(input())
b = int(input())
c = int(input())
max = a
if b > max:
max = b
if c > max:
max = c
print('max = %d' % max)
说明:扁平写法比嵌套写法更好,因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,如果可以使用扁平化的结构就不要去用嵌套。
循环结构
应用场景:在程序中需要重复的执行某条或某些指令的时候。 在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。
for in 循环
如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环。
'''
假设我有100元,公鸡五元一只,母鸡三元只,小鸡一元三只,100元买100只鸡,请问公鸡母鸡和小鸡各多少只
x + y + z == 100 x是公鸡数量 y是母鸡数量,z是小鸡数量
5 * x + 3 * y + z // 3 == 100
z % 3 == 0
Version:0.1
Author: Kyle
Date: 2018-03-04
穷举法 - 穷尽所有的可能性,直到找到正确答案。
'''
for x in range(21):
for y in range(34):
for z in range(0, 100, 3):#此题的隐含条件是小鸡数量是3的整数倍
if x + y + z == 100 and 5 * x + 3 * y + z // 3 == 100:
print(x, y, z)
#减少嵌套的循环,提高效率
for x in range(21):
for y in range(34):
z = 100 - x - y
if 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:
print(x, y, z)
while 循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环,while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。
"""
猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
Version:0.1
Author: Kyle
Date: 2018-03-04
"""
from random import randint
answer = randint(1, 100)
while True:
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break #break只能终止它所在的那个循环
嵌套循环
和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。
"""
打印100以内的质数
Version:0.1
Author: Kyle
Date: 2018-03-04
"""
from math import sqrt
for num in range(1,101):
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是素数' % num, end = ' ')
版权声明:本文为博主原创文章,未经博主允许不得转载。