python基础语法

编程与编程语言

python是一门编程语言,做为学习python的开始,须要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程?python

编程的目的:

#计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种可以被计算机识别的表达方式传递给计算机,从而达到让计算机可以像人脑/电脑同样自动执行的效果。  

什么是编程语言?

#上面说起的可以被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工做。

什么是编程?

#编程即程序员根据需求把本身的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。

#强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义  
egon老师说的话
    Python是语言,而学习语言的套路都是同样的,以英语学习为例,你须要学单词,而后学语法,最后写做文。
         英语的单词---------->Python中的关键字
         英语的语法---------->Python的语法
         英语的做文---------->用Python语言写的程序

        此时你内心应该有数了,学Python其实很简单,全都是在记忆一些固定的套路而已,那为什么有的人会以为Python难呢?来看一个广泛的问题,问题中包含答案。。。。。。


         常常有学生问:老师,我上课都能听得懂,为啥我就是不会写程序。
         我:你这不废话么!


         你学完了英语的单词、语法、还有写做文的方式,你能马上写出一篇优美的做文吗?固然不能,那么问题出在哪里呢?
         你想一想,你如今用汉语跟我沟通,脑子里会不会分神去琢磨某个汉字的意思,汉语的语法应该怎样?你固然不会,你脑子里想到什么,就会很天然地将它表达出来,由于你已经足够熟练,汉语的文字、单词、语法等已经深深地植入了你的意识里。学英语,学Python都是同样的道理,你觉得你会了,你可能确实会了,但你远没有达到烂熟于心的地步,所以你在写程序的时候须要考虑的是关键字的用法、语法结构,而我则只须要考虑我脑子里的逻辑如何安排,逻辑走通了程序天然就表达出来了,我彻底不会考虑关键字或语法什么的,它就像是个人器官同样,我不会在想吃饭的时候考虑应该用锭眼吃仍是用嘴吃,这就是你跟个人差异。
         那有何好的解决方法呢?答:没有。不下狠心翻来覆去练习,知识是没法根植于你的潜意识的,你也永远没法本身写程序,就跟当年郭靖学降龙十八掌同样,洪七公要他打200下,他能打1000下,屌丝到不能再屌丝的你,没有这点意志力,就别妄想咸鱼翻身了。。。。。。
         附一句:我不知道成功有没有捷径,但我肯定学Python没有,没有几万行代码的洗礼,你不可能成为一名优秀的程序员,这就是我想对你说的。
有话要说


编程语言与分类

编程的语言的发展linux

机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操做硬件;

汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操做硬件;

高级语言:站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操做
高级语言更贴近人类语言,于是形成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为
#1. 编译型(须要编译器,至关于用谷歌翻译):如C,执行速度快,调试麻烦

#2. 解释型(须要解释器,至关于同声传译):如python,执行速度慢,调试方便

总结:
机器语言
#优势是最底层,执行速度最快
#缺点是最复杂,开发效率最低

汇编语言
#优势是比较底层,执行速度最快
#缺点是复杂,开发效率最低

高级语言
#编译型语言执行速度快,不依赖语言环境运行,跨平台差
#解释型跨平台好,一份代码,处处使用,缺点是执行速度慢,依赖解释器运行

主流编程语言介绍

世界上的编程语言有600多种,但真正你们主流在使用的最多二三十种,不一样的语言有本身的特色和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有不少老旧的语言慢慢无人用了。有个权威的语言排名网站,能够看到主流的编程语言是哪些程序员

主要语言介绍

#C语言:
C语言是一种计算机程序设计语言,它既具备高级语言的特色,又具备汇编语言的特色。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已前后被移植到大、中、小及微型机上,它能够做为工做系统设计语言,编写系统应用程序,也能够做为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围普遍,具有很强的数据处理能力,不只仅是在软件开发上,并且各种科研都须要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用好比单片机以及嵌入式系统开发。shell

#C++:
C++是C语言的继承的扩展,它既能够进行C语言的过程化程序设计,又能够进行以抽象数据类型为特色的基于对象的程序设计,还能够进行以继承和多态为特色的面向对象的程序设计。C++擅长面向对象程序设计的同时,还能够进行基于过程的程序设计,于是C++就适应的问题规模而论,大小由之。
C++不只拥有计算机高效运行的实用性特征,同时还致力于提升大规模程序的编程质量与程序设计语言的问题描述能力。编程

#JAVA:
Java是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具备卓越的通用性、高效性、平台移植性和安全性,普遍应用于我的PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具有了显著优点和广阔前景。安全

#PHP:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸取了C语言、Java和Perl的特色,利于学习,使用普遍,主要适用于Web开发领域
Ruby:
Ruby 是开源的,在Web 上免费提供,但须要一个许可证。[4]
Ruby 是一种通用的、解释的编程语言。
Ruby 是一种真正的面向对象编程语言。
Ruby 是一种相似于 Python 和 Perl 的服务器端脚本语言。
Ruby 能够用来编写通用网关接口(CGI)脚本。
Ruby 能够被嵌入到超文本标记语言(HTML)。
Ruby 语法简单,这使得新的开发人员可以快速轻松地学习 Ruby服务器

#GO:
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。如今Go的开发已是彻底开放的,而且拥有一个活跃的社区。
由其擅长并发编程网络

#Python:
Python是一门优秀的综合语言, Python的宗旨是简明、优雅、强大,在人工智能、云计算、金融分析、大数据开发、WEB开发、自动化运维、测试等方向应用普遍,已经是全球第4大最流行的语言。并发

python介绍

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写可以解释Python语言语法的解释器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他但愿这个新的叫作Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。运维

最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美、清晰、简单,是一个优秀并普遍使用的语言。

Python能够应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎全部大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。

变量

变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。

为何要有变量

#程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,因此咱们须要有一种机制可以反映或者说是保存下来程序执行时状态以及状态的变化。
#好比:
    英雄的等级为1,打怪升级(变)为10
    僵尸的存活状态True,被植物打死了,因而变为False
    人的名字为egon,也能够修改成Egon 

如何定义变量

#变量名(至关于门牌号,指向值所在的空间),等号,变量值
name='Egon'
sex='male'
age=18
level=10

变量的定义规范

#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名['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']

定义方式:

#驼峰体
AgeOfOldboy = 56 
NumberOfStudents = 80
#下划线(推荐使用)
age_of_oldboy = 56 
number_of_students = 80

定义变量名很差的方式

#1. 变量名为中文、拼音
#2. 变量名过长
#3. 变量名词不达意

定义变量会有:id,type,value

#1 等号比较的是value
#2 is比较的是id

#强调:
#1. id相同,意味着type和value一定相同
#2. value相同type确定相同,但id可能不一样,以下
>>> x='Info Egon:18'
>>> y='Info Egon:18'
>>> id(x)
4376607152
>>> id(y)
4376607408
>>> 
>>> x == y
True
>>> x is y
False

小整数池

#一、在交互式模式下
Python实现int的时候有个小整数池。为了不因建立相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时建立出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收

每建立一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
>>> y=4
>>> id(y)
4297641184
>>> 
>>> x=3
>>> x+=1
>>> id(x)
4297641184

#在pycharm中
但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其余的字符串等不可变类型也都包含在内一便采用相同的方式处理了,咱们只须要记住这是一种优化机制,至于范围到底多大,无需细究
变量的修改与内存管理(引用计数与垃圾回收机制)

常量

常量即指不变的量,如pai 3.141592653..., 或在程序运行过程当中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些状况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法表明常量,程序员约定俗成用变量名所有大写表明常量
AGE_OF_OLDBOY = 56

#ps:在c语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错 

用户与程序交互

     古时候,咱们去银行取钱,须要有一个银行业务员等着咱们把本身的帐号密码输入给他,而后他去进行验证,成功后,咱们再将取款金额输入/告诉他

    骄傲的现代人,会为客户提供一台ATM机(就是一台计算机),让ATM机跟用户交互,从而取代人力。然而机器是死的,咱们必须为其编写程序来运行,这就要求咱们的编程语言中可以有一种能与用户交互,接收用户输入数据的机制

#在python3中
input:用户输入任何值,都存成字符串类型

#在python2中
input:用户输入什么类型,就存成什么类型
raw_input:等于python3的input

注释

    随着学习的深刻,用不了多久,你就能够写复杂的上千甚至上万行的代码啦,有些代码你花了好久写出来,过了些天再回去看,发现居然看不懂了,这太正常了。 另外,你之后在工做中会发现,一个项目可能是由几个甚至几十个开发人员一块儿作,你要调用别人写的代码,别人也要用你的,若是代码不加注释,你本身都看不懂,更别说别人了,这产会挨打的。因此为了不这种尴尬的事情发生,必定要增长你代码的可读性。

    代码注释分单行和多行注释, 单行注释用#,多行注释能够用三对双引号""" """

    代码注释的原则:

#1. 不用所有加注释,只须要在本身以为重要或很差理解的部分加注释便可
#2. 注释能够用中文或英文,但不要用拼音

文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

基本数据类型

什么是数据?为什么要有多种类型的数据?
#数据即变量的值,如age=18,18则是咱们保存的数据。
#变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不一样的状态就应该用不一样类型的数据去标识

数字

#int整型 定义:age=10 #age=int(10) 用于标识:年龄,等级,身份证号,qq号,个数 #float浮点型 定义:salary=3.1 #salary=float(3.1) 用于标识:工资,身高,体重, #int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807 #long(长整型) 跟C语言不一样,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上因为机器内存有限,咱们使用的长整数数值不可能无限大。 注意,自从Python2.2起,若是整数发生溢出,Python会自动将整数数据转换为长整数,因此现在在长整数数据后面不加字母L也不会致使严重后果了。 注意:在Python3里再也不有long类型了,全都是int >>> a= 2**64 >>> type(a) #type()是查看数据类型的方法 <type 'long'> >>> b = 2**60 >>> type(b) <type 'int'> #complex复数型 >>> x=1-2j >>> x.imag -2.0 >>> x.real 1.0

字符串

#在python中,加了引号的字符就是字符串类型,python并无字符类型。 定义:name='egon' #name=str('egon') 用于标识:描述性的内容,如姓名,性别,国籍,种族

单引号,双引号,三引号的区别

#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种状况 你须要考虑单双的配合 msg = "My name is Egon , I'm 18 years old!" #多引号什么做用呢?做用就是多行字符串必须用多引号 msg = ''' 今天我想写首小诗, 歌颂个人同桌, 你看他那乌黑的短发, 好像一只炸毛鸡。 ''' print(msg)

字符串拼接(只能在字符串之间进行,且只能相加或相乘)

#数字能够进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。 >>> name='egon' >>> age='18' >>> name+age #相加其实就是简单拼接 'egon18' >>> name*5 'egonegonegonegonegon' #注意1:字符串相加的效率不高 字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,至关字符串1与字符串3的空间被复制了一次, #注意2:只能字符串加字符串,不能字符串加其余类型


列表

#在[]内用逗号分隔,能够存放n个任意类型的值 定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',]) 用于标识:存储多个值的状况,好比一我的有多个爱好 # 列表嵌套 #存放多个学生的信息:姓名,年龄,爱好 >>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]] >>> students_info[0][2][0] #取出第一个学生的第一个爱好 'play'


字典

#为什么还要用字典? 存放一我的的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,咱们彻底能够基于刚刚学习的列表去存放,以下 >>> info=['egon','male',18] 定义列表的目的不仅仅是为了存,还要考虑取值,若是我想取出这我的的年龄,能够用 >>> info[2] 但这是基于咱们已经知道在第3个位置存放的是年龄的前提下,咱们才知道索引2对应的是年龄 即: #name, sex, age info=['egon','male',18] 而这彻底只是一种假设,并无真正意义上规定第三个位置存放的是年龄,因而咱们须要寻求一种,便可以存放多个任意类型的值,又能够硬性规定值的映射关系的类型,好比key=value,这就用到了字典 #在{}内用逗号分隔,能够存放多个key:value的值,value能够是任意类型 定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18}) 用于标识:存储多个值的状况,每一个值都有惟一一个对应的key,能够更为方便高效地取值 # 字典的嵌套和取值 info={ 'name':'egon', 'hobbies':['play','sleep'], 'company_info':{ 'name':'Oldboy', 'type':'education', 'emp_num':40, } } print(info['company_info']['name']) #取公司名  students=[ {'name':'alex','age':38,'hobbies':['play','sleep']}, {'name':'egon','age':18,'hobbies':['read','sleep']}, {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']}, ] print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好

集合

做用:去重,关系运算,

定义
             知识点回顾
             可变类型是不可hash类型
             不可变类型是可hash类型

定义集合:
             集合:能够包含多个元素,用逗号分割,
             集合的元素遵循三个原则:
              1:每一个元素必须是不可变类型(可hash,可做为字典的key)
              2:没有重复的元素
              3:无序

注意集合的目的是将不一样的值存放到一块儿,不一样的集合间用来作关系运算,无需纠结于集合中单个值
 

优先掌握的操做
#一、长度len
#二、成员运算in和not in

#三、|合集
#四、&交集
#五、-差集
#六、^对称差集
#七、==
#八、父集:>,>=
#九、子集:<,<=

练习:

一.关系运算
  有以下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
  linuxs={'wupeiqi','oldboy','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出全部报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合


布尔

#布尔值,一个True一个False #计算机俗称电脑,即咱们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要做用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识 >>> a=3 >>> b=5 >>> >>> a > b #不成立就是False,即假 False >>> >>> a < b #成立就是True, 即真 True 接下来就能够根据条件结果来干不一样的事情了: if a > b print(a is bigger than b ) else print(a is smaller than b ) 上面是伪代码,但意味着, 计算机已经能够像人脑同样根据判断结果不一样,来执行不一样的动做。 #全部数据类型都自带布尔值 1、None,0,空(空字符串,空列表,空字典等)三种状况下布尔值为False 二、其他均为真

 

重点

#1.可变类型:在id不变的状况下,value能够变,则称为可变类型,如列表,字典

#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着建立了新的内存空间) 

格式化输出

程序中常常会有这样场景:要求用户输入信息,而后打印成固定的格式

    好比要求用户输入用户名和年龄,而后打印以下格式:

    My name is xxx,my age is xxx.

    很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,没法放到指定的xxx位置,并且数字也必须通过str(数字)的转换才能与字符串进行拼接。

    这就用到了占位符,如:%s、%d


#%s字符串占位符:能够接收字符串,也可接收数字 print('My name is %s,my age is %s' %('egon',18)) #%d数字占位符:只能接收数字 print('My name is %s,my age is %d' %('egon',18)) print('My name is %s,my age is %d' %('egon','18')) #报错 #接收用户输入,打印成指定格式 name=input('your name: ') age=input('your age: ') #用户输入18,会存成字符串18,没法传给%d print('My name is %s,my age is %s' %(name,age)) #注意: #print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,没法传给%d,因此会报错

小练习

练习:用户输入姓名、年龄、工做、爱好 ,而后打印成如下格式
------------ info of Egon ----------- Name : Egon Age : 22 Sex : male Job : Teacher ------------- end -----------------


基本运算符

计算机能够进行的运算有不少种,可不仅加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天咱们暂只学习算数运算、比较运算、逻辑运算、赋值运算

    算数运算

    如下假设变量:a=10,b=20

    比较运算

    如下假设变量:a=10,b=20

    赋值运算

    如下假设变量:a=10,b=20

    逻辑运算

#三者的优先级从高到低分别是:not,or,and
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#最好使用括号来区别优先级,其实意义与上面的同样
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False 

    身份运算

#is比较的是id
#而==比较的是值

流程控制之if...else

既然咱们编程的目的是为了控制计算机可以像人脑同样工做,那么人脑能作什么,就须要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算,对于数学运算在上一节咱们已经说过了。对于逻辑运算,即人根据外部条件的变化而作出不一样的反映,好比

1 若是:女人的年龄>30岁,那么:叫阿姨

age_of_girl=31
if age_of_girl > 30: print('阿姨好')

2 若是:女人的年龄>30岁,那么:叫阿姨,不然:叫小姐

age_of_girl=18
if age_of_girl > 30: print('阿姨好') else: print('小姐好')

3 若是:女人的年龄>=18而且<22岁而且身高>170而且体重<100而且是漂亮的,那么:表白,不然:叫阿姨

age_of_girl=18
height=171 weight=99 is_pretty=True if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: print('表白...')else: print('阿姨好')


#在表白的基础上继续: #若是表白成功,那么:在一块儿 #不然:打印。。。  age_of_girl=18 height=171 weight=99 is_pretty=True success=False if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: if success: print('表白成功,在一块儿') else: print('什么爱情不爱情的,爱nmlgb的爱情,爱nmlg啊...') else: print('阿姨好')

    4 若是:成绩>=90,那么:优秀

       若是成绩>=80且<90,那么:良好

       若是成绩>=70且<80,那么:普通

       其余状况:不好

score=input('>>: ') score=int(score) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('不好')
 
格式:
if 条件1:     缩进的代码块   elif 条件2:     缩进的代码块   elif 条件3:     缩进的代码块   ......   else:       缩进的代码块

练习一

#!/usr/bin/env python  name=input('请输入用户名字:') password=input('请输入密码:') if name == 'egon' and password == '123': print('egon login success') else: print('用户名或密码错误')


练习二

#!/usr/bin/env python #根据用户输入内容打印其权限 ''' egon --> 超级管理员 tom --> 普通管理员 jack,rain --> 业务主管 其余 --> 普通用户 ''' name=input('请输入用户名字:') if name == 'egon': print('超级管理员') elif name == 'tom': print('普通管理员') elif name == 'jack' or name == 'rain': print('业务主管') else: print('普通用户')


练习三
# 若是:今天是Monday,那么:上班 # 若是:今天是Tuesday,那么:上班 # 若是:今天是Wednesday,那么:上班 # 若是:今天是Thursday,那么:上班 # 若是:今天是Friday,那么:上班 # 若是:今天是Saturday,那么:出去浪 # 若是:今天是Sunday,那么:出去浪 #方式一: today=input('>>: ') if today == 'Monday': print('上班') elif today == 'Tuesday': print('上班') elif today == 'Wednesday': print('上班') elif today == 'Thursday': print('上班') elif today == 'Friday': print('上班') elif today == 'Saturday': print('出去浪') elif today == 'Sunday': print('出去浪') else: print('''必须输入其中一种: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''') #方式二: today=input('>>: ') if today == 'Saturday' or today == 'Sunday': print('出去浪') elif today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' \ or today == 'Thursday' or today == 'Friday': print('上班') else: print('''必须输入其中一种: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''') #方式三: today=input('>>: ') if today in ['Saturday','Sunday']: print('出去浪') elif today in ['Monday','Tuesday','Wednesday','Thursday','Friday']: print('上班') else: print('''必须输入其中一种: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ''')


流程控制之while循环

为什么要用循环

咱们已经学会用if .. else 来猜年龄的游戏啦,可是只能猜一次就中的机率过小了,若是我想给玩家3次机会呢?就是程序启动后,玩家最多能够试3次,这个怎么弄呢?你总不会想着把代码复制3次吧。。。。
那么如何作到不用写重复代码又能让程序重复一段代码屡次呢? 循环语句就派上用场啦

条件循环:while,语法以下

while 条件: # 循环体 # 若是条件为真,那么循环体则执行,执行完毕后再次循环,从新判断条件。。。 # 若是条件为假,那么循环体不执行,循环终止


#打印0-10 count=0 while count <= 10: print('loop',count) count+=1 #打印0-10之间的偶数 count=0 while count <= 10: if count%2 == 0: print('loop',count) count+=1 #打印0-10之间的奇数 count=0 while count <= 10: if count%2 == 1: print('loop',count) count+=1


死循环

import time num=0 while True: print('count',num) time.sleep(1) num+=1


循环嵌套与tag

tag=True 

  while tag:     ......     while tag:       ........       while tag:         tag=False
#练习,要求以下:
    1 循环验证用户输入的用户名与密码
    2 认证经过后,运行用户重复执行命令
    3 当用户输入命令为quit时,则退出整个程序 
#实现一: name='egon' password='123' while True: inp_name=input('用户名: ') inp_pwd=input('密码: ') if inp_name == name and inp_pwd == password: while True: cmd=input('>>: ') if not cmd:continue if cmd == 'quit': break print('run <%s>' %cmd) else: print('用户名或密码错误') continue break #实现二:使用tag name='egon' password='123' tag=True while tag: inp_name=input('用户名: ') inp_pwd=input('密码: ') if inp_name == name and inp_pwd == password: while tag: cmd=input('>>: ') if not cmd:continue if cmd == 'quit': tag=False continue print('run <%s>' %cmd) else: print('用户名或密码错误')


break与continue

#break用于退出本层循环 while True: print "123" break print "456" #continue用于退出本次循环,继续下一次循环 while True: print "123" continue print "456"


while+else

#与其它语言else 通常只与if 搭配不一样,在Python 中还有个while ...else 语句,while 后面的else 做用是指,当while 循环正常执行完,中间没有被break 停止的话,就会执行else后面的语句 count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------") 输出 Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 循环正常执行完啦 -----out of while loop ------ #若是执行过程当中被break啦,就不会执行else的语句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------") 输出 Loop 1 Loop 2 -----out of while loop ------

while循环练习题

#1. 使用while循环输出1 2 3 4 5 6     8 9 10
#2. 求1-100的全部数的和
#3. 输出 1-100 内的全部奇数
#4. 输出 1-100 内的全部偶数
#5. 求1-2+3-4+5 ... 99的全部数的和
#6. 用户登录(三次机会重试)
#7:猜年龄游戏
要求:
     容许用户最多尝试3次,3次都没猜对的话,就直接退出,若是猜对了,打印恭喜信息并退出
#8:猜年龄游戏升级版
要求:
     容许用户最多尝试3次
     每尝试3次后,若是还没猜对,就问用户是否还想继续玩,若是回答Y或y, 就继续让其猜3次,以此往复,若是回答N或n,就退出程序
     如何猜对了,就直接退出


#题一 count=1 while count <= 10: if count == 7: count+=1 continue print(count) count+=1 count=1 while count <= 10: if count != 7: print(count) count+=1 #题目二 res=0 count=1 while count <= 100: res+=count count+=1 print(res) #题目三 count=1 while count <= 100: if count%2 != 0: print(count) count+=1 #题目四 count=1 while count <= 100: if count%2 == 0: print(count) count+=1 #题目五 res=0 count=1 while count <= 5: if count%2 == 0: res-=count else: res+=count count+=1 print(res) #题目六 count=0 while count < 3: name=input('请输入用户名:') password=input('请输入密码:') if name == 'egon' and password == '123': print('login success') break else: print('用户名或者密码错误') count+=1 #题目七 age_of_oldboy=73 count=0 while count < 3: guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1 #题目八 age_of_oldboy=73 count=0 while True: if count == 3: choice=input('继续(Y/N?)>>: ') if choice == 'Y' or choice == 'y': count=0 else: break guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1


流程控制之for循环

迭代式循环:for,语法以下

  for i in range(10):

    缩进的代码块

break与continue(同上)

循环嵌套

打印乘法表

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

打印金字塔

#分析 ''' #max_level=5 * #current_level=1,空格数=4,*号数=1 *** #current_level=2,空格数=3,*号数=3 ***** #current_level=3,空格数=2,*号数=5 ******* #current_level=4,空格数=1,*号数=7 ********* #current_level=5,空格数=0,*号数=9 #数学表达式 空格数=max_level-current_level *号数=2*current_level-1 ''' #实现 max_level=5 for current_level in range(1,max_level+1): for i in range(max_level-current_level): print(' ',end='') #在一行中连续打印多个空格 for j in range(2*current_level-1): print('*',end='') #在一行中连续打印多个* print() 

练习题

1、    简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型
2、 执行 Python 脚本的两种方式是什么 3、 Pyhton 单行注释和多行注释分别用什么? 4、 布尔值分别有什么? 5、 声明变量注意事项有那些? 6、 如何查看变量在内存中的地址? 7、 写代码 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登录成功,不然登录失败! 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登录成功,不然登录失败,失败时容许重复输入三次 实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登录成功,不然登录失败,失败时容许重复输入三次 八、 写代码 a. 使用while循环实现输出2-3+4-5+6...+100 的和 b. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 使用 while 循环实现输出 1-100 内的全部奇数 e. 使用 while 循环实现输出 1-100 内的全部偶数 九、 现有以下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = n1
十、  

编写登录接口

基础需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
相关文章
相关标签/搜索