python基础五之for和while

在前面的文章中基本了解了当条件为真的操作,下面通过一个从1加到100的代码实例来了解条件为真的循环操作。

1、while:

x=1;
while x<=100:
    print(x)
    x+=1;

输出结果是:

1
2
3
4
5
.
.
.

96
97
98
99
100

以上结果中间省略了部分数字。

name="";
while not name:
    name=input("请输入你的名字:")
print("hello,{}".format(name))

上面这段代码:当你把光标直接放在输入名字的地方时,直接按下回车键。你会看到提示信息再次出现,因为name还是空字符串,这相当于假。

请输入你的名字:
请输入你的名字:
请输入你的名字:
请输入你的名字:

如果你输入一个空格,程序将接受这个名字,因为包含一个空字符串不是空的,因此不会视为假。我们可以这样修复:只需要将

while not name改成while not name or name.isspace()或while not name.strip()即可。

while 循环语句非常灵活,可用于条件为真时反复执行代码块。但有时候我们需要一些特定的需求,如遍历序列等。这需要我们用到另一个循环语句:for

2、for:基本上我们会用for循环还迭代遍历可迭代对象,关于可迭代对象和迭代器我们在以后的文章中细说。现在,我们先以序列为实例。

Words=['this','is','an','ex','parrot'];
for word in Words:
    print(word)

运行结果为:

this
is
an
ex
parrot
numbers=[0,1,2,3,4,5]
for number in numbers:
    print(number)

 运行结果:

0
1
2
3
4
5

迭代在Python中是一种常见的操作,因此,Python创建了一个内置函数:range()

print(list(range(0,10)))
print(list(range(0,10,2)))
print(list(range(10)))
print(list(range(10,2,-1)))

运行结果为:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 9, 8, 7, 6, 5, 4, 3]

 range更像一个切片,包含起始位置,不包含结束位置,参数只能是整数,第三个参数是步长。如果只有一个参数,,则作为第二个参数。默认第一个参数为0,步长为1。

下面的程序打印1到5的数字。

for number in range(1,6):
    print(number)

运行结果:

1
2
3
4
5

3、迭代字典:

要遍历字典所有的键和值,可以使用普通的for循环来做。

d={"name1":"东方不败","name2":"风清扬","name3":"令狐冲"};
for key in d:
    print(key,d[key])

运行结果:

name1 东方不败
name2 风清扬
name3 令狐冲

另外,我们也可以使用items()来获取键值对。如:

for key,value in d.items():
    print(key,value

运行结果为:

name1 东方不败
name2 风清扬
name3 令狐冲

4、并行迭代:有时候,我们打算同时迭代两个序列。

name=["东方不败","风清扬","左冷禅","冲虚老道"]
gongfu=["葵花宝典",'独孤九剑',"寒冰掌","太极剑"]

for i in range(len(name)):
    print(name[i],gongfu[i])

 运行结果:

东方不败 葵花宝典
风清扬 独孤九剑
左冷禅 寒冰掌
冲虚老道 太极剑

这样看起来代码不太整洁,我们有一个很有用的并行迭代公交内置函数:zip.。他将两个序列缝合起来,并返回一个由元组组成的序列。看代码:

name=["东方不败","风清扬","左冷禅","冲虚老道"]
gongfu=["葵花宝典",'独孤九剑',"寒冰掌","太极剑"]
for na,gf in zip(name,gongfu):
    print(na,gf)

print(list(zip(name,gongfu)));

运行结果:

东方不败 葵花宝典
风清扬 独孤九剑
左冷禅 寒冰掌
冲虚老道 太极剑
[('东方不败', '葵花宝典'), ('风清扬', '独孤九剑'), ('左冷禅', '寒冰掌'), ('冲虚老道', '太极剑')]

函数zip可用于缝合任意数量的序列,需要指出的是,当序列长度不一样时,函数zio将在最短的序列用完后停止缝合。

5、迭代是自动获取索引。我们可以用内置函数:enumerate.

name=["东方不败","风清扬","左冷禅","冲虚老道","葵花宝典",'独孤九剑',"寒冰掌","太极剑"]
for i,string in enumerate(name):
    print(i,string)

运行结果:

0 东方不败
1 风清扬
2 左冷禅
3 冲虚老道
4 葵花宝典
5 独孤九剑
6 寒冰掌
7 太极剑

这个函数能让我们获取索引-值对。其中索引时自动提供的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值