python的for语句中i未被定义_Python成长之路第一篇(4)_if,for,while条件语句

有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句

一、万恶的加号

以前我们在print的时候如果要加上变量都有是使用+来作为连接,但是这样做是不好的

因为在使用加号的时候,会在内存中开辟新的内存地址来存放新的内容这样做的坏处就是增加了内存的消耗

867887-20160203163136897-1021365021.png

那么我们该怎么办呢?

(1)字符串格式化

①内置占位符

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

类如上述例子我们换种写法:

>>> a = "abc"

>>> print ("sssss%s" %(a))

sssssabc

我们主要到这里多了一个%s这里的%s我们称之为占位符,针对数据类型的不同我们有很多占位符

867887-20160203163139350-286819248.png

②自定义占位符format函数

aa = "dsadsa{ss}"

print(aa.format(ss='ccccc'))

dsadsaccccc

在print中的ss=‘ccccc’可以替换成变量这样就不用考虑数据的类型了

二、两个变量的值的替换

在一些算法中我们需要用到将变量的值进行替换

方法1:

>>> a = 1

>>> b = 2

>>> c = a

>>> a = b

>>> b = c

>>> print (a,b)

2 1

这样我们使用另外一个变量,来暂时中转a的值这样我们多出了一个变量看起来不高端那么还有别的方法么?

方法2:

>>> a = 1

>>> b = 2

>>> print(a,b)

1 2

>>> a,b = b,a

>>> print (a,b)

2 1

是不是很好玩

三、布尔表达式

布尔表达式就是判断真假,也就是True和False,计算机的机器代码由1和0来表示所以,1表示有也表示真,0表示无也表示假。

我们来看下面的例子:

从下面的例子可以看出1等于True真的时候返回值是True真也就是对的,当0等于True的时候返回值是假也就是错的,当0等于假的时候返回值是True也就是正确。

>>> 1 == True

True

>>> 0 == True

False

>>> 0 == False

True

例2:下面的例子也可以知道,当值为空的时候,布尔表达式认成为假

>>> bool('')

False

>>> bool('a')

True

四、if语句

(1)python中的if语句跟其他语言一样也是做逻辑判断用的,比如我们要实现这么一个

需求(1):

如果用户输入的值为a则输出欢迎,否则输出翻滚吧xxx

inpot = input("请输入名称:")

if inpot == "a" :

print('欢迎您:%s'%(inpot))

else:

print('翻滚吧:%s'%(inpot))

867887-20160203163141100-369157627.png867887-20160203163142147-838663826.png

需求(2):

如果用户输入的值为a则输出欢迎,如果用户输入的值为b则输出欢迎主任视察,否则输出翻滚吧xxx

inpot = input("请输入名称:")

if inpot == "a" :

print('欢迎您:%s'%(inpot))

elif inpot == "b":

print('欢迎主任[%s]视察'%(inpot))

else:

print('翻滚吧:%s'%(inpot))

从上面的两个例子可以看出,python没有shell脚本中的case,而变成了if中的elif,在if语句中我们可以只使用if,而不用else。

五、while循环

为什么会存在while循环呢,因为我们需要做一些重复的事情,比如我们要打印 1-100安装常理我们不就需要print 1 print 2 。。。。。print100非常的浪费代码所以呢我们可以这么干

(1)while循环-计数器

x = 1 #先设置一个变量的值为1

while x <= 100: #当x的值小于等于100时运行下面的代码

print(x) #打印x的值

x = x+1 #每次循环x都加1 ,第一次循环就是 x(1)+1= 2 第二次就是x(2)+1=3以此类推

这样的语句方式称之为计数器

(2)while死循环

我们知道布尔表达式中的真,这里我们可以跟while结合变成一个死循环,那么死循环不是一直都在运行的么,

那怎么办,python提供break可以退出当前循环,我们结合之前的练习来试一下

练习1:

需求:写一个输入员工姓名就可以查询到员工的电话和编号的程序,要求可以持续查询,除非用户输入退出的命令则结束

python3.5环境

#!/usr/bin/env python

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

address = {

'a':{

'number':'01',

'phone':'110'

},

'b':{

'number':'02',

'phone':'119'

},

'c':{

'number':'03',

'phone':'120'

}

}

while True:

inpu = input("请输入查询的用户名:")

if inpu in address.keys(): #address.keys()表示获取字典的所有key(键)

print("当前用户:%s"%(inpu))

print('用户编号是:%s'%(address[inpu]['number']))

print('用户电话是:%s'%(address[inpu]['phone']))

elif inpu == "exit" :

print('谢谢使用再见')

break

else:

print("您输入的用户[%s]不存在"%(inpu))

结果:

867887-20160203163143491-725114411.png

六、for循环

(1)初识for循环

while语句非常的灵活,但是有些特定条件while循环使用起来非常复杂,比如说有一个列表,想要分别打印列表中的内容,用while也可以实现,但是就没有for循环那么简单了,我们来对比一下我们有一个列表

a = ['a','b','c','d']我们分别用while和for来打印出列表中的每个元素

while:

a = ['a','b','c','d']

x = 0

while x < len(a): #len(a)的值为4,那么列表a的索引是从0-3的所以这里是x小于len(a)

print(a[x])

x = x+1

for:

a = ['a','b','c','d']

for i in a:

print(i)

对比之后呢至少for循环少了两行代码

for循环代码中的 for i in a:表示i从头到a序列中取值,所以第一次循环 i = a第二次 i = b以此类推

(2)range函数

还记得while循环打印1-100么,这里我们可以使用for加range函数来实现:

for i in range(1,101): #为什么这里写1-101,因为range函数的特性,如果是1-100他就会生成1-99

print(i) #所以这里是1-101

range函数的工作方式类似于分片

(3)for循环字典

注:字典元素的顺序没有定义的,也就是说当你for循环出来的字典的键值对是没有顺序的

方法1:

a = {

"a":"aa",

"b":"bb",

"c":"cc"

}

for key in a:

print ('欢迎【%s】,您的信息是(%s)'%(key,a[key]))

方法2:

a = {

"a":"aa",

"b":"bb",

"c":"cc"

}

for key,value in a.items():

print ('欢迎【%s】,您的信息是(%s)'%(key,value))

结果867887-20160203163144335-738508389.png

第二种发放使用到了items函数,也就是把字典a转换成了([('b', 'bb'), ('a', 'aa'), ('c', 'cc')])这种结构在分别赋值给key和value

七、跳出循环

(1)break,之前介绍过的跳出当前循环

(2)contiune一般用于if语句,也就是说进入当前的判断后没必要继续判断下去就可以使用它

例子:

for i in range(1,6):

if i == 3 :

print('ok')

continue #当i等于3时,输出ok并且结束此次判断也就是不执行else了

else:

print(i)

结果:867887-20160203163145007-1091899732.png

(3)pass

跟英文的意思一样过掉,什么都不做

for i in range(1,6):

if i == 3 :

print('ok')

continue

elif i == 4 :

pass

else:

print(i)

结果867887-20160203163145913-1511144407.png

八、运算

Python算术运算符

867887-20160203163147632-644268420.jpg

Python比较运算符

867887-20160203163149100-1206612325.jpg

Python赋值运算符

867887-20160203163151288-1355796929.jpg

Python位运算符

867887-20160203163152913-1266233372.jpg

Python逻辑运算符

867887-20160203163154804-1629379699.jpg

Python成员运算符

867887-20160203163155772-1752491166.jpg

Python身份运算符

867887-20160203163157741-1153454173.jpg

Python运算符优先级

867887-20160203163201132-1202212061.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值