Python-Day1

一、Python介绍

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版发行于1991年。

目前Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

 设计定位:

  1. Python的设计哲学是“优雅”、“明确”、“简单”。
  2. Python开发人员尽量避开不成熟或者不重要的优化。
  3. Python是完全面向对象的语言。
  4. Python本身被设计为可扩充的。

控制语句:

  if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
  for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
  while语句,当条件为真时,循环运行语句块。
  try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
  class语句。用于定义类型
  def语句。用于定义函数和类型的方法。
  pass语句。表示此行为空,不运行任何操作。
  assert语句。用于程序调试阶段时测试运行条件是否满足。
  with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
  yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
  raise语句。制造一个错误。
  import语句。导入一个模块或包。
  from import语句。从包导入模块或从模块导入某个对象。
  import as语句。将导入的对象赋值给一个变量。
  in语句。判断一个对象是否在一个字符串/列表/元组里。

Python的优缺点:

先看优点

  1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
  2. 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
  3. 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
  4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
  5. 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
  6. 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

再看缺点:

  1. 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
  2. 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
  3. 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

二、代码练习

var

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #Author:YST
4 
5 name = "你好,世界"
6 print(name)
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 4 
 5 Name = input("name:")
 6 Age = int(input("age:")) #integer
 7 Job = input("job:")
 8 Salary =int(input("salary:"))
 9 
10 """info = '''
11 ------- info of {name} ----- 
12 Name:{name}
13 Age:{age}
14 Job:{job}
15 Salary:{salary}
16 '''.format(name=Name,
17            age=Age,
18            job=Job,
19            salary=Salary)
20 print(info)"""
21 """
22 info2 = '''
23 -------- info of %s--------
24 name:%s
25 age:%d
26 job:%s
27 salary:%d
28 '''%(Name,Name,Age,Job,Salary)
29 print(info2)"""
30 info3 = '''
31 -----info of {0}-----
32 name:{0}
33 age:{1}
34 job:{2}
35 salary:{3}
36 '''.format(Name,Age,Job,Salary)
37 print(info3)
interaction 3种方式
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 4 import getpass
 5 
 6 _username = 'YST'
 7 _password = 'asd123'
 8 username = input("username:")
 9 #password = getpass.getpass("password:") 暗码
10 password = input("password:")
11 
12 if _username == username and _password == password:
13     print("Welcom user {name} login...".format(name = username))
14 else:
15     print("Invalind username or password!")
password
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 4 '''count = 0
 5 while True:
 6     print("count:",count)
 7     count = count + 1 #count + =1
 8     if count == 1000:
 9         break
10 '''
11 '''for i in range(10):
12     print("loop ",i)
13     '''
14 
15 '''
16 #打印0 2 4 6 8
17 for i in range(0,10,2):
18     print("loop ",i)
19 '''
20 
21 #打印0 3 6 9
22 for i in range(0,10,3):
23     print("loop",i)
while和for
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 4 
 5 age_of_oldboy = 56
 6 
 7 
 8 for i in range(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 
19 else:
20     print("you have tried too many times...Fuck off")
guess小游戏for
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 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         countine_confirm = input("do you want to keep guessing..?(Y/N)")
21         if countine_confirm != 'N':
22             count = 0
23 else:
24     print("you have tried too many times...Fuck off")
guess游戏循环玩while

 

错误代码  guess游戏循环 for 无法继续进行 3次后 回车无法进行下一个循环

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:YST
 4 age_of_YST = 23
 5 
 6 for i in range(0,3):
 7     guess_age = int(input("guess age: "))
 8     if guess_age == age_of_YST:
 9         print("Yes,you got it!")
10         break
11     elif guess_age > age_of_YST:
12         print("think samller...")
13     else:
14         print("think bigger...")
15         if i == 2:
16             i = 0
17             countine_confirm = input("Do you want to keep guessing?(y/n)")
18             if countine_confirm != 'n':
19                 continue
20                 i=1
21 else:
22     print("you have tried too many times...Fuck off!")
gudess游戏for-错误

 

posted on 2017-12-31 13:41  无休的后端人  阅读(148)  评论(0编辑  收藏  举报