python之路-Day1
Python 是一门什么样的语言?
python是一门动态解释性的强类型定义语言
动态语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
静态语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
解析:编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的。对解释执行而言,程序运行时的控制权在解释器而不在用户程序;解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。
编译:解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。对编译执行而言,运行时的控制权在用户程序。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。
强类型语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
Python优缺点
优点:
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
1.速度慢。
2.代码不能加密。
3.线程不能利用多CPU问题。
Python安装
windows:安装软件,将python的路径加入到windows的环境变量中。计算机属性-高级系统设置-高级-环境变量-系统变量-path(将python的路径加入到path中,注意分号)。
linux:将linux中原有的2.6版本升级为2.7版本。
为了兼容python3.*,现在使用的是python 2.7.10,但是CentOS 6.4中默认使用的python版本是2.6.6,故需要升级版本。
自己做一个yum源,createrepo Packages即可
安装步骤如下:
1,先安装GCC,用如下命令yum install gcc gcc-c++ openssl*
2,下载python-2.7.10.tar.gz文件,修改文件权限chmode +x python-7.5.tar.gz
传送门 https://www.python.org
3,解压tar文件,tar -xzvf python-2.7.5.tar.gz
4,cd python-2.7.5
./configure --prefix=/usr/local/python27 ### 注意:安装在新目录,防止覆盖系统默认安装的python
make && make install
5、建立软连接,使系统默认的python指向python27
mv /usr/bin/python /usr/bin/python2.6.6.old
ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python
已经安装完成python的安装或升级的全部操作了,我们再来看一下现在的python的版本:
# python -V
Python 2.7.5
虽然现在python已经安装完成,但是使用yum命令会有问题——yum不能正常工作:
# yum list
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python
这是因为yum默认使用的python版本是2.6.6,到哪是现在的python版本是2.7.5,故会出现上述问题,只需要该一下yum的默认python配置版本就行了:
#vi /usr/bin/yum
将文件头部的#!/usr/bin/python改为
#!/usr/bin/python2.6
解释器
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py
,那么就需要在 hello.py 文件的头部指定解释器,如下:
#!/usr/bin/env python
print("hello world")
如此一来,执行: ./hello.py
即可。
ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py
内容编码
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
#!/usr/bin/env python
#_*_ conding:utf-8 _*_
print("你好 世界")
变量
一个在内存存储数据的容器。它保存程序执行的中间结果或者状态,以供后面的代码调用。
变量定义规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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']
定义变量:
!#/usr/bin/env python
name1 = "liwenqiang"
name2 = "alex"
!#/usr/bin/env python
name1 = "liwenqiang"
name3 = name1
这样定义变量,分别在内存中创建liwenqiang和alex,如果变成以下定义情况
!#/usr/bin/env python
name1 = "liwenqiang"
name2 = name1
name1 = "alex"
print(name1,name2)
如果是这样,就会输出liwenqiang和alex,不再是liwenqiang和liwenqiang,因为一开始name1和name2都指向liwenqiang,之后name重新指向了alex,但是name2的指向是没有变的。
输入
input(python3)、raw_input(python2)
!#/usr/bin/env python
name = input("name:")
age = input("age:")
job = input("job:")
hobby = input("hobby:")
info = """
---------------info %s-----------
name = %s
age = %d
job = %s
hobby = %s
--------------end----------------
""" %(name,name,age,job,hobby) # %s需要一一对应 占位符:%s表示字符串,%d代表数字
print(info)
流程控制
需求一、用户登陆验证
提示输入用户名和密码
验证用户名和密码
如果错误,则输出用户名或密码错误
如果成功,则输出 欢迎,XXX!
!#/usr/bin/env python
# name = input("name:")
# password = input("password:")
# if name == "liwenqiang" and password == "12345": #不管输入什么都必须加引号
# print("welcome")
# else:
# print("wrong name or password")
需求二、多个条件判断
if
elif
elif
else
如果成绩大于90,得A,如果成绩大于80,得B,如果成绩大于70,得C,如果成绩大于60得C-,成绩小于60,得D。
!#/usr/bin/env python
score = int(input("成绩:")) #此处用int将输入的成绩变为整形,因为在输入成绩是就会变为字符串(例如:“91”),这样就无法进行比较。
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 70:
print("C")
elif score > 60:
print("C-")
else:
print("D")
用户登录
count = 0
while count < 3:
user = input("username:")
passwd = input("passwd:")
users = []
with open('username.txt','r') as f: --------------username.txt这个文件需要事先创建好。
for line in f:
line = line.strip() #去掉换行符
users.append(line) #将元素line添加到列表中(此处的line是指从文件中读取的内容)
if user in users:
print("user locked!")
elif user == 'liwenqiang' and passwd == '111111':
print('welcome')
break
else:
print('wrong passwd or username, try again!',"you only have",2-count,"chance") #打印多个变量或者字符串,用逗号隔开
count += 1
if count == 3:
with open('username.txt','a') as f: #a和w都是添加(写文件),a相当于追加,w相当于覆盖。
f.write(user+'\n') #将user所指的用户去掉空格和换行符添加到文件中,+是连接符。
print('enter wrong usename too many times,username have locked!')
python之路-Day1的更多相关文章
- 小白的Python之路 day1
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...
- 小白的Python之路 day1 变量
Python之路,Day1 - Python基础1 变量 变量用于存储在计算机程序中引用和操作的信息.它们还提供了一种用描述性名称标记数据的方法,这样我们的程序就能更清晰地被读者和我们自己理解.将变量 ...
- Python之路,Day1 - Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python之路 day1 用户登录多次被锁定
编写登陆接口: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #Author:ersa import getpass,os,sys #读取账户信息到内存中 try: accounts_fil ...
- 小白的Python之路 day1 用户输入
1 2 3 4 5 6 7 8 #!/usr/bin/env python #_*_coding:utf-8_*_ username =input("username:") p ...
- 小白的Python之路 day1 模块初识
模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. ...
- 小白的Python之路 day1 Python3的bytes/str之别
原文:The bytes/str dichotomy in Python 3 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二 ...
- 小白的Python之路 day1 数据类型,数据运算
一.数据类型初识 1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j ...
- 小白的Python之路 day1 pyc
pyc是个什么? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. ...
随机推荐
- 最短路径问题——dijkstra算法
仅谈谈个人对dijkstra的理解,dijkstra算法是基于邻接表实现的,用于处理单源最短路径问题(顺便再提一下,处理单源最短路径问题的还有bellman算法).开辟一个结构体,其变量为边的终点和边 ...
- iwork 09 可以用的序列号
E4RJ-YKHP-9ER4-WK9Y-H4UM-5S2G9MU-9U9J-KN4M-4PAE-DYNA-5S2EGMU-3PKP-NN9G-3JW4-3RAD-5S2
- css固定姓名显示长度,排列更整齐
white-space: nowrap 不换形 overflow: hidden 隐藏长度超出部分 text-overflow:ellipsis 文字长度超出用省略号代替 <p style=& ...
- 用minidwep-gtk研究wifi
全图,不解释
- jQuery的ajax()、post()方法提交数组,参数[] 问题
当用$.ajax()向后台提交参数时,如果参数中数组的话一般在后台会用List,或Integer[] 等数组对象进行接收. 比如: $.ajax({ type: "POST", ...
- CentOS6.8 MySQL 5.6实现主从复制
主库操作 1.将mysqldump命令添加到/usr/bin中 ln -s /application/mysql/bin/mysqldump /usr/bin/ 2.开启master上的log-bin ...
- empty()和isset()的区别
如果变量为0,则empty()会返回TRUE,isset()会返回TRUE:如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE:如果变量未定义,则empty()会返回TR ...
- wdcp的安装扩展模块
其实就是官方包里面的所有附加模块全部支持啦.~~是在官方的基础上修改的优化了每次都解压缩php源码包,按需解压缩使用方法如下wget http://git.oschina.net/loblog/mem ...
- 21副GIF动图让你了解各种数学概念
baidu 21副GIF动图让你了解各种数学概念
- Hadoop学习12-配置集群环境
由于之前虚拟机都是用的桥接方式,有时候没有网络可用,想学习的时候,就狠不方便. 于是研究了一下,希望搭建一个多台虚机组成一个局域网的集群,即host-only方式 1.安装VM,网络选择“host-o ...