Python学习-day1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习-day1相关的知识,希望对你有一定的参考价值。
一、Python的介绍
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。
2016年9月TIOBE社区编程语言排名
目前Python主要应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
Python的优缺点:
优点:
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的。
- 线程不能利用多CPU问题。
二、学习编写python程序
2.1 打印Hello World!
1 print ("Hello World!")
使用解释器执行hello.py
1 #!/usr/bin/env python 2 3 print ("Hello World!")
给脚本增加执行权限 查看并执行脚本
1 [[email protected]_69.112.148_hemingyuan ~]$ chmod +x hello.py 2 3 #查看脚本权限 4 [[email protected]_69.112.148_hemingyuan ~]$ ll hello.py 5 -rwxrwxr-x 1 hemingyuan hemingyuan 46 Sep 26 14:52 hello.py 6 7 #执行脚本 8 [[email protected]_69.112.148_hemingyuan ~]$ ./hello.py 9 Hello World!
在python交互器中执行
可以通过直接使用命令python,进入python交互器,执行操作。
1 [[email protected]_69.112.148_hemingyuan ~]$ python 2 Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 3 [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 4 Type "help", "copyright", "credits" or "license" for more information. 5 >>> 6 >>> print ("Hello World!") 7 Hello World!
打印多行文字
2.2 变量与数据类型
2.2.1 数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:
整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1
,100
,-8080
,0
,等等。
1 >>> type(123) 2 <class ‘int‘> 3 >>> type(-10) 4 <class ‘int‘> 5 >>> type(-10)
浮点型
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23
,3.14
,-9.01
,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9
,或者12.3e8
,0.000012可以写成1.2e-5
,等等。
1 >>> type(3.141592) 2 <class ‘float‘>
字符串
字符串是以单引号‘
或双引号"
括起来的任意文本,比如‘abc‘
,"xyz"
等等。请注意,‘‘
或""
本身只是一种表示方式,不是字符串的一部分,因此,字符串‘abc‘
只有a
,b
,c
这3个字符。如果‘
本身也是一个字符,那就可以用""
括起来,比如"I‘m OK"
包含的字符是I
,‘
,m
,空格,O
,K
这6个字符。
1 >>> type(‘abc‘) 2 <class ‘str‘> 3 >>> type("456") 4 <class ‘str‘> 5 >>> type(‘My name is He Mingyuan‘) 6 <class ‘str‘> 7 >>> type("I‘m a student") 8 <class ‘str‘>
布尔型
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来:
1 >>> 3>2 2 True 3 >>> 3>10 4 False 5 >>> 1==10 6 False
2.2.2 变量与常量
变量
在python中,声明变量时,变量名必须是大小写英文、数字和_
的组合,且不能用数字开头,比如:
1 a=123 2 b="456" 3 name="hemingyuan" 4 t_003="T_003" 5 answer=True
可以使用type()查看变量的类型
1 >>> type(a) 2 <class ‘int‘> 3 4 >>> type(b) 5 <class ‘str‘> 6 7 >>> type(name) 8 <class ‘str‘> 9 10 >>> type(answer) 11 <class ‘bool‘>
常量
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:
1 PI = 3.14159265359
但事实上PI
仍然是一个变量,Python根本没有任何机制保证PI
不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI
的值,也没人能拦住你。
2.3 接收用户输入
在python中可以使用 print() 输出指定信息,如果想要接收用户的输入需要用到 input(),Python提供了一个input()
,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
1 name=input()
编写小程序,接收用户的姓名,年龄,职业,爱好等信息,并打印出来
1 name=input("Name:") 2 age=int(input("Age:")) 3 job=input("Job:") 4 hobby=input("Hobby:") 5 6 info=‘‘‘ 7 ---------index of %s ---------- 8 Name: %8s 9 Age: %8d 10 Job: %8s 11 Hobby: %8s 12 ‘‘‘ % (name,name,age,job,hobby) 13 14 print(info)
上面代码的执行结果如下
1 Name:hmy 2 Age:24 3 Job:Engineer 4 Hobby:Game 5 6 ---------index of hmy ---------- 7 Name: hmy 8 Age: 24 9 Job: Engineer 10 Hobby: Game
2.4 条件表达式if…else…
场景一
使用if…else…编写模拟登陆小程序,验证用户名和密码
1 username=input("username:") 2 password=input("password:") 3 4 if username != "hmy" or password != "123.com": 5 print("Wrong username or password") 6 else: 7 print("welcome %s" %username)
程序执行结果
1 #正确输入username和password 2 username:hmy 3 password:123.com 4 Welcome hmy! 5 6 #输入错误的username和password 7 username:asd 8 password:123 9 Wrong username or password
场景二
编写猜年龄小程序,提示用户是否猜对,猜对即退出
1 age=23 2 while True: 3 guess=int(input("guess hmy‘s age:")) 4 if guess<age: 5 print("It‘s too small") 6 elif guess==age: 7 print("Right!") 8 break 9 else: 10 print("It‘s too big")
执行结果
1 guess hmy‘s age:10 2 It‘s too small 3 guess hmy‘s age:20 4 It‘s too small 5 guess hmy‘s age:100 6 It‘s too big 7 guess hmy‘s age:24 8 It‘s too big 9 guess hmy‘s age:23 10 Right!
作业二:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
1 #!/usr/bin/env python 2 3 login_list = [] 4 dict={} 5 6 #读入data.list 写入字典 作为账号密码验证的工具 7 with open(‘data.list‘, ‘r‘) as data: 8 for data_read in data: 9 str = data_read.strip().split(‘:‘) 10 dict[str[0]]=str[1] 11 12 while True: 13 # 读取用户输入用户名和密码 14 name = input(‘username:‘) 15 password = input(‘password:‘) 16 17 #如果输入的用户名不存在与data.list文件中 跳出本次循环 18 if name not in dict: 19 print(‘Login failed.Your account does not exist!\n‘) 20 continue 21 else: 22 #读取锁定列表文件 判断账号是否被锁定,如果账号锁定则退出程序 23 with open(‘lock.list‘,‘r‘) as r: 24 for read in r: 25 if name in read: 26 print(‘Login failed.Your account has been locked!‘) 27 exit() 28 29 #判断账号与密码是否匹配 30 if password != dict[name]: 31 print("Login failed.Wrong username or password!") 32 login_list.append(name) 33 34 #如果密码错误3次 写入lock.list锁定账号 35 if login_list.count(name) == 3: 36 with open(‘lock.list‘,‘a‘) as a: 37 a.write(name+‘\n‘) 38 print(‘Your account will be locked.\n‘) 39 #验证通过 显示欢迎信息 40 else: 41 print("Login Successful! Welcome %s!" % name) 42 exit()