1.Python起源与定义
Python 是由荷兰人吉多·罗萨姆于 1989 年发布的。Python 的第一个公开发行版发行于 1991 年。Python 的官方定义:Python 是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。通俗来讲,Python 是一种少有的、既简单又功能强大的编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。
2.Python的应用范围
Python 在通用应用程序、自动化插件、网站、网络爬虫、数值分析、科学计算、云计算、大数据和网络编程等领域有着极为广泛的应用,像 OpenStack 这样的云平台就是由 Python 实现的,许多平台即服务(PaaS)产品都支持 Python 作为开发语言。近年来,随着 AlphaGo 几番战胜人类顶级棋手,深度学习为人工智能指明了方向。Python 语言简单针对深度学习的算法,以及独特的深度学习框架,将在人工智能领域编程语言中占重要地位。
3.Python的版本
Python前期主要有两大主要支流(2.x,3.x)。从 Python2 到 Python3 是一个大版本升级,有很多不向下兼容的差异,导致很多 Python2 的代码不能被 Python3 解释器运行,2020 年开始,Python 官方停止对 Python2 的维护,所有老代码都会超过保质期。所以,大概可能Python2.x凉凉了;Python3.x将成为Python学习的主流版本。
4.Python的优缺点
(1)优点
1.语言简洁
Python 是一种代表简单主义思想的语言。吉多·罗萨姆对 Python 的定位是“优雅,明确,简单”。Python 拒绝了“花俏”的语法,而选择明确的没有或者很少有歧义的语法,着重解决问题。
2.丰富的库(基础代码库)
Python 具有丰富和强大的库来被调用。用 Python开发,许多功能不必从零编写,直接使用现成的即可。Python 还有一个强大的后援—PyPI(https://pypi.python.org/pypi)。PyPI 是第三方 Python 模块集中存储库,可以把它当成大型的代码仓库。当你的需求的库在内置模块中找不到时,你可以很大概率能在PyPI上找到。全世界的 Python 用户都可以上传他们的模块以供分享,可以想象它的强大。当然身为未来大佬你也可以上传你的模块供全世界使用。
3.可扩展性强
这个特性经常为 Python 爱好者津津乐道,Python 经常用于将不同语言(尤其是 C/C++)编写的程序“粘”在一起,即 Python 的很多模块或者组件都是用其他语言写的,而 Python 的一个功能就是把这些模块很轻松地联结在一起。所以,人们也常常称 Python 为“胶水语言”,“万能语言”。
4.开源
Python 是自由/开源软件,使用者可以自由地发布这个软件的副本,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。
5.跨平台
Python 的跨平台性可总结为“一次编写,到处运行”。
6.可嵌入型
Python 可以嵌入到 C/C++程序,从而向程序用户提供脚本功能。python也因此功能被称为脚本语言。
(2)缺点
1.运行速度相对较慢(较 C、C++而言)
Python毕竟不是最接近底层语言,与最接近底层的语言的运行速度相比会慢很多。Python 是解释型语言,其代码在执行时会一行一行地翻译成计算机能理解的机器码,这个翻译过程非常耗时,所以运行速度很慢。相比较而言,C 程序(编译型语言)是在运行前直接编译成计算机能执行的机器码,所以运行速度非常快。
当然,Python 也有很多手段可以提高运行速度。例如,Python 采用 PyPy[一种使用实时(Just-In-Time,JIT)技术的 Python 编译器]和调用 C 扩展能够在很大程度上提高速度。
2.容易被反编译
Python程序发布,不能隐藏源代码,可能不适合于大型的商业项目。当然,依靠软件授权的商业模式已经不复存在,现在更多的是靠卖服务的商业模式,后一种模式不需要把源码给别人。
5.帮助文档
1.python内置函数
help(str) # 查看关于字符串类型的帮助文档
help(str.join) # 查看关于字符串对象的 join()方法的帮助文档
dir([object])
# help()函数用于查看函数或模块用途的详细说明,而 dir()函数用于查看函数或模块内的操作方法,输出的是方法列表。
help(str) # 查看关于字符串类型的帮助文档
help(str.join) # 查看关于字符串对象的 join()方法的帮助文档
dir([object])
# help()函数用于查看函数或模块用途的详细说明,而 dir()函数用于查看函数或模块内的操作方法,输出的是方法列表。
2.官方在线文档
输出1--100之间能够被3整除的整数:
for num in range(100):
if num%3==0:
print(num,end='\t')
随机产生一个1~100的正数, 从键盘输入一个正整数,程序判断告诉:输入数据大了,还是小了。最终找到这个数字。
import random
#生成1~100任意的一个随机数
randNum=random.randint(1,100)
while True:
number=float(input("请输入一个100以内的数:")) #键盘输入一个100以内的数
if(number>randNum): #如果大于输出 "输入值偏大"
print("输入值偏大")
elif(number<randNum):#如果小于输出 "输入值偏小"
print("输入值偏小")
else: #相等输出 “数值正确”
print("数值正确")
break
例:从键盘输入两个整数,调用四个函数,分别显示输出+-*/(加减乘除)
def functionAdd(num1,num2): #加法
return num1+num2
def functionSub(num1,num2): #减法
return num1-num2
def functionMul(num1,num2): #乘法
return num1*num2
def functionDiv(num1,num2): #除法
if not num2:
return 99999
return num1/num2
if __name__=='__main__':
#请输入数字
num1= int(input('Please input a number:'))
num2= int(input('Please input a number:'))
#打印加减乘除的结果
print(functionAdd(num1,num2))
print(functionSub(num1,num2))
print(functionMul(num1,num2))
#除法判断是否有误
divResult =functionDiv(num1,num2)
if divResult ==99999:
print('the second is zero...wrong input')
else:
print(functionDiv(num1,num2))
汽车类型代码
#这是一个Car类
class Car():
'''
kind : 车的品牌
length :车的长度
weight : 车的重量
'''
def __init__(self,kind='BMW',length=4.5,weight=1.6):
self.kind=kind
self.length=length
self.__weight=weight #__weight 表示私有属性 不能直接调用
#显示车的重量
def showWeight(self):
return self.__weight
#初始化Car类
BMW=Car()
#打印车的每个属性
print(BMW.kind)
print(BMW.showWeight())
print(BMW.length)
采用关键字 try, except, finally. 其中try 表示有可能出错的代码; except表示如果出错了怎么办,finally表示不管错没错都需要执行的代码。
a = 1.0
b = float(input())
try:
c = a/b
print(f"c={c}")
except:
print("b is zero...")
finally:
print("program end...")
游戏设计
class Game(): #创建一个类
def __init__(self, name, sex, hp, exp):#定义def函数,__init__类方法中,self只有一个,属性为:name、sex、hp, exp
self.name = name
self.sex = sex
self.hp = hp
self.exp = exp
def showhp(self): #定义def函数,showhp()为类方法
self.hp -= 20 #减运算,当人物被攻击一次是生命值(hp)将会减20
if self.hp <= 0:#判断语句,当人物的生命值小于等于0时,输出打印:your hero is dead...,否则pass
print('your hero is dead...')
else:
pass
return self.hp
def showexp(self): #定义def函数,showexp()为类方法
self.exp += 50 #加运算,当人物被攻击一次经验值(exp)加50
if self.exp == 50:#判断语句,当人物的经验值等于50时,输出打印:你升级了,否则pass
print('你升级了')
else:
pass
return self.exp
if __name__ == '__main__':#main函数
Button = str(input('是否开始游戏 y/n '))
#输入语句,在input中标明y/n,将输入值转换为str类型,赋值给Button变量
if Button == 'y':
Player1 = Game(name='Little Boy', sex='male', hp=100, exp=0
#创建对象Player1,定义人物属性
for i in range(3):#循环语句(for),每循环一次就调用showhp方法,直到循环3次结束
Player1.showhp()
for i in range(5):#循环语句(for),每循环一次就调用showexp方法,直到循环5次结束
Player1.showexp()
else:
pass
print('你剩余的生命值为')
print(Player1.hp) #访问类属性
matplotlib 绘制图形,下面的代码给一个示例程序:
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, np.pi * 2, 50)#利用linspace函数生成线性序列0~pi = 3.14*2,50个分散点
plt.figure(figsize=[50, 50] ) #创建宽(50)*高(50)图像
plt.subplot(211)
plt.plot(x, np.sin(x), 'r*', label=r'$\beta$')#表示绘制sin(x)图形的样式为r*红色,对应的图注为希腊字母 $\beta$
plt.title('Sinx Figure')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.xlim([0, 10])
plt.ylim([-2, 2])
plt.grid()
plt.legend()
# plt.show()
plt.subplot(212)
plt.plot(x, np.cos(x), 'b', label='cosx')#表示绘制cos()图形的样式为b蓝色,对应的图注为cosx
plt.show()
绘制y=|x|,y=log(x),y=eˣ,以及y=sin(x)的图像,并将其放在一个图形中,分2*2显示。
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(-5,5,50)#利用linspace函数生成线性序列-5~5,50个分散点
# print(x)
plt.subplot(221)
plt.xlabel('x')
plt.ylabel('sinx')
plt.plot(x,np.sin(x),'g')#表示绘制sin(x)图形的样式为g绿色
plt.subplot(222)
plt.xlabel('x')
plt.ylabel('|x|')
plt.plot(x,np.abs(x),'g')#表示绘制abs(x)图形的样式为g绿色
plt.subplot(223)
plt.xlabel('x')
plt.ylabel('$e^x$')
plt.plot(x,np.e**x,'g')#表示绘制指数函数e**x图形的样式为g绿色
plt.subplot(224)
plt.xlabel('x')
plt.ylabel('logx')
x1 = np.linspace(0.1,10,100)#利用linspace函数生成线性序列0.1~10,100个分散点
plt.plot(x1,np.log(x1),'g') #表示绘制对数函数log(x1)图形的样式为g绿色
plt.show()
python中有两种方式实现线程:
- 实例化一个threading.Thread的对象,并传入一个初始化函数对象(initial function )作为线程执行的入口;
- 继承threading.Thread,并重写run函数;
方式1:创建threading.Thread对象
def printHello():
while True:
print("This is the hello threading...")
time.sleep(1)
def printNihao():
while True:
print("This is the Nihao threading...")
time.sleep(2)
if __name__ == '__main__':
t1 = threading.Thread(target=printHello)
t2 = threading.Thread(target=printNihao)
t1.setDaemon(False)
t2.setDaemon(False)
t1.start()
t2.start()
print("main threading ended...")
方式2:继承threading.Thread,并重写run
import threading
import time
class CustomThread(threading.Thread):
def __init__(self, thread_name):
# step 1: call base __init__ function
super(CustomThread, self).__init__(name=thread_name)
self._tname = thread_name
def run(self):
# step 2: overide run function
time.sleep(0.5)
print("This is %s running...." % self._tname)
if __name__ == "__main__":
t1 = CustomThread("thread 1")
t2 = CustomThread("thread 2")
t1.setDaemon(False)
t2.setDaemon(False)
t1.start()
t2.start()
print("This is main function")
倒计时游戏, 从60开始进行循环倒计时,每一秒自减一,按下按键‘b',开始倒计时并显示, 按下按键’t'停止倒计时。
import time
import threading
begin = False
def numCounter():
num = 60
global begin
while True:
if begin:
num = num -1
print(f'num={num}, begin={begin}')
time.sleep(1)
if num<=0:
num = 60
else:
pass
def keyDectect():
# TODO:need to be revised by using the threading lock
global begin
while True:
key = input()
if key == 'b':
begin = True
elif key == 't':
begin = False
else:
print('wrong input..')
if __name__ == '__main__':
t1 = threading.Thread(target=numCounter)
t2 = threading.Thread(target=keyDectect)
t1.setDaemon(False)
t2.setDaemon(False)
t1.start()
t2.start()