版权声明:本文为博主原创文章,未经博主允许不得转载。
PS:转载请注明出处 作者:TigerChain 地址:http://www.jianshu.com/p/f77ce55bf495 本文出自
教程简介
- 1、阅读对象
本篇教程适合新手阅读,老手直接略过
-
2、教程难度
初级
-
3、Demo 地址:
正文
一、python 变量和数据类型
1、什么是变量
简单的说,我们可以把变量看做一个盒子,可以将零食、饮料、面包等放在里在,想像一下超市中的篮子,或是手推车,理论上你可以将任何你想存放的物品放在这个盒子里面,如图所示
更通俗的说,我们也可以拿学校的宿舍房来举例,比如,每个房间都有一个房间号,是一一对应的,我们就可以把房间号看做是变量,变量值可以看成是房间里面的人,变量的类似看做是房间的类型「是标准间还是高级间」
2、变量的声明
从前面我们知道,python 是动态语言,不需要指定变量的类型「变量的类型根据它的值确定」,我们在 python 中声明一个变量的格式是:
变量名 = 变量值复制代码
比如
a = 100 # 它就是一个整形变量b = 'TigerChain' # b 就是一个字符串复制代码
3、变量的内存分配
当我们输入 x = 5 时,内存中是如何变化的
首先,当我们输入 x = 5 的时候,python 解释器做了两件事情
- 1、在内存中创建一个存放 5
- 2、并且在内存中创建一个名字叫做 x 的指向这个 5
直接写代码来直观的感受一下,新建一个 02、python变量.py 文件「真实项目开发中,不要使用中文来命名,这里为了直观的表达,采用中文来命名」
# -*- coding: UTF-8 -*-x = 5print ("x=%d"%(x))print ("x的地址是:%d"%(id(x)))复制代码
然后 cd 02、python变量.py 所在的目录,运行
python 02、python变量.pyx=5x的地址是:140324664033288复制代码
我们可以看到输出了 5 并且 x 的地址是 140324664033288,我们来看看 x = 5 在内存的分配情况
上图代表了表达的意思是 x 指向了存储为 5 的那个地址,并且地址是:140324664033288,这里就和 c 的指针是一样的,类似于 java 中的栈内存存的地址。
- 3、把 x 赋值给 y ,我们继续修改上面的代码,看有什么情况发生
# -*- coding: UTF-8 -*-x = 5y = xprint ("x=%d"%(x))print ("x的地址是:%d"%(id(x)))print ("y=%d"%(y))print ("y的地址是:%d"%(id(y)))复制代码
我们把一个变量 x 赋值给变量 y ,然后运行查看结果
python 02、python变量.pyx=5x的地址是: 140324664033288y=5y的地址是: 140324664033288复制代码
结果一模一样,也就是说 y=x 即把 x 所指向的地址赋给了 y ,里所当然y 的值也就为5,如下图所示:
- 4、变量指向不同的值,我们再修改上面的代码,先给 x 赋值,再改变 x 的值,看看结果
x = 5 print ("x=%d"%(x))print ("x的地址是:%d"%(id(x)))x = 8print ("x=%d"%(x))print ("x的地址是:%d"%(id(x)))复制代码
运行输出
python 02、python变量.pyx=5x的地址是:140324664033288x=8x的地址是:140549470338992复制代码
内存分配如下图所示
开始 x 指向了 140324664033288 这个内存地址,并且里面存放的是5,最后 x = 8 ,改变了 x 所指向的地址。
- 5、x,y 赋相同的值,代码如下:
x = 5y = 5print ("x=%d"%(x))print ("x的地址是:%d"%(id(x)))print ("y=%d"%(y))print ("y的地址是:%d"%(id(y)))复制代码
运行查看结果
python 02、python变量.pyx=5x的地址是:140374844686328y=5y的地址是:140374844686328复制代码
得出结论就是,值相同对应的内存地址一定是相同的「在 python 中」
二、输入输出
1、输出
- 1、基本输出
在 python 中,输出我们使用 print,类似于 java 中的 System.out.print.
使用 print 直接跟着想输出的内容打印到控制台中
例如,在控制台输出 hello world, 当然 print 可以输出多个字符串,用逗号分隔即可
# python2 上可以支持,在python3上会报错print "hello world"# python2 和 3 上都支持print("hello world")# 输出多个字符串在 python2 中去掉 () 即可print("hello world","Hi TigerChain")x = 13print xy = 13.56print y复制代码
运行查看结果
- 2、输出一个美女
print("******************************************************************")print("* .::::. *")print("* .::::::::. *")print("* ::::::::::: *")print("* ..:::::::::::' *")print("* '::::::::::::' *")print("* .:::::::::: *")print("* '::::::::::::::.. *")print("* ..::::::::::::. *")print("* ``:::::::::::::::: *")print("* ::::``:::::::::' .:::. *")print("* ::::' ':::::' .::::::::. *")print("* .::::' :::: .:::::::'::::. *")print("* .:::' ::::: .:::::::::' ':::::. *")print("* .::' :::::.:::::::::' ':::::. *")print("* .::' ::::::::::::::' ``::::. *")print("* ...::: ::::::::::::' ``::. *")print("* ```` ':. ':::::::::' ::::.. *")print("* '.:::::' ':'````.. *")print("******************************************************************")复制代码
运行查看:
- 3、格式化输出
python 中有两种格式化输出的方式
「1」 一种是格式化表达式
类似于 c 中的 printf 输出参数一样
%d 十进制整型%s 字符串%f 浮点型%x 十六进制%o 八进制%r 万能占位符,什么都可以用复制代码
比如:
x = 0x123print("0x123 的进制输出---十六进制:%x,十进制:%d,八进制:%o"%(x,x,x))y = '你好'c = 13.56d = 13print("%s,%f,%d"%(y,c,d))复制代码
运行输出
「2」 一种是格式化方法
使用 format() 格式化方法
比如:
print('{0} {1} {2}').format('Hello','ThgerChain',"Good")复制代码
其中 {0} ... 就像是一个占位符,后面才是真正的值填充到占位符中
运行输出
2、输入
我们在 ATM 上取钱的时候,肯定要输入密码,那么这就是一个输入的过程,输出的肯定是钱
- 1、pthon 中输入语法「python2 和 python3 中有区别」
在 python2 中输入:raw_input()
在 python3 中输入:input()
输入返回的是一个字符串,我们可以使用 type() 来检测某个变量的类型
例如:一个简单的乘法
num = raw_input("请输入数字:")print type(num) # 可以检 num 的类型print(num+"*2=%d"%(int(num)*2))复制代码
运行输出:
python 03、输入和输出.py请输入数字:11*2=2复制代码
- 2、一个简单的取款机 demo
「1」、效果图
「2」、代码
# 定义密码输入次数inputPasscount = 0# 提示你是否插入银联卡 输入 yes 即可chaka = raw_input('你是否插入银联卡:')if(chaka=='yes'): password = int(raw_input('请输入卡密码:')) # 只给你三次输入密码的机会,错了卡就被吞了 while inputPasscount < 3: if(password==123456): money = raw_input('输入你要取的钱数:') if money.isdigit():# 全部是数字则正确 print("你成功的取了 %d "%(int(money))+"元") break else: print("请输入正确的金额") else: if inputPasscount == 2: print("密码输错三次,卡被锁定,请联系管理员") break password = int(raw_input('输入的密码错误,请重新输入:')) inputPasscount += 1复制代码
三、关系运算和逻辑运算符
1、关系运算符
关系运算符是用来描述某种关系的,它不能单独使用,要用在一个表达式中,格式如下
左边 运算符 右边复制代码
运算符号 | 说明 | 举例 |
---|---|---|
== | 用来检测两个值是不是相等,如果相等返回 True ,否则返回 False | a = 1 b = 1 a=b为true |
!= | 如果两个值不相等,返回True,否则返回 False | a=1,b=1 a!=b 为False |
<> | 如果两个值不相等,返回True,否则返回 False | a=1,b=1 a!=b 为False ,类似于 != |
> | 如果左边的数据大于右边则返回 True ,否则返回 False | a=4,b=3 a>b 返回 True |
< | 如果左边的数据小于右边则返回 True ,否则返回 False | a=3,b=4 则 a<b 返回 True |
>= | 如果左边的数据大于等于右边则返回 True ,否则返回 False | a=4,b=3 a>=b 返回 True |
<= | 如果左边的数据小于等于右边则返回 True ,否则返回 False | a=3,b=3 则 a<=b 返回 True |
2、逻辑运算符
运算符号 | 说明 | 举例 |
---|---|---|
and | 一假必假,如果用 and 连接起来的有一个为假则整个为假 | if(a==1 and y==2):print("xxxx") |
or | 一真必真,如果用 or 边境起来的有一个为真整个为真 | if(a==1 or y==2):print("xxxx") |
not | 真假相对,本身是真使用 not 就变为假,反之 | if(not(a==1)):print("xxxx") |
四、条件语句
1、条件语句 if
「1.1」
if 是用来做条件判断有,格式如下
if 条件成立: 处理想要处理的事情 复制代码
demo1:如果你 18 岁了,你就可以看血腥电影了
# -*- coding:UTF-8 -*-a = int(raw_input('请输入你的年龄:'))if a>=18: print("你可以看血腥的电影了")复制代码
运行看结果
python 04、if语句.py请输入你的年龄:18你可以看血腥的电影了复制代码
「1.2」
if 的嵌套,格式如下
if 条件1成立: 处理满足条件1,要做的事 ... if 条件2成立: 处理满足条件2,要做的事情 ...复制代码
demo2: 如果你 18 岁并且不害怕恐怖事件,那么你可以看血腥电影
修改 demo1
# 输入年龄a = raw_input('你是否年满18岁?回答 yes 或 no :')if a=='yes': # 年龄满足 print('年龄符合了!请继续输入问题') # 对恐怖事件的看法 b = raw_input('面对恐怖电影你会非常害怕吗?回答 yes 或 no :') if b =='yes': #满足条件 print("你可以看恐怖血腥的电影了!!!")复制代码
运行查看结果:
2、if-else 语句
使用场景就是如果 if 的情况不满足我们的要求时我们还要干某些事情,我们如何办?使用 else
格式:
if 条件成立: 干某些事情 else: 不满足条件要干某些事情 复制代码
demo1:如果查询你的考试得了 90 分以上,就要以出去旅游,否则就在家里学习
# 导入随机数模块import randomprint("查看考试成绩:1、查询 ")inputStr = int(raw_input())if(inputStr == 1): # 生成 80 - 100 的随机整数 a = random.randint(80, 100) if a >=90: print("你的成绩是 %d 分,恭喜你可以出去旅游,地点随便选"%a) else: print("很遗憾,没有到 90 分,你还需要加油!争取下次旅游")else: print("请输入正确的查询指令!!!")复制代码
运行查看结果:
3、elif 语句
if-else 如们实现的是当满足条件的时候我们做事情1,否则做事情2,我们如果有以下场景,当...1 的时候做事情 1 ,当... 2 的时候做事情 2,当 ... 3 的时候估事情 3 ..... 这种情况,我们就可以使用 elif
PS:这里要注意一点,elif 必须和 if 一起使用,不能单独使用
格式如下:
if 满足条件1: 做事情1 elif 满足条件2: 做事情2 elif 满足条件3: 做事情3复制代码
demo1: 如果你有 10 万你就是十万元户,如果有 100 万就是百万富翁,有 1000万就是千万富翁,超过千万你真是土豪。
# -*- coding:UTF-8 -*-money = int(raw_input("请输入你的财富,输入整数「代表万元」即可:"))if money>10 and money<100: print("你是十万元户,努力哦")elif money>=100 and money<1000: print("你小有成就,不错,都是百万富翁了")elif money>=1000 and money<10000: print("千万富翁,约吗?")elif money>=10000: print("靠,你真是土豪,带我装逼带我飞好吧")else: print("得瑟啥呢,好好努力赚钱吧,还不好好的学习 python ,看看 TigerChain 的简书吧")复制代码
运行查看结果:
2、循环语句
我们前面学习了输出,现在有一个需求把 100 输出1万遍,你肯定就疯了,循环就很好的解决这个问题
1、while 循环
格式:
while 条件: 条件满足,做某些事情 ....复制代码
demo1:输出1-100的和
# 定义结果 变量total = 0# 定义循环条件变量i = 1while i<=100: # 把上一次的结果+1 然后赋值变成新的 total=total+i # 循环+1 i+=1print ("1~100的和是:%d"%total)复制代码
运行查看结果:
python 07、while循环.py1~100的和是:5050复制代码
demo2: 计算 1-100 中奇数的和
total = 0i = 1while i<=100: total = total+i # 奇数的算法 i+=2print("1~100的所有奇数和是:%d"%total)复制代码
运行查看结果:
python 07、while循环.py1~100的所有奇数和是:2500复制代码
demo3:输入用户名和密码直到正确为止
# 输入用户名username = raw_input('请输入用户名:')# 输入用户密码password = raw_input('请输入密码:')# 如果用户名和密码不对,那么就提示错误,再次输入while username!='admin' or password!='123456': print('用户名或密码错误,请重新输入') username = raw_input('请输入用户名:') password = raw_input('请输入密码:')# 如果输入成功,则提示print("欢迎 %s 登录"%username)复制代码
运行查看结果:
demo4:用户不断的输入一个数字,直到输入 bye 则退出程序
while True: num = raw_input("请输入一个数字「直到输入 bye 就结束了」:") if num=='bye': print('结束了') break else: print num复制代码
运行查看结果
当然了,while 还可以嵌套使用,格式
while 条件: 满足条件,做某些啥事情 ... while 条件: 满足条件,做某些啥事情 ... 复制代码
demo5:使用 while 嵌套打印九九乘法表
#初始一个变量xx=1#判断x小于等于9while x<=9: #初始一个变量y y=1 #确定y的循环次数,小于等于x while y<=x: #格式化打印输出 print y,'*',x,'=',y*x,' ', #计数器 y+=1 #打印换行,前面用逗号隔开过,没有这行代码就连成一片了。 print #外围的另一个计数器 x+=1复制代码
运行查看结果
python 07、while循环.py1 * 1 = 11 * 2 = 2 2 * 2 = 41 * 3 = 3 2 * 3 = 6 3 * 3 = 91 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 161 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 251 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 361 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 491 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 641 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81复制代码
2、for 循环
在 python 和其它语言类似,除了 while 循环,还可以使用 for 循环,格式如下
for 临时变量 in 列表或字条串 循环体复制代码
demo1:循环打印字条串中每个值
name = 'TigerChain'for x in name: print x复制代码
运行查看结果:
python 08、for循环.pyTigerChain复制代码
demo2:定义一个姓名列表,然后打印出每个名字
names=["张三","李四","王五"]for name in names: print name 复制代码
运行查看结果:
python 08、for循环.py张三李四王五复制代码
for 循环也是可以嵌套的,我们来使用 for 循环来打印九九乘法表
demo3:for 循环打印九九乘法表
在这里我们要使用一个 range 函数格式如下:
range(start, end, scan)复制代码
range:一个范围,默认从 0 开始 ,参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0,10)取 0-9的值,range(0,10,2),最后一个数是间隔的意思,这句就是输出 0-9 每次间隔 2 的一个列表「数组」
输出结果是:[0, 2, 4, 6, 8]
for i in range(1,10): for j in range(1,i+1): result = i * j print j, 'x', i, '=', j*i ,'\t', print ''复制代码
运行查看结果:
python 08、for循环.py1 x 1 = 11 x 2 = 2 2 x 2 = 41 x 3 = 3 2 x 3 = 6 3 x 3 = 91 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 161 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 251 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 361 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 491 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 641 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81复制代码
3、break 和 continue
break 和 continue 用在循环体中,其中 break 是直接跳出循环,continue 是跳出本次循环,继续下一次循环
demo1:输入字符串,遇到 o 就退出
a = raw_input("输入字符串「直到输入 o 就不会输出 o 之后的字符」:")for x in a: if x=='o': break print x复制代码
运行查看结果:
输入字符串「直到输入 o 就不会输出 o 之后的字符」:12412qwoqwert12412qw复制代码
我们可以看到,o 以后的字符没有被输出
demo2:输入字符串,只过滤不输出 o 其它的输出
a = raw_input("输入字符串「输出过滤 o 之后的字符」:")for x in a: if x=='o': continue print x复制代码
运行查看结果:
输入字符串「输出过滤 o 之后的字符」:123o321123321复制代码
我们就把 o 过滤掉了
到此为止,我们把 python 的基础知识就说完了。
本文的 Demo 地址:
据说每个勤奋、聪明、能干的人都会点喜欢。