第一篇:Python入门
一、编程与编程语言
- 编程的目的:
计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果
- 什么使编程语言?
上面提及的能够被计算机所能表达方式即变成语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人力编程的目的就是命令奴隶去工作。
- 什么是编程?
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
强调:程序员在未运行前跟普通文件无异,只有程序在运行时,文件所写的字符才有特定的语法意义
二、编程语言分类
机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;
汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;
高级语言:站在(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作。
- 高级语言更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为:
编译型语言:
使用专门的编译器,针对特定的平台,将高级语言码代码一次型的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
特点:
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
总结:
)一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
)与特定平台相关,一般无法移植到其他平台;
)现有的C、C++、Objective等都属于编译型语言。
解释型语言:
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
特点:
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
总结:
)解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低;
)只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
)Python、Ruby等属于解释型语言。
- 总结
机器语言:
优点是最底层,执行速度最快
缺点是最复杂,开发效率最低
汇编语言:
优点是比较底层,执行速度最快
缺点是复杂,开发效率最低
高级语言:
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
PS:速度不是关键(瓶颈理论),开发效率高才是王道
#机器语言
由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序称为目标程序。只有目标程序才能被计算机直接识别和执行。但是机器语言编写的程序无明显特征,难以记忆,不便阅读和书写,且依赖于具体机种,局限性很大,机器语言属于低级语言。
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。
尽管机器语言好像是很复杂的,然而它是有规律的。
存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。
以下是一些示例:
指令部份的示例
代表 加载(LOAD)
代表 存储(STORE)
... 暂存器部份的示例
代表暂存器 A
代表暂存器 B
... 存储器部份的示例
代表地址为 的存储器
代表地址为 的存储器
代表地址为 的存储器
代表地址为 ^ 的存储器
集成示例 ,, 代表 LOAD A,
,, 代表 LOAD B,
,, 代表 STORE B,
,, 代表 STORE B, [] #汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
汇编的hello world,打印一句hello world, 需要写十多行,也是醉了。
; hello.asm
section .data ; 数据段声明
msg db "Hello, world!", 0xA ; 要输出的字符串
len equ $ - msg ; 字串长度
section .text ; 代码段声明
global _start ; 指定入口函数
_start: ; 在屏幕上显示一个字符串
mov edx, len ; 参数三:字符串长度
mov ecx, msg ; 参数二:要显示的字符串
mov ebx, ; 参数一:文件描述符(stdout)
mov eax, ; 系统调用号(sys_write)
int 0x80 ; 调用内核功能
; 退出程序
mov ebx, ; 参数一:退出代码
mov eax, ; 系统调用号(sys_exit)
int 0x80 ; 调用内核功能 #高级语言
高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后生成的可执行文件,是cpu可以理解的2进制的机器码组成的),使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。 编译后程序运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器(想运行,必须先装上解释器,就像跟老外说话,必须有翻译在场),但这种方式比较灵活,可以动态地调整、修改应用程序。如Python、Java、PHP、Ruby等语言。 机器语言、汇编语言、高级语言详解
机器语言、汇编语言、高级语言详解
三、Python介绍
- 介绍
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,Guido开始鞋能够解释Python语言语法的解释器,Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和Shell之间,功能全面,易学易用,可拓展的语言。
Python可以应用于众多领域,如:数据分析、组建集成、网络服务、图像处理、数值计算和科学计算等众多领域。
- Python(解释器)的发展史
1989年,Guido开始写Python语言的编译器。
1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
Granddaddy of Python web frameworks, Zope was released in
Python 1.0 - January 增加了 lambda, map, filter and reduce.
Python 2.0 - October , ,加入了内存回收机制,构成了现在Python语言框架的基础
Python 2.4 - November , , 同年目前最流行的WEB框架Django 诞生
Python 2.5 - September ,
Python 2.6 - October ,
Python 2.7 - July ,
In November , it was announced that Python 2.7 would be supported until , and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December , (这里要解释清楚 为什么08年就出3.,2010年反而又推出了2.?是因为3.0不向下兼容2.,导致大家都拒绝升级3.,无奈官方只能推出2.7过渡版本)
Python 3.1 - June ,
Python 3.2 - February ,
Python 3.3 - September ,
Python 3.4 - March ,
Python 3.5 - September ,
Python 3.6 - -- 发布python3..0版
- Python有那些种类
我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
当我们从Python官方网站下载并安装好Python .7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。 CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
PyPy PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
五、安装Python解释器
Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows系统上需要安装一下,超简单
打开官网 https://www.python.org/downloads/windows/ 下载中心
#测试安装是否成功
windows --> 运行 --> 输入cmd ,然后回车,弹出cmd程序,输入python,如果能进入交互环境 ,代表安装成功。
#多版本共存演示
注意:在安装目录下找到python.exe,拷贝一份,命名为python2.exe或python3.exe,一定要保留原版,因为pip工具会调用它。
六、变量
- 什么是变量
变量即变化的量,核心“变”与“量”二字,变即变化,量即衡量状态。
- 为什么要有变量
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要由一种机制能够反映或者说是保存下来程序执行是状态的变化。
- 变量的定义规范
变量名只能是字母、数字或下环线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名['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 =
下划线(推荐使用)
age_of_oldboy =
- 定义变量名不好的方式
、变量名为中文、拼音
、变量名过长
、变量名词不达意
- 定义变量会有:id、type、value
、等号比较的是value,
、is比较的是id 强调:
、id相同,意味着type和value必定相同
、value相同type肯定相同,但id可能不同,如下:
>>> a="help:20"
>>> b="help:20"
>>> id(a) >>> id(b) >>> a == b
True
>>> a is b
False
>>>
- 常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_AAA = #ps:在c语言中有专门的常量定义语法,const int count = ;一旦定义为常量,更改即会报错
- 变量的赋值
#!/usr/bin/env python
# -*- coding: utf-8 -*
n1 =
n2 = n1 >>> n1 =
>>> n2 = n1
>>> id(n1) >>> id(n2) >>> type(n1)
<class 'int'>
>>> type(n2)
<class 'int'>
- 赋值方式:
链式赋值
x=
y=x
y=x=a=
print(id(y),id(c))
交叉赋值
m=
n=
m,n=n,m
print(m,n)
- 变量的解压
#方法一 >>> num=[,,,,]
>>> num1=num[]
>>> num2=num[]
>>> num3=num[]
>>> num4=num[]
>>> num5=num[]
>>> print(num1,num2,num3,num4,num5) #方法二
#左边的变量名要与列表中的元素一一对应
>>> userid=[,,,,]
>>> user1,user2,user3,user4,user5=userid
>>> print(user1,user2,user3,user4,user5)
七、用户与程序交互
- 在Python3中
input:用户输入任何值,都存成字符串类型
- 在Python2中
input:必须输入明确的数据类型,输入什么就存成什么类型
raw_input:等于Python3的input
- 注释
单行注释用#
多行注释用''' '''或""" """
八、基本数据类型
int整型
用于标识:年龄,等级身份证号,QQ号,个数
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~
float浮点数
用于标识:工资,身高,体重
long(长整型) 了解即可
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
complex复数型(了解即可)
字符串
在Python中,加了引号的字符就是字符串类型,Python并没有字符类型
定义:name='user' #name=str('user')
用于标识:描述性的内容,如姓名,性别,国籍,种族
#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is AAA , I'm 18 years old!" #多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg) 单引号,双引号,三引号的区别
单引号,双引号,三引号的区别
#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
>>> name='abc'
>>> age=''
>>> name+age #相加其实就是简单拼接
'abc18'
>>> name*
'abcabcabcabcabc' #注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次, #注意2:只能字符串加字符串,不能字符串加其他类型 字符串拼接(只能在字符串之间进行,且只能相加或相乘)
字符串拼接(只能在字符串之间进行,且只能相加或相乘)
列表
#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['aaa','bbb','ccc',] #students=list(['aaa','bbb','ccc',])
用于标识:存储多个值的情况,比如一个人有多个爱好
#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['aaa',,['play',]],['bbb',,['play','sleep']]]
>>> students_info[][][] #取出第一个学生的第一个爱好
'play'
列表嵌套、取值
字典
#为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
>>> info=['aaa','male',]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
>>> info[] 但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:
#name, sex, age
info=['aaa','male',]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'aaa','age':,'sex':'male'} #info=dict({'name':'aaa','age':,'sex':'male'})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
info={
'name':'aaa',
'hobbies':['play','sleep'],
'company_info':{
'name':'abc',
'type':'edu',
'emp_num':,
}
}
print(info['company_info']['name']) #取公司名 students=[
{'name':'aaa','age':,'hobbies':['play','sleep']},
{'name':'bbb','age':,'hobbies':['read','sleep']},
{'name':'ccc','age':,'hobbies':['music','read','sleep']},
]
print(students[]['hobbies'][]) #取第二个学生的第二个爱好
字典相关的嵌套、取值
布尔
#布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
>>> a=
>>> b=
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True 接下来就可以根据条件结果来干不同的事情了:
if a > b
print(a is bigger than b ) else
print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
布尔类型的重点知识!!!:
#所有数据类型都自带布尔值
、None,,空(空字符串,空列表,空字典等)三种情况下布尔值为False
、其余均为真
重点:
#.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典 #. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
运算符
算术运算
以下假设变量:a=10 , b =20
比较运算
以下假设变量:a = 10, b=20
赋值运算
以下假设变量: a = 10,b=20
逻辑运算符
>>> True or Flase and False
True
>>> (True or Flase) and False
False
身份运算
#is比较的是id
#而==比较的是值
九、格式化输出(占位符)
程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式
比如要求用户输入用户名和年龄,然后打印如下格式:
My name is xxx,my age is xxx.
很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。
这就用到了占位符,如:%s、%d、%f
%s = string 字符串
%d = digit 整型
%f = float 小数
#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('lxx',))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('lxx',))
print('My name is %s,my age is %d' %('lxx','')) #报错 #接收用户输入,打印成指定格式
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 lxx -----------
Name : lxx
Age :
Sex : male
------------- end -----------------
练习
十、流程控制if..else
条件分支
单分支:
if 条件:
条件为真(True)执行的操作
else:
条件为假(False)执行的操作 多分枝:
if 条件:
满足条件执行代码
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
elif 条件:
上面的条件不满足就走这个
else 条件:
上面所有的条件不满足就走这段
score = int(input(">>:")) if score > :
print("成绩最高分数为100分")
elif score >= :
print("A")
elif score >= :
print("B")
elif score >= :
print("C")
elif score >= :
print("D")
elif score >= :
print("E")
else:
print("成绩不能是负数")
示例
十一、while循环
Python的while循环语法一:
while 条件:
条件为真(True)执行的操作
示例:
#写个让程序从0打印到100的程序,每循环一次,++ count =
while count <= :
#只要count<=100就不断执行下面的代码
print("loop" ,count)
count +=
#每次执行一次,就把count+,要不然就变成死循环啦,因为count一直是0
Python的while循环语法二:
while 条件:
条件为真(True)执行的操作
else:
上面条件不满足就走这段
count=
while count < :
if count == :
break
print(count)
count+=
# break
else:
print('else的代码块只有在while循环没有被break打断的情况下才执行(最后执行)')
示例
十二、for循环
for 只有字符串,列表,字典
>>> for item in range():
... print(item)
...
示例
十三、循环终止语句
break用于完全结束一个循环,跳出循环体执行后面的语句
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
十四、开发工具IDE
1 为何要用IDE
到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件、写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率。
很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 开发IDE
2 安装
下载地址:https://www.jetbrains.com/pycharm/download 选择Professional 专业版
Comunnity社区版是免费的,但支持的功能不多,比如以后我们会学的Django就不支持,所以还是用专业版,但专业版是收费的,一年一千多,不便宜。唉,万能的淘宝。。。不宜再多说啦。
激活码
注册完成后启动,会让你先创建一个项目,其实就是一个文件夹,我们以后的代码都存在这里面
3 创建目录
你以后写的项目可能有成百上千个代码文件 ,全放在一起可不好,所以一般把同样功能的代码放在一个目录,我们现在以天为单位,为每天的学习创建一个目录day1,day2,day3...这样
4 创建代码文件
5 执行代码
十五、扩展阅读
十六、练习题
简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型
执行 Python 脚本的两种方式是什么
Pyhton 单行注释和多行注释分别用什么?
布尔值分别有什么?
声明变量注意事项有那些?
如何查看变量在内存中的地址?
写代码
实现用户输入用户名和密码,当用户名为 seven 且 密码为 时,显示登陆成功,否则登陆失败!
实现用户输入用户名和密码,当用户名为 seven 且 密码为 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
写代码
a. 使用while循环实现输出2-+-+...+ 的和
b. 使用 while 循环实现输出 ,,,,, ,,, , 使用 while 循环实现输出 - 内的所有奇数 e. 使用 while 循环实现输出 - 内的所有偶数 现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 =
n2 = n1
练习题1
2、编写登录接口
基础需求: 、让用户输入用户名密码
、认证成功后显示欢迎信息
、输错三次后退出程序
dic={
'lxx1':{'password':'','count':},
'lxx2':{'password':'','count':},
'lxx3':{'password':'','count':}, } while True:
name=input('username>>: ') if not name in dic:
print('用户不存在')
continue
if dic[name]['count'] > :
print('尝试次数过多,锁定')
continue password=input('password>>: ') if password == dic[name]['password']:
print('登录成功')
break
else:
print('用户名或密码错误')
dic[name]['count']+=
示例
第一篇:Python入门的更多相关文章
- Python开发 第一篇 python的前世今生
Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- 第一篇:python基础
python基础 python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...
- Python之旅_第一章Python入门
一.编程语言分类 1.机器语言:即计算机能听懂的二进制语言,0000 0001,直接操控硬件: 2.汇编语言:简写的英文标识符代替二进制语言,本质同样是直接操控硬件: 3.高级语言:用更贴近人类的语言 ...
- 第一篇 Python图片处理模块PIL(pillow)
本篇包含:一.Image类的属性:1.Format 2.Mode 3.Size 4.Palette 5.Info 二.类的函数:1.New ...
- python第一篇-------python介绍
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所 ...
- Python基础第一篇-------python的介绍
一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
- 第一周python入门
第一编程语言的分类: 1.机器语言 二进制编程 直接操作硬件 优点:执行速度快 缺点:开发效率低 面向机器编程 2.汇编语言 英文标签代替一串特定的二进制,直接操作硬件 缺点开发效率低 面向 ...
- SpringBoot 第一篇:入门篇
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10819728.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 博主从去年 ...
- 小白的第一篇python博客
学习python课程三天,先了解了计算机的历史及各种发展史,python的历史及部分语法,python主要学习内容有"hello world",int常量.str字符串,print ...
- <Django>第一篇:入门的例子
1.MVT框架 Model(模型):数据库交互相关.在这部分一般需要进行三个操作: (1)面向数据库:模型对象.列表 (2)定义模型类:指定属性及类型,确定表结构(设计表),需要迁移(生成表) (3) ...
随机推荐
- Luogu P3412 仓鼠找$sugar$ $II$
Luogu P3412 仓鼠找\(sugar\) \(II\) 题目大意: 给定一棵\(n\)个点的树, 仓鼠每次移动都会等概率选择一个与当前点相邻的点,并移动到此点. 现在随机生成一个起点.一个终点 ...
- Linux中“is not in the sudoers file”解决方法
当在终端执行sudo命令时,系统提示"hadoop is not in the sudoers file": 其实就是没有权限进行sudo,解决方法如下(这里假设用户名是cuser ...
- cocos creator实现棋牌游戏滑动选牌的功能
最近在玩cocos creator,打算学着做一款类似双扣游戏的棋牌,名字叫文成三星,比双扣还要多一扣,因为需要三幅牌,在我们老家比较流行这种玩法. 目前实现了绝大部分的逻辑效果如下: 有一点不好的体 ...
- 【技术】关于安卓使用禁用服务(或者是MYANDROIDTOOLS里面的禁用服务)后卡在开机页面的(或者是卡在各种页面的)
目前会出现禁用部分服务后卡在开机页面,导致到手机数据得全部清除在网上找了很久,都没找到还原的方法只好自己开垦新方案了推测:由于格式化DATA分区后,手机可以正常开机,所以认为禁用服务的配置内容保存在D ...
- ngrx/store effects 使用总结1:计数器
本教程案例github:https://github.com/axel10/ngrx_demo-counter-and-list angular2+ 的学习成本应该是三大框架中最高的一个,教程及案例稀 ...
- c# redis 操作类库推荐:StackExchange.Redis.Extensions
StackExchange是一个优秀的c# redis客户端,但是存在操作略为繁琐的弊端,为了简化操作,使用 StackExchange.Redis.Extensions成为了一个非常值得推荐的选择. ...
- C#封装程序集属性方法注释说明
一.使用封装程序集好处: 在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方 ...
- SignalR Self Host+MVC等多端消息推送服务(1)
一.概述 由于项目需要,最近公司项目里有个模块功能,需要使用到即时获得审批通知:原本的设计方案是使用ajax对服务器进行定时轮询查询,刚刚开始数据量和使用量不大的时候还好,后来使用量的增加和系统中各种 ...
- python函数式编程之yield表达式形式
先来看一个例子 def foo(): print("starting...") while True: res = yield print("res:",res ...
- python作业01
1.编译型语言在应用源执行前,需要先通过编译将程序源代码翻译为可被硬件平台直接运维的二进制机器码,编译好的二进制执行文件仅能在对应平台运行.因此不依赖解释器,执行效率高,跨平台性差.常见的编译型语言: ...