day1--认识python
【python全栈开发】初识python
本人最开始接触python是在2011年,写过hello word!学过python简明教程,在此之前常用perl写程序,随着perl的没落,perl的面向对象确实太差。让大多数人不能很好的理解,
加之,perl的自由,随意的个性,代码的阅读实在是不太友好。可以把简单的程序用复杂的方法写。让一般人无法看懂。
有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。
通过博客记录python的学习之路。记录这平凡的一生。
成功在于努力,成功在于积累,成功在于坚持。
python诞生
1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 就这么一个不经意的打发时间,创造出了一个优秀的语言,python从此诞生。
python地位
在编程语言排行榜中,python稳居第4位(2远超php\C#。有赶超c++入围前三甲之势。
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
为什么是Python而不是其他语言?C 和 Python、Java、C#等
C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝对是慢了很多。
Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
对于速度:Python在速度上可能稍显逊色
所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。
Python的种类
- Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 - Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 - IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) - PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器码。 - RubyPython、Brython ...
Python安装
Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
您需要下载适用于您使用平台的二进制代码,然后安装Python。
如果您平台的二进制代码是不可用的,你需要使用C编译器手动编译源代码。
编译的源代码,功能上有更多的选择性, 为python安装提供了更多的灵活性。
以下为不同平台上安装Python的方法:
Unix & Linux 平台安装 Python:
以下为在Unix & Linux 平台上安装 Python 的简单步骤:
- 打开WEB浏览器访问http://www.python.org/download/
- 选择适用于Unix/Linux的源码压缩包。
- 下载及解压压缩包。
- 如果你需要自定义一些选项修改Modules/Setup
- 执行 ./configure 脚本
- make
- make install
执行以上操作后,Python会安装在 /usr/local/bin 目录中,Python库安装在/usr/local/lib/pythonXX,XX为你使用的Python的版本号。
Window 平台安装 Python:
以下为在 Window 平台上安装 Python 的简单步骤:
- 打开WEB浏览器访问http://www.python.org/download/
- 在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装的版本号。
- 要使用安装程序 python-XYZ.msi, Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持MSI。Windows XP和更高版本已经有MSI,很多老机器也可以安装MSI。
- 下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。
代码编写
1、第一句,简单输出
#!/usr/bin/env python print("Hello World!")
2、解释器
#!/usr/bin/env python ##指定解释器路径,与shell, perl 脚本语言头部类似
3、内容编码
# -*- coding:utf-8 -*-
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),在2.x版本不能直接支持中文,需要添加指定字符编码,在3.x版本可以直接支持,可以不用写。但为规范编程,沿用指定内容编码。
4、注释
单行注释:行首#号。
多行注释:行前与行尾以3引号(单双均可)
如:
#!/usr/bin/env python # -*- coding:utf-8 -*- print("Hello Word") #这是单个注释,不信你试试 ''' 这是多个注释! 不信你试试 ''' print("Hello Word")
5、模块引用
Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:
Python内部提供的模块
业内开源的各种模块
程序员自己开发的模块
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 import os 6 print(os._Environ)
6、定义变量
a, 变量的声明
#!/usr/bin/env python # -*- coding:utf-8 -*- name="mobing"
name 是变量名,mobing 是变量的值
注意:在python3种,变量名可以用,中文表示。
1 姓名="alex li mo zhi bing" 2 print (姓名)
变量:内存中某个地址保存的内容。
作变量定义的命名规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- python保留关键字不能声明为变量名
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "jim" name2 = name1
两个变量,同时指向一个内存地址。
7、交互输入
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # 将用户输入的内容赋值给 变量name 5 name = input("请输入用户名:") 6 7 # 打印 8 print name
案例1: 模拟用户登录。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 user = "jason" 5 password = "jason" 6 for t in range(3): 7 in_user = input("用户名:") 8 in_passwd = input("密码:") 9 if in_user == user and password == in_passwd: 10 print("登陆成功") 11 break 12 else: 13 print("用户名或密码错误,请重试")
案例1,改进: 密码用 不可见,隐藏。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 import getpass 5 user = "jason" 6 password = "jason" 7 for t in range(3): 8 in_user = input("用户名:") 9 in_passwd = getpass.getpass("密码:") 10 if in_user == user and password == in_passwd: 11 print("登陆成功") 12 break 13 else: 14 print("用户名或密码错误,请重试")#import getpass 导入密码交互模块
8、流程控制与代码块
代码块:python是一个强制缩进的编程语言。不同缩进的代码格式代码不同层级的代码块。
if 判断语句示例:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 age = 20 5 if age > 20: 6 print("age > 20") 7 elif age < 20: 8 print("age < 20") 9 else: 10 print("age = 20")
9、while/for循环与控制
(1)、while循环
while 条件:
循环代码块
(2)for循环
for 条件:
循环代码块
(3)、break 结束当前循环体
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 for i in range(1,5): 5 if i = 2: 6 break 7 print(i)
(4)、continue 结束当次循环体
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 for i in range(1,5): 5 if i = 2: 6 continue 7 print(i)
(5) for
1 for i in range(0,10,3): 2 print ("loop ",i)
猜数字游戏: 只允许猜3次。
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 age_of_oldboy = 65 6 7 count = 0 8 while count < 3: 9 guess_age = int(input("guess age:")) 10 if guess_age == age_of_oldboy: 11 print ("yes you got it. ") 12 break 13 elif guess_age > age_of_oldboy: 14 print ("think smaller...") 15 else: 16 print ("think bigger!") 17 18 count = count + 1 19 20 if count == 3: 21 print ("you have tried too many times..fuck off")
用for 重写:
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 age_of_oldboy = 56 6 7 for i in range(3): 8 guess_age = int(input("guess age:")) 9 if guess_age == age_of_oldboy: 10 print ("yes you got it. ") 11 break 12 elif guess_age > age_of_oldboy: 13 print ("think smaller...") 14 else: 15 print ("think bigger!") 16 else: 17 print ("you have tried too many times..fuck off")
用while 重写,猜错3次进行提示,然后询问,是否再猜。
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 age_of_oldboy = 56 6 7 count = 0 8 while count < 3: 9 guess_age = int(input("guess age:")) 10 if guess_age == age_of_oldboy: 11 print ("yes you got it. ") 12 break 13 elif guess_age > age_of_oldboy: 14 print ("think smaller...") 15 else: 16 print ("think bigger!") 17 18 count = count + 1 19 if count == 3: 20 continue_confirm = input("Do you want to keep guessing..?") 21 if continue_confirm != 'n': 22 count = 0
格式化字符串的三种方式:
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 name = input("name:") 6 age = int(input("age:")) 7 job = input("job:") 8 salary = input("salary:") 9 10 ##1,格式化字符串,%s 11 info = ''' 12 --------------index of %s 13 Name:%s 14 Age:%d 15 Job:%s 16 Salary:%s 17 ''' % (name,name,age,job,salary) 18 19 print(info) 20 21 22 ##2,格式化字符串,自定义变量 23 info2 = ''' 24 --------------index of {_name} 25 Name:{_name} 26 Age:{_age} 27 Job:{_job} 28 Salary:{_salary} 29 '''.format(_name=name, 30 _age=age, 31 _job=job, 32 _salary=salary) 33 34 print(info2) 35 36 ##3、0,1,2 表示,像C#格式一样。 37 38 info3 = ''' 39 --------------index of {0} 40 Name:{0} 41 Age:{1} 42 Job:{2} 43 Salary:{3} 44 '''.format(name,age,job,salary) 45 46 print(info3)
作定2:
'''
作业二:编写一个登录窗口
1,输入用用户名密码
2、认证成功后显示欢迎信息
3、输错三次后锁定
'''
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 ''' 6 作业二:编写一个登录窗口 7 1,输入用用户名密码 8 2、认证成功后显示欢迎信息 9 3、输错三次后锁定 10 ''' 11 12 origUser = 'admin' 13 origPwd = '8888' 14 15 for i in range(3): 16 userName = input("请输入用户名:") 17 passWord = input("请输入密码:") 18 if userName == origUser and passWord == origPwd: 19 print("输入正确,欢迎登录") 20 break 21 else: 22 print("用户名或密码错误,请重新输入:") 23 print("已输入错误次数: %d",i+1) 24 else: 25 print("您已输入3次,已锁定,请联系管理员")
用业3:实现省市县3级菜单:
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 # Author:Zeb 4 5 chinamap = { 6 "山东省":{ 7 "济南":["市中区","历下区","天桥区","槐荫区","历城区","长清区","章丘市","平阴县","济阳县","商河县","其他"], 8 "青岛":["市南区","市北区","城阳区","四方区","李沧区","黄岛区","崂山区","胶南市","胶州市","平度市","莱西市","即墨市","其他"] 9 }, 10 "北京市":{ 11 "北京":["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","门头沟区","密云县","延庆县","其他"], 12 }, 13 "广东省":{ 14 "广州":["越秀区","荔湾区","海珠区","天河区","白云区","黄埔区","番禺区","花都区","南沙区","萝岗区","增城市","从化市","其他"], 15 "深圳":["福田区","罗湖区","南山区","宝安区","龙岗区","盐田区","其他"] 16 } 17 } 18 19 def show(first='',second=''): 20 if first == '' and second == '': 21 print("-" * 40) 22 print("中国有以下省份城市:") 23 for index,key in enumerate(chinamap.keys(),0): 24 print(index,key) 25 elif first != '' and second == '': 26 print("-" * 40) 27 print("中国 %s 有以下城市 " % first) 28 for index,key in enumerate(chinamap[first].keys(),0): 29 print(index,key) 30 elif first != '' and second != '': 31 print("-" * 40) 32 print("中国 %s 省 %s市有以下城市 " % (first, second)) 33 for index,key in enumerate(chinamap[first][second]): 34 print(index,key) 35 print("不能往下查询了") 36 37 #outputInfo() 38 39 while True: 40 show() 41 proviceList = list(chinamap.keys()) 42 #print(proviceList) 43 countf = 1 44 while True: 45 if countf > 1: 46 show() 47 inputStr = input("请选择省一级的序号,检索,输入Q退出,输入b返回:") 48 if inputStr == 'q': 49 quit() 50 elif inputStr == 'b': 51 print("您输入的是b,将返回上一层") 52 break 53 else: 54 provice = proviceList[int(inputStr)] 55 show(provice) 56 countf += 1 57 count = 1 58 while True: 59 if count > 1: 60 show(provice) 61 MarkList = list(chinamap[provice].keys()) 62 markStr = input("请选择市一级序号,检索,输入Q退出,输入b返回:") 63 if markStr == 'q': 64 quit() 65 elif markStr == 'b': 66 print("您输入的是b,将返回上一层") 67 break 68 else: 69 mark = MarkList[int(markStr)] 70 show(provice,mark) 71 72 count += 1

浙公网安备 33010602011771号