python 全栈开发,Day1(python介绍,变量,if,while)
python基础一
一,Python介绍
python的出生与应用
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
目前Python主要应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
二,计算机基础
cpu:
相当于人的大脑,运算与控制中心。
速度 飞机
内存:暂
时存储,供给CPU数据。
速度 高铁。成本高,断电即消失。
硬盘:
相当于电脑的数据库,存储着大量的数据,文件,音频文件。
速度 走。成本低
操作系统:
执行者,支配所有关系。windows,linux,mac...
python流行的原因
1.大量第三方库
2.Diango
三、python的历史
Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。
python 2x和3x在同一年诞生,2x是10月,3是12月
python 2x:源码混乱,重复代码较多,冗余。
python 3x: 源码规范,崇尚优美、清晰,简单
四、python 2x,python 3x的区别
1.print方法有区别
python 3x print('内容')
python 2x print()或者print '内容'
2.编码方式不一样
python 3x 默认编码:utf-8
python 2x 默认编码: ascii 只包含英文字母和特殊字符以及数字
不支持中文
解决方式:
在头部增加
- # -*- coding: utf-8 -*-
3.input不同
python 2x: raw_input()
python 3x: input()
五、开发语言的分类
解释型:当程序运行时,将代码一行一行的解释成二进制,再运行。
优点:排错快,开发效率高,可以跨平台
缺点:执行效率相对低
典型:python,
编译型:将代码一次性全部编译成二进制,然后运行。
缺点:排错慢,开发效率低,不能跨平台(操作系统)。
优点:执行效率高
典型:C
python的种类
CPython 默认解释器,转换为字节码,再转换为c语言010101...
IPython
PyPy 一次性全部转化成二进制,执行效率高。
Jython 把Python代码编译成Java字节码执行
IronPython
虽然解释器不同,但是写python代码的规则还是统一的。
六、运行第一个python程序
如果想要windows电脑同时有2个python环境,Python2.7和Python3.5
先安装python2.7
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
勾选添加环境变量
再安装python3.5
选择自定义安装,勾选添加环境变量
安装路径设置为C:\Python35
进入目录C:\Python27
将python.exe更改为python2.exe
打开windows命令行模式
输入python2就是2.7版本
输入python就是3.5版本
新建一个test.py文件,内容如下
- print('你好,世界')
使用命令行方式
我的代码路径在E:\python_script\day1
进入目录,执行代码
使用python2执行
执行报错
因为默认python2x编码是ascii,不支持中文
在第一行添加
# -*- coding: utf-8 -*-
再次执行,就可以了
如果python安装完成之后,发现执行python有问题时
可以把所有python版本卸载,重新安装一次,确保环境变量已经删除,文件后缀是可以显示的。
七、变量
变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。
变量定义的规则:
1,变量必须由数字,字母,下划线任意组合。
2,变量不能以数字开头。
3,变量不能是python中的关键字。(不用背)
['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']
4,变量要具有可描述性。
5,变量不能是中文。
6,变量不能太长。
7,官方推荐:
- #驼峰体
- AgeOfOldboy = 56
- NumberOfStudents = 100
- #下划线
- age_of_oldboy = 56
- number_of_students = 80
一般推荐使用第2种,也就是下划线的方式。
下面几个例子,判断变量名是否合法
- w__ = 22
- e_a_ = '太白'
- e$ = 'fdsa'
- -_ = '15'
- 2g = 33
- __ = '老村长'
3,4,5行的变量,是不合法的,其他的都是合法的。
赋值计算
先计算等号右边的,把计算的值赋值给左边的
python是解释型语言,代码是一行一行执行
后面的变量会覆盖前面的。
- age1 = 12
- age2 = age1
- age3 = age2
- age2 = 6
- print(age1,age2,age3)
执行输出
12 6 12
看一个图
age1~3的值,存储在内存中。当age2等于6时,age2值的指向就发生了变化,值为6
7.常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
默认全部大写的变量,称之为常量。
- CITY_LIST = 'beijing'
11.注释
为什么有注释?
帮助你记起之前的代码,或者帮助别人看懂你的代码
不宜多,精就行
单行注释: #被注释内容
多行注释: '''被注释内容''' 或者 """被注释内容"""
- #定义一个变量
- name1 = "taibai"
- '''
- 虞美人·碧苔深锁长门路
- 清代:王国维
- 碧苔深锁长门路。总为蛾眉误。自来积毁骨能销。何况真红一点臂砂娇。
- 妾身但使分明在。肯把朱颜悔。从今不复梦承恩。且自簪花坐赏镜中人。
- '''
八、基础数据类型初始
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长整型
字符串类型(str)
在Python中,加了引号的字符都被认为是字符串!
- msg = "My name is xiao,I'm 22 years old!"
- num = '12'
这种会出错
- msg = "My name is xiao,I"m 22 "years old!"
双引号,只看2头的,从左到右
一般3个引号的,用到多行的场景,有行号符的。
一行很少用3个引号的
- shi = '''
- 马汗踏成泥,朝驰几万蹄。
- 雪中行地角,火处宿天倪。
- 塞迥心常怯,乡遥梦亦迷。
- 那知故园月,也到铁关西。
- '''
- print(shi)
执行输出
马汗踏成泥,朝驰几万蹄。
雪中行地角,火处宿天倪。
塞迥心常怯,乡遥梦亦迷。
那知故园月,也到铁关西。
3个单引号,没有赋值,是用来注释的
比如上面的唐诗《虞美人·碧苔深锁长门路》
字符串只能相加和相乘
相加
- n1 = '她的名字是'
- n2 = '南宫紫菱'
- n3 = n1 + n2
- print(n3)
执行输出
她的名字是南宫紫菱
相乘
- n1 = '我好爱你!'
- print(n1 * 3)
执行输出
我好爱你!我好爱你!我好爱你!
九、布尔值(True,False)
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断
- print(1 > 2)
执行输出
False
返回false
布尔值是不带引号的
- print(1 > 2 and 3 < 4 or 4 > 5)
执行输出
False
布尔值判断时,如果出现false,结果返回false
九、查看数据类型
使用type()方法
- n1 = 'nan'
- n2 = False
- n3 = 'False'
- print(type(n1))
- print(type(n2))
- print(type(n3))
执行输出
<class 'str'>
<class 'bool'>
<class 'str'>
十、用户交互 input
input出来的数据类型,都是字符串
- name = input('请输入你的名字: ')
- age = input('请输入你的年龄: ')
- hobby = input('请输入你的爱好: ')
- s = '我的名字是' + name + '\n我的年龄是' + age + '\n我的爱好是' + hobby
- print(s)
执行效果
十一、if语句
第一种结构
- if 条件:
- 结果
举例
- if 3 > 2:
- print(666)
执行输出
666
第二种结构
- if 条件:
- 结果
- else:
- 结果
举例
- if 3 > 2:
- print(666)
- else:
- print(333)
执行输出
666
第三种结构
- if 条件1:
- 结果1
- elif 条件2:
- 结果2
- elif 条件3:
- 结果3
举例
- choice = input('请输入你猜的数字:')
- if choice == '2':
- print('我请你吃饭')
- elif choice == '6':
- print('免一周作业')
- elif choice == '3':
- print('一起去玩耍')
执行输出
第4种结构
- if 条件1:
- 结果1
- elif 条件2:
- 结果2
- elif 条件3:
- 结果3
- else:
- 结果4
举例
- choice = input('请输入你猜的数字:')
- if choice == '2':
- print('我请你吃饭')
- elif choice == '6':
- print('免一周作业')
- elif choice == '3':
- print('一起去玩耍')
- else:
- print('输入错误')
执行输出
== 表示做比较
= 表示赋值
第5种结构
- if 条件:
- if 条件:
- 结果
- else:
- 结果
- else:
- 结果
只要需求存在,就可以一直嵌套if
举例
- age = int(input('请猜我的年龄:'))
- if True:
- if age == 18:
- print('恭喜你猜对了')
- else:
- print('这都看不出来...')
- else:
- print('输入错误')
执行输出
字符串之间不能比较大小,只能比较相等
int ---> str str(12) 转换成字符串,使用str()
str ---> int int(12) 全部由数字组成的字符串才能转化为数字
十二、while循环
用来执行重复的代码
- while True:
- print('痒')
- print('凉凉')
- print('体面')
- print('社会摇')
执行输出
痒
凉凉
体面
社会摇
...
while True 代表死循环
另外一个例子
- print(222)
- while True:
- print(111)
- print(333)
- print(444)
执行输出
222
111
333
111
333
....
444永远不会执行
跳出循环的条件:
1.改变条件
2.breck
标志位flag
从1打印到100
- #标志位
- flag = True
- #初始值
- count = 1
- while flag:
- #第一次,打印初始值。之后打印自增值
- print(count)
- #循环一次,自增1
- count = count + 1
- #当等于100时,循环终止
- if count == 100:
- #打印100
- print(count)
- flag = False
执行输出
1
2
3
...
100
第2种写法
- #初始值
- count = 1
- while count < 101:
- #第一次,打印初始值。之后打印自增值
- print(count)
- #循环一次,自增1
- count = count + 1
执行输出,效果同上
breck:结束循环
- while True:
- print(111)
- print(222)
- break
- print(333)
执行输出
111
222
遇到breck,终止循环,下面的代码不执行
continue:结束本次循环,继续下一次循环。
continue 相当于见底了
- while True:
- print(111)
- print(222)
- continue
- print(333)
执行输出
111
222
....
333永远不会执行,为什么呢?遇到continue时,下面代码不执行,继续执行下一次循环,由于循环无法终止,所以最后一行代码,始终不会执行。
使用breck方式,打印1到100
- #初始值
- count = 1
- while True:
- #第一次,打印初始值。之后打印自增值
- print(count)
- #循环一次,自增1
- count = count + 1
- if count == 101:
- break
- 执行输出1到100
执行输出1到100
十三、相关练习题
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、用户登陆(三次机会重试)
习题分析:
1、使用while循环输入 1 2 3 4 5 6 8 9 10
观察题目,发现1~10,少了一个数字7
思路如下:
1.先输出1~10
- #初始值
- count = 0
- while count < 10:
- count = count + 1
- print(count)
执行输出1~10
2.遇到7的时候,不执行print()就可以了
如果直接用breck,那么循环就终止了。这个时候,需要用到continue了
最终代码如下:
- #初始值
- count = 0
- while count < 10:
- #自增1
- count = count + 1
- #判断为7时,终止此次循环,继续下一次循环
- if count == 7:
- continue
- print(count)
执行输出
1
2
3
4
5
6
8
9
10
2、求1-100的所有数的和
思路如下:
1.先输出1~100
- #初始值
- count = 0
- while count < 100:
- #自增1
- count = count + 1
- print(count)
2.需要定义一个总和变量the_sum,每次要向前推进加数字,就比如吃豆游戏一样
- #初始值
- count = 0
- #总和的初始值
- the_sum = 0
- while count < 100:
- #自增1
- count = count + 1
- the_sum = the_sum + count
- print(the_sum)
- print(the_sum)
执行输出
1
3
6
...
5050
上面的代码,我把每次相加的结果给打印出来了。
0+1+2+3+....+100
计算过程是从左至右的,0+1=1,再计算1+2=3,再计算3+3=6....
解释一下代码执行过程
第一次count=0,the_sum=0 执行到第7行时,count=1,那么the_sum结果1,所以输出1
第二次count=1(因为whlie循环会迭代),执行到第7行时,count=2(1+1=2),那么the_sum的结果为3。因为第一次the_sum的值为1,所以这里为1+2=3
第三次,count=2,执行到第7行时,count=3,那么the_sum的结果为6(3+3=6)
所以最终结果为4950+100=5050
3、输出 1-100 内的所有奇数
先来介绍求奇数和偶数的方法
用数字和2整除,取余 %
等于1为奇数
等于0为偶数
思路和第2题类似
1.先输出1~100
- #初始值
- count = 0
- while count < 100:
- #自增1
- count = count + 1
- print(count)
执行输出1~100
2.用count和2整除取余,如果为1,输出数字,否则不输出
- #初始值
- count = 0
- while count < 100:
- #自增1
- count = count + 1
- #取余,和2整除
- yushu = count % 2
- #为1表示奇数
- if yushu == 1:
- print(count)
执行输出
1
3
5
...
99
4、输出 1-100 内的所有偶数
方法和第3题类似,把取余部分修改一下
- #初始值
- count = 0
- while count < 100:
- #自增1
- count = count + 1
- #取余,和2整除
- yushu = count % 2
- #为0表示偶数
- if yushu == 0:
- print(count)
执行输出
2
4
6
...
100
5、求1-2+3-4+5 ... 99的所有数的和
从这个公式可以发现出规律
为偶数的是做减法
为奇数的是做加法
思路:
在第二个题目基础上来做,第二个是1到100的求和
1.先把第2题的代码贴过来
2.在此基础上做一下稍微的改动,最终代码如下:
- # 初始值
- count = 0
- #计算最终值的初始值
- final_value = 0
- while count < 99:
- #自增1
- count = count + 1
- #取余,和2整除
- yushu = count % 2
- # 为1表示奇数
- if yushu == 1:
- # 做加法运算
- final_value = final_value + count
- print(final_value)
- # 偶数
- else:
- # 做减法运算
- final_value = final_value - count
- print(final_value)
- print(final_value)
执行输出
1
-1
2
...
50
最终结果为50
注意: 这里最后一个数字是99,而不是100,所以是while count < 99
上面的代码,我把每次计算的结果给打印出来了。
0+1-2+3-4....+99
计算过程是从左至右的,0+1=1,再计算1-2=-1,再计算-1+3=2....
解释一下代码执行过程
第一次count=0,final_value=0,执行到第7行时,count=1。做取余计算 1 / 2,结果为1。
if判断等于1,结果成立,所以为奇数。计算等式final_value + count 也就是0+1=1,输出1
第二次count=1,final_value=1,执行到第7行时,count=2。做取余计算 2 / 2,结果为0。
if判断等于1,结果不成立,所以为偶数。计算等式final_value - count 也就是1-2=-1,输出-1
第三次count=2,final_value=-1,执行到第7行时,count=3。做取余计算 3 / 2,结果为1。
if判断等于1,结果成立,所以为奇数。计算等式final_value + count 也就是-1+3=2,输出2
所以最终结果为-49+99=50
6、用户登陆(三次机会重试)
思路
1.先来做简单的登录验证
- username = input('请输入用户名:')
- password = input('请输入密码:')
- if username == "xiao" and password == '123':
- print('ok')
- else:
- print('登录失败超过三次,请稍后重试!')
2.用while循环来执行输入框,可以无限次尝试登录
- while True:
- username = input('请输入用户名:')
- password = input('请输入密码:')
- if username == "xiao" and password == '123':
- print('ok')
- else:
- print('登录失败超过三次,请稍后重试!')
3.做一个变量用来记录登录失败次数,初始为0,如果登录失败,次数加1。达到3次,直接结束程序。
- #登录次数
- logins = 0
- while True:
- #判断登录次数
- if logins == 3:
- print('登录失败超过三次,请稍后重试!')
- break
- username = input('请输入用户名:')
- password = input('请输入密码:')
- #判断用户名和密码
- if username == "xiao" and password == '123':
- print('ok')
- break
- else:
- #次数加1
- logins += 1
- print('登录失败!')
执行输出
python 全栈开发,Day1(python介绍,变量,if,while)的更多相关文章
- python 全栈开发:python基础
python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
- Python 全栈开发一 python初识
1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- Python 全栈开发二 python基础 字符串 字典 集合
一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...
- Python 全栈开发三 python基础 条件与循环
一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发
Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“ ...
- Win10构建Python全栈开发环境With WSL
目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
随机推荐
- 3、Python-字符串
下标 name = 'abcdef' print(name[0]) print(name[1]) print(name[2]) # a # b # c 切片 # 切片的语法:[起始:结束:步长] na ...
- Kafka 0.10 Coordinator概述
由Kafka内置实现了失败检测和Rebalance(ZKRebalancerListener),但是它存在羊群效应和脑裂的问题,客户端代码实现低级API也不能解决这个问题.如果将失败探测和Rebala ...
- Java记录-SpringMVC整合Echarts画地图加散点图
1.搭建eclipse+JDK+Maven+SpringMVC+Spring+Mybatis后台架构,详细就不过多阐述了 2.下载百度eharts插件:http://echarts.baidu.com ...
- 拖放排序插件Sortable.js 兼容好及功能全个人觉得比dragula.js 好的多
经测试,Sortable.js 兼容好和使用方便都是比较不错的,特别手机端使用很棒 介绍 Sortable.js是一款轻量级的拖放排序列表的js插件(虽然体积小,但是功能很强大)下载地址:https: ...
- 如何使用Ajax从FastReport Web API获取报表
在文章“如何在ASP.NET Web API中使用FastReport.Net”中,我们已经讨论了如何创建一个用于生成报表的Web服务.然后我们会收到报表的链接,现在我们来看看如何获取报表并使用a ...
- Python实现Plugin
1. Plugin与Python 插件的历史最早可追溯至1970年代,它是一种程序组件,通过和应用程序的互动,为应用程序增加一些所需要的特定的功能[维基].插件允许第三方开发者对已有的程序功能进行扩展 ...
- 发现一sonar-runner bug
最近在使用sonar-runner做代码扫描, 在windows环境运行多模块的扫描ok,但是在linux上sonar-runner扫描多模块报错: 先贴sonar-project.propertie ...
- USB摄像头无法正常读取问题
opencv读取摄像头或者视频一种是早期版本的IplImage结构体,图片就存在结构体指针IplImage*中,另一种是Mat类,两者在操作上略有差异,且opencv2都兼容这两个版本,前面的博客也说 ...
- 【文件】java生成PDF文件
package test; import java.awt.Color; import java.io.FileOutputStream; import org.junit.Test; import ...
- MR数据生成工具指向目录
mrDataTidy_SaveTwoDays.jar 原始路径 :D:\太原MR数据\一天数据整理 目标路径 : D:\MR现场数据整理\保存两天_整理后数据 例如 当前时间:2017-5-17 10 ...