Python学习第一周总结(上)

Python基础知识总结

一、前期了解

1.1解释型语言和编译型语言

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。

解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。

C/C++ 等都是编译型语言,而Java,C#,Python等都是解释型语言。

1.2动态类型语言和静态类型语言

动态类型语言:指在运行期间才去做数据类型检查的语言。在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python,Ruby,shell等就是一种典型的动态类型语言。

静态类型语言:它的数据类型是在编译期间检查的。在写程序时,要声明所有变量的数据类型。C/C++是静态类型语言的典型,其他的还有C#,JAVA等。

1.3强类型定义语言和弱类型定义语言

强类型定义语言:如果一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当做字符串类型处理。除非,你强制性的改变它的类型。强类型定义语言是类型安全的语言。如C、Python。

弱类型定于语言:数据类型可以被忽略的语言,与强类型定义语言相反,一个变量可以赋予不同数据类型的值。如shell。

强类型定义语言在速度上可能略逊于弱类型定义语言,但是强类型定于语言具有严谨性,能够有效的避免许多错误。

二、Python历史、优缺点、解释器

2.1历史

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧 Monty Python’s Flying Circus。他希望这个新的叫做Python的语言能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

1999年 Python的web框架之祖——Zope 1发布

Python 2.0 - 2000/10/16,加入了内存回收机制,构成了现在Python语言框架的基础

Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 诞生

Python 2.5 - 2006/09/19

Python 2.6 - 2008/10/1

Python 2.7 - 2010/07/03

Python 3.0 - 2008/12/03

Python 3.1 - 2009/06/27

Python 3.2 - 2011/02/20

Python 3.3 - 2012/09/29

Python 3.4 - 2014/03/16

Python 3.5 - 2015/09/13

Python 3.6 2016/12/23

2014年11月,Python2.7将在2020年停止支持的消息被发布,并且不会在发布2.8版本,建议用户尽可能的迁移到3.4+    Python最初发布时,在设计上有一些缺陷,比如Unicode标准晚于Python出现,所以一直以来对Unicode的支持并不完全,而ASCII编码支持的字符有限。例:对中文支持不好Python3相对Python早期的版本是一个较大的升级,Py3在设计的时候没有考虑向下兼容,所以很多早期版本的Python的程序无法再Py3上运行。为了照顾早期的版本,推出过渡版本2.6——基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。2010年继续推出了兼容版本2.7,大量Python3的特性被反向迁移到了Python2.7,2.7比2.6进步非常多,同时拥有大量3中的特性和库,并且照顾了原有的Python开发人群。

2.2 Python2还是Python3?

py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。所有的最新的标准库的更新改进,只会在3.x的版本里出现。Guido决定清理Python2.x ,并且不再兼容旧版本。

最大的一个改变就是使用Unicode作为默认编码。Pyhton2.x中直接写中文会报错,Python3中可以直接写中文了。从开源项目看,支持py3的比例已经大大提高,知名的项目一般都支持py2.7和py3+。

py3比py2更规范统一、去掉了没必要的关键字Python3.x还在持续改进。

所以推荐大家使用Python3.x。

2.3Python 解释器

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

CPython:这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。也是按照Python后,默认的解释器。

IPython:是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

PyPy:是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython:是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结:Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

2.4Python的优缺点

2.4.1优点

1)Python的定位是“优雅”“明确”“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常复杂的程序。

2)开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上在进行二次开发,大大降低开发周期,避免重复。

3)高级语言,当你用Python语言编写程序的时候,你无需考虑如何管理你的程序使用的内存一类的底层细节。

4)可移植性,由于它的开源本质,Python已经被移植在许多平台。如果在编程中,小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行。

5)可扩展性,如果你需要你的一段关键代码运行的更快或者希望某些算法不公开,你可以把你的部分程序用C或者C++编写,然后在你的Python程序中使用它们。

6)可嵌入性,你可以把Python嵌入你的C/C ++程序,从而向你的程序用户提供脚本功能。

2.4.2缺点

1)速度慢,Python的运行速度相比于C和JAVA要慢。一般执行速度,比C慢10倍。

2)代码不能加密,Python是解释性语言,它的源码都是以明文形式存放的,如果要加密,就不要用Python实现。

3)线程不能利用多CPU问题,即Python的多线程不能利用多核优势。一个Python解释器进程内只有一条主线程,以及多条用户程序的执行线程。即使在多核CPU上,由于Python的GIL(全局解释器锁,Global interpreter Lock)的存在,也禁止多线程的并行执行。

2.5Python安装

2.5.1下载安装包

https://www.python.org/downloads/release/python-361/

2.5.2安装

直接安装,python3.6会自动给我们添加路径

2.5.3 安装pycharm5.0.3

2.5.4破解pycharm5.0.3

https://jingyan.baidu.com/article/455a9950baf5bea167277877.html 百度经验

2.5.5汉化pycharm5.0.3

http://www.sd173.com/html/3458.html

三、python的基本语法

3.1变量与字符编码

什么是变量,变量的功能?变量用来存东西的,Python属于动态类型语言,直接使用就可以了,无需申请。

变量赋值,比如a=1,就定义了变量a,并且给a赋值为1

变量命名规则:

1):变量名只能是字母、数字、下划线组成;

2):变量名的第一个字符不能是数字;

3):以下关键字不能声明为变量名: and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,

import, in,is,lambda,not,or,pass,print,ralse,return,try,while,with,yield.

常量,一般用大写字母表示。但是Python中没法定义常量。

变量a=变量b,表示a和b都指在同一个空间,修改变量a的值,不会影响变量b的值。

字符编码:

最开始:ASCII  255  占用1字节

1980年,GB2312,表示7000多个中文字符

1995年,GBK1.0,表示20000+中文字符

2000年,GB18030,表示27000+中文字符

Unicode,2个字节

Utf-8,英文1个字节,中文三个字节

Python2,默认不支持中文,使用需添加:#-*-coding: utf-8 -*-

Python3默认支持中文。

注释:当行注释#;

多行注释:”””注释内容”””(Python中,单引号和双引号含义一样)

3.2输入输出

3.2.1输入

Python的输入,用的input()函数。默认输入的都是字符串。

name=input(“what is your name?”)

其中“”之间的为提示内容。

如果你想让输入的是整形数据,就需要用强制性类型转换。

  age=int(input("age: "))

再输入时候,我们可能会遇到输入密码的情况,那么如何隐藏输入内容呢?

1 import getpass
2 username=input("username:")
3 passwd = getpass.getpass("passwd")
4 print(username,passwd)

3.2.2输出

Python 输出,用的是print()函数。

#格式化输出:方法1:
name=input("what is your name?")
age=int(input("age:"))
job=input("job:")
salary = input("salary:")
info=‘‘‘
-------info of %s  ---------
Name:%s
Age :%d
Job :%s
Salary: %s
‘‘‘ %(name,name,age,job,salary)
print(info)
#格式化输入方法2:
name=input("what is your name?")
age=int(input("age:"))
job=input("job:")
salary = input("salary:")
info2=‘‘‘
-------info of {_name} ---------
Name:{_name}
Age :{_age}
Job :{_job}
Salary: {_salary}
‘‘‘ .format(_name=name,
            _age=age,
            _job=job,
            _salary=salary)
print(info2)
#格式化输出,方法3
name=input("what is your name?")
age=int(input("age:"))
job=input("job:")
salary = input("salary:")
info3=‘‘‘
-------info of {0} ---------
Name:{0}
Age :{1}
Job :{2}
Salary: {3}
‘‘‘ .format(name,age,job,salary)
print(info3)

3.3分支

Python中分支语句需要注意的事情:用缩进代替括号  强制 缩进,省掉格式符,清晰,所有代码都要顶格写。

使用时候:注意冒号“:”。

if …else 语法格式举例

if elif  else 语法格式

 1 #实现用户登录
 2 import re
 3 import getpass
 4 name=input("Please input username:")
 5 passwd=getpass.getpass("Please input passwd:")
 6 f=open(‘user.txt‘)
 7 for line in  f.readlines():
 8     #print(line,end=‘‘)
 9     if(name==re.split(":",line)[0]):
10         if(passwd==re.split(":",line)[1]):
11             if(1==int(re.split(":",line)[2])):
12                 print("Welcome,login success!")
13             else:
14                 print("The user is locked!")
15         else:
16             print("The password is wrong!")
17 else:
18      print("The username is not exist!")
19
20 f.close()

实现用户登录的例子

1 daxiong:daxiong123:1
2 zhangsan:zhangsan123:0
3 lisi:lisi123:0
4 wangwu:wangwu123:1

user.txt

3.4循环

Python中循环一般使用while和for。循环要注意break语句和continue语句。其中break,表示终止当前循环,continue表示终止本次循环。

注意:

1)while True:(死循环)

2)条件判断循环:

 1 age_of_oldboy = 56
 2
 3 count = 0
 4 while count <3:
 5     guess_age = int(input("guess age:") )
 6     if guess_age == age_of_oldboy :
 7         print("yes, you got it. ")
 8         break
 9     elif guess_age > age_of_oldboy:
10         print("think smaller...")
11     else:
12         print("think bigger!")
13     count +=1
14     if count == 3:
15         countine_confirm = input("do you want to keep guessing..?")
16         if countine_confirm != ‘n‘:
17             count =0
18 #代码 源自于老男孩视频

条件判断循环

  3)while…else语句

  表示while条件不成立,执行else语句。

  举例:

  

age_of_oldboy = 56

count = 0
while count <3:
    guess_age = int(input("guess age:") )
    if guess_age == age_of_oldboy :
        print("yes, you got it. ")
        break
    elif guess_age > age_of_oldboy:
        print("think smaller...")
    else:
        print("think bigger!")
    count +=1
else:
    print("you have tried too many times..fuck off")
#源自于老男孩视频

while...else

  

  4) for循环

首先介绍range()函数,表示生成一个序列。默认步长为1。

  (range(10)= 0 1 2 3 4 5 6 7 8 9)

  range(10)等价于range(0,10,1)

  range(0,10,3)=(0,3,6,9)

  

1 for i in range(10):
2     print(i)

for 循环举例

  5) for…else语句

  for   else  语句 (for循环的语句正常执行完,就会执行else语句)

 1 age_of_oldboy = 56
 2 for i in range(3):
 3     guess_age = int(input("guess age:") )
 4     if guess_age == age_of_oldboy :
 5         print("yes, you got it. ")
 6         break
 7     elif guess_age > age_of_oldboy:
 8         print("think smaller...")
 9     else:
10         print("think bigger!")
11 else:
12     print("you have tried too many times..fuck off")
13 #代码源自老男孩视频

for ...else

  6)break,continue的举例

  

1 for i in range(10):
2     print(‘----------‘,i)
3     for j in range(10):
4         print(j)
5         if j >5:
6             break
7             #continue
8         print(j)

4作业:实现三级循环:

  

 1 #实现三级菜单,练习break和continue
 2 province={‘sichuan‘:‘guangyuan‘,
 3           ‘henan‘:‘pingdingshan‘,
 4           ‘hebei‘:‘handan‘
 5           }
 6 city={‘guangyuan‘:‘jiange‘,
 7       ‘pingdingshan‘:‘lushan‘,
 8       ‘handan‘:‘cixian‘
 9     }
10 country={‘jiange‘:‘jianmenguan‘,
11          ‘lushan‘:‘shirenshan‘,
12          ‘cixian‘:‘taihangshan‘}
13 #q表示退出,b表示返回上一级,n表示进入下一级
14 q=‘q‘
15 b=‘b‘
16 n=‘n‘
17 #循环间的标志,为了结束循环使用
18 flag=0
19 while True:
20     if flag==1:
21         break
22     for city1 in province:
23             print(province[city1])
24     request=input("Quit?(q)Next?(n)")
25     if request==q:
26         break
27     else:
28         while True:
29             if flag == 1 :
30                 break
31             for country1 in city:
32                 print(city[country1])
33             request1=input("Quit?(q)Next?(n)Back(b)")
34             if request1==q:
35                 flag=1
36                 break
37             elif request1==b:
38                break
39             else:
40                 for key in country:
41                     print(country[key])
42                 request2=input("Quit?(q)Back(b)")
43                 if request2==b:
44                     continue
45                 else:
46                     flag=1
47                     break

三级循环

时间: 2024-12-14 08:46:53

Python学习第一周总结(上)的相关文章

Python学习第一周

一.我的第一个程序 print("Hello word!") 所以说python是一款非常简洁的语言,不像c,c++等等写一个简单的小程序还要调用一堆库.另外,python 3的版本支持中文编写. 二.变量 的使用 Python是一种动态的,强类型语言 name="fromzore" print(name) 不用定义变量的类型,系统根据你输入的自动给变量定义 name="fromzore" age=input("age");

Python学习第一周-账号登陆练习

2017年11月底开始python的学习.选择python 3.6. 账号登陆的粗糙实现. 1 import getpass 2 3 wall = True 4 usr = 'root' 5 paswd = 0000 6 block_list = open("test.txt", 'a') 7 print("Please sign in!") 8 9 for i in range(3, 0, -1): 10 print('{time} time(s) left'.f

Python学习第一周练习

1.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! 答案1 2.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 input_times = 0 while input_times < 3: name = input('请输入用户名:').strip() pwd = input('请输入密码:').strip() if name == 'seven' and pwd

Python 学习第一周

一.pycharm安装 https://www.cnblogs.com/dcpeng/p/9031405.html 二,代码联系 1.输入输出(明文): username = input("usrname:") password = input("password:") print(username,password) 2.输入输出(暗文): import getpass ##输入的时候没有显示输入字符 username = input("usrname:

201671010140. 2016-2017-2 《Java程序设计》java学习第一周

   java学习第一周        本周是新学期的开端,也是新的学习进程的开端,第一次接触java这门课程,首先书本的厚度就给我一种无形的压力,这注定了,这门课程不会是轻松的,同时一种全新的学习方式:反转课堂,全新的尝试,忐忑的同时,又对这段新的学习路途充满了期待.         第一章,其实就是对java这门课程学习的一个铺垫和前期热身,第二章则是帮助我们了解并试着运用有关工具及了解java开发环境,通过阅读书本,相关课件,相关工具使用文件,同时在上机操作的过程中逐渐吸收知识.     

Python学习第一弹——Python环境搭建

一.Python简介: Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用

【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

[吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和"AI是新电力"相类似的说法是什么? [ ?]AI为我们的家庭和办公室的个人设备供电,类似于电力. [ ?]通过"智能电网",AI提供新的电能. [?]AI在计算机上运行,??并由电力驱动,但是它正在让以前的计算机不能做的事情变为可能. [★]就像100年前产生电能一样,AI正在改变很多的行业. 请注意: 吴恩达在视频中表达了同样的观点. 哪些是深度学

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

python 学习第一天

python 学习了好久,发现还是个小白,python还是不会用,从今天起每天学写一点小程序,做个打不死的小强. 相关知识:列表,字典 #!/usr/bin/env python people = { 'yong':{'phone':'123', 'addr':'Shang hai' }, 'bu':{'phone':'456', 'addr':'Wu han' }, 'yan':{'phone':'789', 'addr':'He nan' } } lables = {'phone':'pho