Day1 - Python基础
本节内容
1、 Python简介
1.1 python的由来
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
Python社区的人赋予他“仁慈大君” 的称号,这一称号直接来自英国肥皂剧《Monty Python飞行马戏团》。Guido当初之所以选中Python作为语言的名字,是因为他太喜欢这部肥皂剧了。
1.2 python的现状
1.3 python 的特点
引用一段《python基础教程》开场白:
编写C程序就像一群人拿着剃刀在刚打过蜡的舞场内跳快舞
------Walidi Ravens
C++:难学更难用,设计如此
------匿名
在很多方面,Java就是C++
------Michael Feldman
现在请看一种前所未有的表演......
------Monty Python的表演《飞行的马戏团》
1.4 Python主要应用领域
- WEB/客户端 开发: 豆瓣、Youtube 、Quora 、BitTorrent、dropbox 、Gmail、Google Maps
- 云计算:OpenStack
- 爬虫:搜索引擎、网站比价、买火车票
- 游戏: EVE online 、Civilization IV
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
1.5 Python在一些公司的应用
- 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
- CIA: 美国中情局网站就是用Python开发的
- NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
- YouTube:世界上最大的视频网站YouTube就是用Python开发的
- Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
- Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
- Facebook:大量的基础库均通过Python实现的
- Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
- 豆瓣: 公司几乎所有的业务均是通过Python开发的
- 知乎: 国内最大的问答社区,通过Python开发(国外Quora)
- 春雨医生:国内知名的在线医疗网站是用Python开发的
- 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
1.6 如何学好python
2、Python开发必备环境
2.1 如何获取python
https:
/
/
www.python.org
/
downloads
/
2.2 如何安装
windows:
linux:
查看默认Python版本
python -V1、安装gcc,用于编译Python源码yum install gcc
2、下载源码包,https://www.python.org/ftp/python/
3、解压并进入源码文件
4、编译安装./configuremake allmake install
5、查看版本/usr/local/bin/python2.7 -V
6、修改默认Python版本mv /usr/bin/python /usr/bin/python2.6ln -s /usr/local/bin/python2.7 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本vi /usr/bin/yum将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6
3、第一个python程序 Hello World!
在什么地方写一个python程序?
3.1 使用python交互程序
3.2 使用文件
windows:
推荐Notepad++ ,不要用Word和Windows自带的记事本。Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会导致程序运行出现莫名其妙的错误!
linux:
# vim hello.py # python hello.py Hello World!
上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器,如下:
#!/usr/bin/env python
#The first code
print "hello,world"
ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py
解释器:
Python在执行时,解释器会将.py文件中的源代码编译成Python的byte code(字节码),然后再执行这些编译好的byte code。
对比下其它语言的hello world
3.3 使用IDE---pycharm(windows)
补充知识:编译型语言和解释型语言
编译型语言
需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。
优点:编译器一般会有预编译的过程对代码进行优化。 因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高 。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
代表语言:C、C++、 Pascal、Object-C以及最近很火的苹果新语言swift
解释型语言
解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby
混合型语言
既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。我个人认为抛开一切的偏见C#是这个星球上最好的编程语言。可惜微软的政策限制了C#的推广。
Java先生成字节码再在Java虚拟机中解释执行。
严格来说混合型语言也属于解释型语言。
4、注释
单行注视:# 被注释内容
多行注释:""" 被注释内容 """
# 井号可以注释单行代码
"""
3个双引号或者单引号
可以注释多行内容
"""
5、变量和数据类型
变量可以用来存储数据和被程序调用,它由名字和值两部分组成,可以把它想象成一个容器,容器的名字和值会被保存在内存中。
#_*_coding:utf-8_*_name = "Alex Li"
age = 18
sales = 4432.67 / 1.20
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的赋值
name = "Alex Li"name2 = name
print(name,name2)name = "Jack"print("What is the value of name2 now?")
6、输入/输出
输出:
在print()
括号中加上字符串,就可以向屏幕上输出指定的文字。
print('hello, python')
print()
函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:
name = “france”
print(“my name is :”,name)
print()
会依次打印每个字符串,遇到逗号“,”会输出一个空格。
输入:
Python提供了一个input()
,可以让用户输入字符串
7、中文的问题
#!/usr/bin/env pythonprint "你好,世界"
错误原因:python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII码),但ASCII不支持中文。
字符编码:
字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。
ASCII
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。ASCII规范标准在1967发表,最后一次更新则是在1986年。至今为止共定义了128个字符。
GB2312/GBK/GB18030
GB 2312 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局在1981年发布实施。GB 2312标准共收录6763个汉字。
GBK即汉字内码扩展规范。共收入21886个汉字和图形符号。
GB 18030与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。
各国语言编码
http://blog.csdn.net/miqi770/article/details/43935273
Unicode
Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。
Unicode伴随着通用字符集的标准而发展,同时也以书本的形式[1]对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。目前最新的版本为2016年6月21日公布的9.0.0[2],已经收入超过十万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的数据除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。
UTF-8
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。
UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节)
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-print "你好,世界"
8、流程控制之if ... else
场景一、用户登陆验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 提示输入用户名和密码
# 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!
#!/usr/bin/env python
# -*- coding: encoding -*-
import getpass
name = raw_input ( '请输入用户名:' )
pwd = getpass.getpass( '请输入密码:' )
if name = = "alex" and pwd = = "cmd" :
print ( "欢迎,alex!" )
else :
print ( "用户名和密码错误" )
|
场景二、猜年龄游戏
在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了
12、表达式for loop
最简单的循环10次
1
2
3
4
5
6
|
#_*_coding:utf-8_*_
__author__ = 'Alex Li'
for i in range ( 10 ):
print ( "loop:" , i )
|
输出:
1
2
3
4
5
6
7
8
9
10
|
loop: 0
loop: 1
loop: 2
loop: 3
loop: 4
loop: 5
loop: 6
loop: 7
loop: 8
loop: 9
|
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
1
2
3
4
|
for i in range ( 10 ):
if i< 5 :
continue #不往下走了,直接进入下一次loop
print ( "loop:" , i )
|
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
1
2
3
4
|
for i in range ( 10 ):
if i> 5 :
break #不往下走了,直接跳出整个loop
print ( "loop:" , i )
|
13、while loop
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
1
2
3
4
5
|
count = 0
while True :
print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count)
count + = 1
|
其实除了时间,没有什么是永恒的,死loop还是少写为好
上面的代码循环100次就退出吧
回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
作业一:博客
作业二:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
- 三级菜单
- 可依次选择进入各子菜单
- 所需新知识点:列表、字典
转载于:https://www.cnblogs.com/francis818/p/5692358.html
Day1 - Python基础相关推荐
- Day1 - Python基础1
Day1 - Python基础1 目录 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 python的创始人为吉多·范罗苏姆(Gui ...
- Day1 python基础
一.python介绍 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, ...
- Python全栈开发,Day1 - Python基础1
本章内容 Python是什么? Python的发展史 Python2与3的区别 Python的语言类型 Python的优缺点 一.Python是什么? Python的创始人是吉多·范罗苏姆(Guido ...
- Python on the Way, Day1 - Python基础1
一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...
- Python之路,Day1 - Python基础
本节内容 Python介绍 发展史 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决 ...
- 老男孩-Python之路,Day1 - Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- ISP成像算法基础Day1—Python基础
主要内容 • 流程图伪代码 • 基本编程元素 • 脚本函数和包 • Numpy 伪代码到程序 第一个脚本 •1 建⽴项⽬和脚本 •2 运⾏ •3 Debug,查看断点 •4 步进,查看系统函数的代码 ...
- Studing Day1 - python基础1
11.23日学习 python是一个解释型的语言,也是一种强类型的动态类型的语言 强类型弱类型等详细解释: http://blog.csdn.net/gs_008/article/details/51 ...
- Day1 - Python基础1作业【编写登陆接口】
1 # 作业:编写登陆接口 2 # 输入用户名密码 3 # 认证成功后显示欢迎信息 4 # 输错三次后锁定 5 import getpass 6 7 user = {'hepd':123456, 'h ...
最新文章
- Linux C++与Python混合编程(g++生成链接库与python调用)
- 何恺明大神新作:一种用于目标检测的主流ViT架构,效果SOTA
- “全能”选手—Django 1.10文档中文版Part2
- 移动端 Web 开发踩坑之旅
- 中国HBase技术社区第五届MeetUp ——HBase技术解析及应用实践(深圳站)
- mybatis plus 导出sql_软件更新丨mybatis-plus 3.0.7 发布,辞旧迎新
- HDU 1253.胜利大逃亡
- Java API下载和查阅方法
- android:scaletype=quot;fitxyquot;,Android ImageView的ScaleType属性
- 什么是Symbian
- poj-3034 Whac-a-Mole
- 蚂蚁链ACCA认证试题
- IEC61850——开山篇
- revit打开服务器文件格式,Revit文件导出格式大全(下)
- html怎么设置字体的透明度,CSS字体透明度怎么设置?
- 计算机专业专硕考研数学考一还是二,计算机专业考研数学考一还是二
- java solr group by_solr高级查询——group和facet
- Java Servlet 详解:(三)在 IDES 中开发 Servlet-多图警告
- 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)
- 领域驱动设计,为何又死灰复燃了?