python的三中程序_Python基础

python的三中程序_Python基础一、Python入门1.1第一句Python代码1.解释器:即时调试代码,代码无法永久保存2.文件:永久保存代码在D:\python_test\目录下新建文件hello.py,编写代码如下print(‘hellowor

一、Python入门

1.1第一句Python代码

1. 解释器:即时调试代码,代码无法永久保存

2. 文件:永久保存代码

在D:\python_test\目录下新建文件hello.py,编写代码如下

print(‘hello world’)

执行hello.py,即python D:\python_test\hello.py

python内部执行过程如下:

1036857-20170311075430654-1306027291.png

上一步中执行python D:\python_test\hello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。

在linux平台中如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python #该行只对linux有效

print(‘hello world’)

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

1.2文件头

#!/usr/bin/env python #Linux系统下有效

# -*- coding: utf-8 -*-

1.3注释

注释当前行:#

注释多行”’

被注释内容

”’

1.4执行脚本传入参数

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

Python内部提供的模块

业内开源的模块

程序员自己开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

1 #!/usr/bin/env python

2 #-*- coding: utf-8 -*-

3

4 importsys5

6 print sys.argv

执行

C:\Users\Administrator>python D:\python_test\hello.py arg1 arg2 arg3

[‘D:\\python_test\\hello.py’, ‘arg1’, ‘arg2’, ‘arg3’]

1.5了解pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

二、变量

2.1变量的声明和引用

name=’egon’ #变量的声明

name #通过变量名,引用变量的值

print(name) #引用并且打印变量名name对应的值,即’egon’

2.2标识符命令规范

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名

[‘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’]

2.3变量的赋值

name1=’lhf’name2=’egon’

1036857-20170311082526967-1980459601.png

name1=’lhf’name2=name1

1036857-20170311082726873-71222335.png

注:变量名没有储藏值的作用,只起到绑定值的作用,改变一个变量的值,变量名重新指向一个值,原值物理地址不变。

三、出入输出

python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input

1.res=input(“python3: “)

2.res=raw_input(“python2: “)

3.res=input(“python2: “)

1,2无论接收何种输入,都被存为字符串赋值给res,

3的意思是,用户输入何种类型,就以何种类型赋值给res

四、运算符

1、算数运算

1036857-20161011085945461-141241132.png

2、比较运算

1036857-20161011090004352-1793064865.png

3、赋值运算

1036857-20161011090015164-795424787.png

4、位运算

1036857-20161011090217446-1562320241.png

5、逻辑运算

1036857-20161011090025071-1236899190.png

and注解:

在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。

在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。

如果布尔上下文中的某个值为假,则 and 返回第一个假值

or注解:

使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值

如果所有的值都为假,or 返回最后一个假值

注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

and-or结合使用:

结合了前面的两种语法,推理即可。

为加强程序可读性,最好与括号连用,例如:

(1 and ‘x’) or ‘y’

6、成员运算

1036857-20161011090033196-468321512.png

7.身份运算

1036857-20161011090232368-83323653.png

8.运算符优先级:自上而下,优先级从高到低

1036857-20161011090258805-1359487251.png

五、流程控制

1、条件语句

if语句可单分支,多分支

name=input(‘请输入用户名字:’)

password=input(‘请输入密码:’)if name == ‘egon’ and password == ‘123’:print(‘egon login success’)else:print(‘用户名或密码错误’)

”’egon –> 超级管理员

tom –> 普通管理员

jack,rain –> 业务主管

其他 –> 普通用户”’name=input(‘请输入用户名字:’)if name == ‘egon’:print(‘超级管理员’)elif name == ‘tom’:print(‘普通管理员’)elif name == ‘jack’ or name == ‘rain’:print(‘业务主管’)else:print(‘普通用户’)

2、while循环

基本循环格式

while条件 :#循环体

#如果条件为真,那么循环体则执行

#如果条件为假,那么循环体不执行

break:退出本层循环。

continue:退出本次循环,进入下一次循环。

利用标志位tag控制循环。

tag=Truewhiletag:

username=input(‘username:’)

password=input(‘password:’)if username == ‘egon’ and password == ‘123’:whiletag:

cmd=input(‘>>:’)if cmd == ‘q’:

tag=Falsecontinue

print(‘——>%s’ %cmd)

3、for循环

双层嵌套打出99乘法表

for i in range(1,10):for j in range(1,i+1):print(‘%s*%s=%s’ %(i,j,i*j),end=’ ‘)print()

六、数据类型(数字、字符串)

Python的数据类型分为:数字、字符串、列表、元组、字典、集合

1、数字

定义:a=1

特性:

1.只能存放一个值

2.一经定义,不可更改

3.直接访问

分类:整型,长整型,布尔,浮点,复数

1.1整形

Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。

>>> 10

10 ———>默认十进制>>> oct(10)’012′ ———>八进制表示整数时,数值前面要加上一个前缀“0”>>> hex(10)’0xa’ ———>十六进制表示整数时,数字前面要加上前缀0X或0x

python2.*与python3.*关于整型的区别

python2.*

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

python3.*整形长度无限制

1.2长整形long

python2.*:

跟C语言不同,Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。

在使用过程中,我们如何区分长整型和整型数值呢?

通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:

a = 9223372036854775808L

注意,自从Python2起,如果发生溢出,Python会自动将整型数据转换为长整型,

所以如今在长整型数据后面不加字母L也不会导致严重后果了。

python3.*

长整型,整型统一归为整型

1.3布尔bool

True 和 False

1 和 0

1.4浮点数float

Python的浮点数就是数学中的小数,类似C语言中的double。

在运算中,整数与浮点数运算的结果是浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,

一个浮点数的小数点位置是可变的,比如,1.23*109和12.3*108是相等的。

浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,

就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。

1.5复数complex

复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

注意,虚数部分的字母j大小写都可以。

>>> 1.3 + 2.5j == 1.3 + 2.5JTrue

1.6数字相关内建函数

1036857-20161007202627379-994345539.png

2、字符串

定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串

特性:

1.只能存放一个值

2.不可变

3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序

补充:

1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r’l\thf’

2.unicode字符串与r连用必需在r前面,如name=ur’l\thf’

2.1字符串创建

‘hello world’

2.2字符串的常用操作

res=’hello world ‘

移除空白

res=’hello world’

print(res.strip())

hello world #移除字符串后面的空白

分割

print(res.split())

[‘hello’, ‘world’]

长度

res=’hello world’

print(len(res))17

索引

res=’hello world’

print(res[4])

o

切片

res=’hello world’

print(res[1:4])

ell

2.3有关自建函数

字符串中的搜索和替换:

S.find(substr, [start, [end]])    #返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索

S.index(substr, [start, [end]])   #与find()相同,只是在S中没有substr时,会返回一个运行时错误

S.rfind(substr, [start, [end]])   #返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号

S.rindex(substr, [start, [end]])

S.count(substr, [start, [end]])    #计算substr在S中出现的次数

S.replace(oldstr, newstr, [count])    #把S中的oldstr替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换

S.strip([chars])   #把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None

注:可用于判断字符串是否为空,字符串为空返回False,不为空时返回Ture。

S.lstrip([chars])   #把S中前chars中有的字符去掉

S.rstrip([chars])   #把S中后chars中有的字符全部去掉

S.expandtabs([tabsize])    #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个

字符串的分割和组合:

S.split([sep, [maxsplit]])   #以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符

S.rsplit([sep, [maxsplit]])

S.splitlines([keepends])   #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。

S.join(seq)   #把seq代表的序列──字符串序列,用S连接起来

字符串的mapping,这一功能包含两个函数:

String.maketrans(from, to)   #返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。

S.translate(table[,deletechars])   # 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译 表。

字符串中字符大小写的变换:

S.lower()    #小写

S.upper()   #大写

S.swapcase()    #大小写互换

S.capitalize()    #首字母大写

String.capwords(S)   #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起

S.title()    #只有首字母大写,其余为小写,模块中没有这个方法

字符串的测试函数

这些函数返回的都是bool值

S.starstwith(prefix[,start[,end]])   #是否以prefix开头

S.endswith(suffix[,start[,end]])   #以suffix结尾

S.isalnum()    #是否全是字母和数字,并至少有一个字符

S.isalpha()    #是否全是字母,并至少有一个字符

S.isdigit()    #是否全是数字,并至少有一个字符

S.isspace()   #是否全是空白字符,并至少有一个字符

S.islower()   #S中的字母是否全是小写

S.isupper()   #S中的字母是否便是大写

S.istitle()   #S是否是首字母大写的

字符串在输出时的对齐:

S.ljust(width,[fillchar])   #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。

S.rjust(width,[fillchar])    #右对齐

S.center(width, [fillchar])    #中间对齐

S.zfill(width)   #把S变成width长,并在右对齐,不足部分用0补足

格式化字符串:

s=’name:{},age:{},sex:{}’

print(s.format(‘ogen’,18,’male’,’asdasda’))#多余的参数不会影响结果,少参数会报错。

七、课后作业

1、编写for循环,利用索引遍历出每一个字符

msg=’hello egon 666′

ContractedBlock.gif

ExpandedBlockStart.gif

msg=’hello egon 666′

for i inrange(len(msg)):print(msg[i])

答案

2、编写while循环,利用索引遍历出每一个字符

msg=’hello egon 666′

ContractedBlock.gif

ExpandedBlockStart.gif

msg=’hello egon 666’i=len(msg)

j=0whileTrue:print(msg[j])

j+=1

if i==j:break

答案

3、msg=’hello alex’中的alex替换成SB

ContractedBlock.gif

ExpandedBlockStart.gif

msg=’hello alex’

print(msg.replace(‘alex’,’SB’))

答案

4、msg=’/etc/a.txt|365|get’

将该字符的文件名,文件大小,操作方法切割出来

ContractedBlock.gif

ExpandedBlockStart.gif

msg=’/etc/a.txt|365|get’x=’文件名:{a},{b}kb,操作方式:{c}’

print(x.format(a=msg.split(‘|’)[0],b=msg.split(‘|’)[1],c=msg.split(‘|’)[2]))

答案

5、编写while循环,要求用户输入命令,如果命令为空,则继续输入

ContractedBlock.gif

ExpandedBlockStart.gif

whileTrue:

x=input(‘请输入命令:’)if not x.strip():continue

print(‘>>>’,x)break

答案

6、编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入

ContractedBlock.gif

ExpandedBlockStart.gif

whileTrue:

user=input(‘请输入用户名:’)

passwd=input(‘请输入密码:’)if not user.strip() or user.isdigit():continue

print(‘登录成功’)break

答案

7、编写while循环,让用户输入内容,判断输入的内容以alex开头的,则将该字符串加上_SB结尾

ContractedBlock.gif

ExpandedBlockStart.gif

whileTrue:

str=input(‘请输入内容:’)if str.startswith(‘alex’):print(‘%s%s’ %(str,’_SB’))

答案

8、

1.两层while循环,外层的while循环,让用户输入用户名、密码、工作了几个月、每月的工资(整数),用户名或密码为空,或者工作的月数不为整数,或者

月工资不为整数,则重新输入

2.认证成功,进入下一层while循环,打印命令提示,有查询总工资,查询用户身份(如果用户名为alex则打印super user,如果用户名为yuanhao或者wupeiqi

则打印normal user,其余情况均打印unkown

user),退出功能

3.要求用户输入退出,则退出所有循环(使用tag的方式)

ContractedBlock.gif

ExpandedBlockStart.gif

#_*_ coding:utf-8 _*_

tag=Truewhiletag:

user=input(‘user:’)

mima=input(‘password:’)if not user.strip() or notmima.strip():print(‘用户名或者密码不能为空’)continue

whileTrue:

work_mons=input(‘work_mons:’)if notwork_mons.isdigit():print(‘月份需是整数’)continue

break

whileTrue:

salary=input(‘salary:’)if notsalary.isdigit():print(‘工资需是整数’)continue

break

whiletag:print(‘1 查询总工资\n 2 查询用户身份 \n 3 退出登录’)

x=input(‘>>:’)if x==’1′:print(‘总工资是:%s’ %(int(work_mons)*float(salary)))continue

if x==’2′:if user==’alex’:print(‘super user’)elif user==’yuhao’ or user==’wupeiqi’:print(‘normal user’)else:print(‘unkown user’)continue

if x==’3′:

tag=False

答案

1168194-20170607200458168-1009203132.png

今天的文章python的三中程序_Python基础分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60947.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注