本节内容:

1、Python介绍

2、Hello World程序

3、变量\字符编码

4、用户输入

5、if-else语句

6、循环语句

一、Python介绍

Python是一种动态解释性的强类型定义语言,主要应用在云计算,WEB开发,科学运算、人工智能,系统运维和金融等领域。

1、Python的优缺点

优点:

  • 简单,易懂。
  • 开发效率高,Python具有非常强大的第三方库。
  • 高级语言。
  • 可移植性——开源本质。
  • 可扩展性——可以把一段关键代码运行地更快或希望某些算法不公开,可把部分程序用C或C++编写,然后在Python程序中使用。
  • 可嵌入性。

缺点:

  • 速度相对较慢。
  • 代码不能加密。如果项目要求源代码必须是加密的,则不能使用Python。
  • 线程不能利用多CPU问题。

2、Python解释器

当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件,要运行代码,就要靠Python解释器来执行.py文件。

以下为几种常用的Python解释器。

  • CPython——使用最广的Python解释器

  • IPython

  • PyPy

  • Jython

  • IronPython

3、Python 2 与 3的区别

In summary : Python 2.x is legacy, Python 3.x is the present and future of the language

Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012, 3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.

具体而言,Python 3 相较 2 的优势体现在 3 支持 Unicode support,也就是说,在Python 3 中不必再为繁杂的字符编码而烦恼,例如 3 可以直接写中文!

还有一个不同之处就是某些库在 3 中有了变化,具体如下:

old new
_winreg winreg
             ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
markupbase _markupbase
repr reprlib
test.test_support test.support

二、Hello World程序

下面演示用Python编写helloworld程序,这里我使用的开发工具是pycharm。

 __author__ = 'Sunny Han'
print("Hello World!")

由此可见Python的简洁明了。

三、变量\字符编码 

1、变量——为了存放东西以便之后的调用

eg:

name="han shuo"

这里的name为变量名,han shuo为变量name的值。

变量定义应遵循一定的规则;

  • 变量名只能是字母、下划线或数字的任意组合。
  • 变量的第一个字符不能是数字。
  • 关键字不能充当变量名:'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'.
  • 定义变量名一定要有一定的含义,尽量不要胡编乱造,比如说这里我们想定义一个变量来代表Jake的年龄,我们写变量名“age_of_Jake”要好过变量名“ageofjake”。

变量的赋值:

eg:

 name="han shuo"
print("my name is",name)
name2=name
print(name2)
name="kobe"
print(name,name2)

以下为执行后的结果:

my name is han shuo

han shuo
kobe han shuo

为什么name值改成kobe后name2没有变化呢?这是因为name2指向的是之前name的值“han shuo”,而不是name自身,故name值变化后,name2并不会发生相应的变化。

注:python中没有常量的概念,若想表示常量,要将变量名全部大写。

eg:PIE=3.14159

2、字符编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。ASCII主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。为了显示中文,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)。

eg:如果是输入以下代码的话,会报错,因为默认的ASCII无法表示中文。

__author__ = 'Sunny Han'
name="你好,世界!"
print(name)
 所以此处要告诉Python解释器要用什么编码来执行源代码。如下:
# -*- coding: utf-8 -*-
__author__ = 'Sunny Han'
name="你好,世界!"
print(name)

这样就能显示出结果了。

注释:

当行注视:# 被注释内容

  多行注释:""" 被注释内容 """  (三引号)

四、用户输入

1、简单输入方法:

__author__ = 'Sunny Han'
username=input("username:")
password=input("password:")
print(username,password)

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

__author__ = 'Sunny Han'
import getpass
username=input("username:")
password=getpass.getpass("password:") print(username,password)
 2、相对复杂一些的输入输出过程
 eg1:
__author__ = 'Sunny Han'
name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")
info='''
----------------info of %s-----------
name:%s
age:%s
job:%s
salary:%s
'''%(name,name,age,job,salary)
print(info)

注意这里的age变量默认类型为字符串,假如将 age:%s改为age:%d(即整数类型),之前的age=input("age:")也应改为age=int(input("age:")),即将age变量强制转为整型变量。

具体如下:

name=input("name:")
age=int(input("age:"))
job=input("job:")
salary=input("salary:")
info='''
----------------info of %s-----------
name:%s
age:%d
job:%s
salary:%s
'''%(name,name,age,job,salary)
print(info)
 接下来以同样的例子介绍另一种用户输入的方法,如下:
eg2:
name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:") info='''
-----------info of {_name}-----------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
'''.format(_name=name,
_age=age,_job=job,
_salary=salary)
print(info)

eg3:

__author__ = 'Sunny Han'
name=input("name:")
age=input("age:")
job=input("job:")
salary=input("salary:")
info='''
---------info of {0}----------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
'''.format(name,age,job,salary)
print(info)

上例和eg1的执行结果是一样的。

五、if-else语句

 以下举两个例子来说明if-else语句的用法 
1、如何实验判断用户名和密码的正确与否,代码如下:

__author__ = 'Sunny Han'
_username="han"
_password="" username=input("username:")
password=input("password:")
if username==_username and password==_password: #and是“并”的意思,意思是当前后两个条件都成立的时候才成立
print("Welcom user {name} login...".format(name=username))#在这里换行时会自动缩进,如果手动改成顶格,会报错“IndentationError"缩进错误
else: #所有代码如果自己的级别就是最高的,比如这里的else,那么就应该顶格写
print("invalid username or password!")

2、如何判断某人年龄代码如下:

__author__ = 'Sunny Han'
age_of_jake=56 guess_age=int(input("guess_age:"))#这里默认输入的类型为字符型变量,故要强制转换字符类型,将其变成整型变量
if guess_age<age_of_jake:
print("think bigger!")
elif guess_age==age_of_jake:#这里的elif相当于C语言中的elseif
print("yes,you got it.")
else: #尤其要记住在编写代码时,要在所有的if else elif 语句后面加上冒号:
print("think smaller...")

六、循环语句

1、while循环语句

(1)先简单举一个while语句的例子,如下:

__author__ = 'Sunny Han'
count=0
while True:
print("count:",count)
count +=1
if count==5:
break

代码运行结果如下:

我们可以看到上述代码实现了依次输出0到5的功能。

 (2)在之前猜年龄代码的基础上再加一个输入次数的限制,并用while语句实现,如下:
__author__ = 'Sunny Han'
age_of_jake=56
count=0 #计数器
while count<3:
guess_age=int(input("guess_age:"))
if guess_age<age_of_jake:
print("think bigger!")
elif guess_age==age_of_jake:
print("yes,you got it.")
break #这里的break是结束循环,也就是说即便是没有输入够三次,也会结束循环,不会执行最后一个else语句
else:
print("think smaller...")
count +=1 #相当于count=count+1 else:
print("you have tried too many times! ")

这里实现了只允许输入三次的限制,这里要注意break的用法和意义。

 如果说在以上基础上在加入一个环节——是否想继续猜年龄,我们可以进一步优化代码如下:

__author__ = 'Sunny Han'
age_of_oldboy=56
count=0
while count<3:
guess_age=int(input("guess_age:"))
if guess_age<age_of_oldboy:
print("think bigger!")
elif guess_age==age_of_oldboy:
print("yes,you got it.")
break
else:
print("think smaller...")
count +=1
if count==3:
continue_confirm=input("do you want to keep guessing?")
if continue_confirm!="n":
count=0 #这里的令count重新等于0,就是说让代码重新回到其实部分(重新猜)
else:
break

2、for循环语句

 (1)简单示例如下:
__author__ = 'Sunny Han'
for i in range(0,10,2): #这里的0代表起始点,10代表终止点,2代表步长(步长默认为1)
print("loop",i) #循环输出0,2,4,6,8

(2)接下来我们举一个嵌套循环的例子,如下:

__author__ = 'Sunny Han'
for i in range(0,10):
print("---------",i)
for j in range(5): #这里和if else一样,一定记得在for语句后加冒号:
print(j)

上述代码实现了每输出一个i,都会输出5个j。

3、continue语句

 这里我们利用一个简单的for语句,来练习使用continue语句。代码如下:

__author__ = 'Sunny Han'
for i in range(0,10):
if i<5:
print("loop",i) #在这里如果i<5,会直接输出i
else:
continue #相应的,当i增加到大于5的话,会执行continue语句,也就是会结束本次循环,而不是全部终止循环
print("hehe..")

对上述代码进行调试后发现,即便当i>5时,代码仍会继续进行循环,i=6,7,8,9,10直到走完全部循环。

 但若将这里的continue改为break,从调试结果中我们就很明显能看到当执行到i大于等于5时,就直接跳出整个循环了,而continue只是跳出本次循环,这就是continue语句和break语句的不同之处。
 
 
 

Python3.5学习之旅——day1的更多相关文章

  1. Python3.5学习之旅——day2

    本节内容: 1.模块初识 2..pyc是什么? 3.Python的数据类型 4.三元运算 5.进制 6.byte类型 7.数据运算 8.列表 9.元组 10.课后练习 一.模块初识 由day1的学习我 ...

  2. Python3.5学习之旅——day6

    面向对象编程的学习 一.定义 首先跟大家介绍一位资深的程序员前辈说过的编程心得: 1.写重复代码是非常不好且低级的行为 2.完成的代码需要经常变更 所以根据以上两个心得,我们可以知道写的代码一定要遵循 ...

  3. Python3.5学习之旅——day5

    模块初识 一.定义 在python中,模块是用来实现某一特定功能的代码集合.其本质上就是以‘.py’结尾的python文件.例如某文件名为test.py,则模块名为test. 二.导入方法 我们在这一 ...

  4. Python3.5学习之旅——day4

    本节内容 1.装饰器 2.迭代器与生成器 3.内置方法 4.软件目录结构规范 一.装饰器 装饰器是一个用来装饰其他函数的工具,即为其他函数添加附加功能,其本质就是函数. 装饰器需要遵循的以下两个原则: ...

  5. Python3.5学习之旅——day3

    本节内容: 1.字符串操作 2.字典操作 3.集合 4.文件操作 5.字符编码与转码 6.函数与函数式编程 一.字符串操作 name='kobe' name.capitalize() 首字母大写 na ...

  6. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  7. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  8. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  9. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

随机推荐

  1. TCP/IP详解,卷1:协议--1

    引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P 协议 族允许它们互相进行通信.这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想. T C P ...

  2. Kubernetes 升级记录:从 1.16.3 升级至 1.17.0

    参考官方文档 Upgrading kubeadm clusters 在 ubuntu 18.04 上完成了升级,记录一下升级步骤. 一.升级第一个 master 节点 apt-get 安装 kubea ...

  3. 了解 go 的 Context

    go 的 Context 一直对 go 的 Context 一知半解,不了解其用途,因此在这里着重了解一下 go 语言的 Context 飞雪无情的一个博文对 go 的 Context 讲的比较易懂一 ...

  4. Linux netstat命令详解(检验本机各端口的网络连接情况)

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  5. nfs 动态文件挂载读写权限设置

    nfs 动态文件挂载读写权限设置 待办 ll 命令查看文件夹权限 参考设置共享文件夹https://www.linuxidc.com/Linux/2018-11/155331.htm

  6. Linux - gitlab的命令

    启动 sudo gitlab-ctl start 关闭 sudo gitlab-ctl stop 重新加载配置文件 sudo gitlab-ctl reconfigure 在本地初始化一个本地仓库 g ...

  7. 【笔记】Linux进程间同步和进程绑定至特定cpu

    #define _GNU_SOURCE #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...

  8. find 报错 find: paths must precede expression:

    编写shell脚本,报错,如下面 [root@localhost backup]#find ./ -name mysqldump* -mtime +3 -delete [root@localhost ...

  9. SOCV / POCV 模型 (3)

    STA无疑是数字集成电路设计实现方法学中最『漂亮』的模型之一,但是随意着工艺进步,local varition 的随机性及重要性增加,传统STA 的局限性日渐突出.大概在十五年前,SSTA成了一个研究 ...

  10. winform BackgroundWorker 的用法 - 异步执行

    1.设置 backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = ...