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 (姓名)

 

 

变量:内存中某个地址保存的内容。

作变量定义的命名规则:
  1. 变量名只能是 字母、数字或下划线的任意组合
  2. 变量名的第一个字符不能是数字
  3. 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

 
















posted @ 2017-06-22 17:35  BinHome  阅读(73)  评论(0)    收藏  举报