Python 是一门什么样的语言?

python是一门动态解释性的强类型定义语言

动态语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

解析:编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的。对解释执行而言,程序运行时的控制权在解释器而不在用户程序;解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

编译:解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。对编译执行而言,运行时的控制权在用户程序。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

强类型语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

Python优缺点

优点:

  1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

  2. 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

  3. 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

  4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

  5. 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

  6. 可嵌入性————你可以把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")
外层变量,可以被内层代码使用
内层变量,不应被外层代码使用
 

用户登录

1.只有三次登陆机会
2.第三次输入错误,锁定用户
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的更多相关文章

  1. 小白的Python之路 day1

    Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...

  2. 小白的Python之路 day1 变量

    Python之路,Day1 - Python基础1 变量 变量用于存储在计算机程序中引用和操作的信息.它们还提供了一种用描述性名称标记数据的方法,这样我们的程序就能更清晰地被读者和我们自己理解.将变量 ...

  3. Python之路,Day1 - Python基础1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

  4. Python之路 day1 用户登录多次被锁定

    编写登陆接口: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #Author:ersa import getpass,os,sys #读取账户信息到内存中 try: accounts_fil ...

  5. 小白的Python之路 day1 用户输入

    1 2 3 4 5 6 7 8 #!/usr/bin/env python #_*_coding:utf-8_*_   username =input("username:") p ...

  6. 小白的Python之路 day1 模块初识

    模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. ...

  7. 小白的Python之路 day1 Python3的bytes/str之别

    原文:The bytes/str dichotomy in Python 3 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二 ...

  8. 小白的Python之路 day1 数据类型,数据运算

    一.数据类型初识 1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j ...

  9. 小白的Python之路 day1 pyc

    pyc是个什么? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. ...

随机推荐

  1. asp.net 服务器Button控件使用(onclick和onclientclick使用)

    <asp:Button ID="btn_Save" class="button green" Style="width: 100px; heig ...

  2. LintCode Singleton

    Singleton 3 大要素: 1.有private static的句柄(成员变量即field) 2. constructor 必须为private 3.有public static的getInst ...

  3. 2015GitWebRTC编译实录13

    2015.07.21 libboringssl.a 编译通过主要是生成路径,去除test文件比较啰嗦,后继测试需要重点跟进下 CC obj/third_party/boringssl/boringss ...

  4. 设置Android studio黑色主题

    设置: 如上图,点击[Theme]下拉选项,选中[Darcula]主题,点击[Apply]应用修改,弹出重启Android Studio生效修改.如图:

  5. UVa 二叉树重建(先序+中序求后序)

    题意是给出先序和中序,求出后序. 先序遍历先访问根结点,通过根结点可以在中序中把序列分为左子树部分和右子树部分,我建了一个栈,因为后序遍历最后访问根结点,所以把每次访问的根结点放入栈中.因为后序遍历先 ...

  6. Scrum2.0 项目基本完成

  7. 需求文档2_The Battle of Polytopia

    需求文档 ------------------------------------- 1. 游戏详细分析 The Battle of Polytopia简要介绍 探索型.策略型的对战塔防游戏,回合制. ...

  8. Abstract和Virtual和interface , 派生类中重写 override / new关键字

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...

  9. H5 App开发用WeX5垃圾 试用一周,我果断放弃了wex5

    上个月,和朋友一起参加wex5的分享会,因为对cordova有些了解,始终不相信wex5的广告.五一假期,小试一下,果然不出我所料,有不少坑. 想下载IDE,竟然有1.7G,虽然现在网速快但是文件太大 ...

  10. makefile自动生成依赖关系

    手工编写依赖关系不仅工作量大而且极易出现遗漏,更新也很难及时,修改源或头文件后makefile可能忘记修改.为了解决这个问题,可以用gcc的-M选项自动生成目标文件和源文件的依赖关系.-M选项会把包含 ...