python基础六——循环语句

在python中,有两种循:for  inwhile

 for  in循环

for循环主要是用来遍历序列、集合、字典。

用法:

list = [1,2,3]
for i in list:
    print(i,end='') # 1 2 3
    
tuple = (1,2,3,)
for i in tuple:
    print(i) # 1 2 3

上边代码,分别循环list和元组中的元素,i是数据中的每一个元素in后边是需要遍历的数据,数据后边需要加上冒号,每一次循环都会打印数据中的元素,end='' 会使换行的值并列排到一排 , 不使用 默认end = ' \n ' 就是换行, 当然也可以使用的别分隔符 让打印的数值进行分割

for循环与range函数一起用时,十分灵活,下边举了几个例子:

打印1~10奇数项

for i in range(1,10,2):
    print(i) # 1 3 5 7 9

 输入任意整数,判断这个数是否是质数(素数)

质数:只能整除1和它本身的数。。。

素数:判断比他小的数,输入的数 % 比他小的数 余数是否等于0,等于0 则 有别的数能整数输入的数,不是素数。

num = int(input())
for i in range(2,num-1):
    if num % i == 0: # python中的 % 也是跟js用法一样
        print(str(num)+"不是质数(素数)") # 这里之所以要把num转化为str,因为数字和str不能进行运算
        break # 不是质数马上终止循环,否则可能会打印许多,下边同理
    else:
        print(str(num) + "是质数(素数)")
        break

也可以利用range()生成一个list

list = [] # 定义一个空list
for i in range(1,11):
    list.append(i) # 用append方法向list末尾添加元素
else:
    print(list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

求1~100和

proxy = 0
for i in range(1,101):
    proxy += i
print(proxy) # 5050

求1~5的阶乘之和

下边代码,*= 可以写成 mul = mul * i,与 +=、%=、-= 类似。

# 求1-5的阶乘之和
count = 0
mul = 1
for i in range(1,5):
    mul *= i
    count += mul
print(count) # 33

 

这里补充下

循环else子句(在Python中很少用)

所谓循环else子句意思是:只要是正常循环结束时,就会执行else子句,当代码块中有终止循环的break时,循环子句else将不会执行;上边用range生成一个list,也用到了循环else子句。。。下边我们来看个例子:

for i in range(3):
  print(i) # 0 1 2 
else:
  print("END")  #END

上边代码,循环正常结束,则else子句就会执行,也就是说,不管循环了多少圈,只要没有代码不被break终止循环,总会执行else子句。

下边代码,循环被break终止,那么最后的else子句不会执行!

for i in range(5):
  if i > 3:
    break
  print(i) # 0 1 2 3 
else:
  print("END") #不会打印

while循环

与for in循环类似,while循环需要添加判断条件,如果条件为True,执行下边缩进代码块,条件为False退出循环!

num = 10
while num > 5:
    print(num) # 10 9 8 7 6
    num -= 1

上边代码,while循环时,要判断num是否大于5,为True时,执行下边代码块。

死循环:

我们可以利用这种循环机制,做一个连续输入的demo

while True:
    input("请说出您的问题:")

上边代码,条件为True,则执行下边代码块,而input函数的作用是等待用户输入信息,接着打印用户输入信息,打印完之后,又会判断,然而条件永远是True,循环会永远继续下去,也可以使用break(下文有讲到)跳出循环。

做一个我问你答简陋小demo:

while True:
    c = input("hi,我是智能机器人小度,请说出您的问题:")
    if c == "我叫什么名字":
        print("吕星辰呀,嘻嘻")
    elif c == "年龄":
        print("20岁")
    else:
        break

上边代码,符合条件即可打印对应的信息,否则退出循环,在python中比较运算符 ==  、!=  、>= 、 <= 、> 、 <   与js中用法相同,这里就不讲了!

总结下while循环与for in循环,

1、while终止循环的的条件是:False,或者 里边代码块中使用break

2、for in和while循环都可以在代码块中用break中断循环,而while还可以在判断条件时中断循环。

 

break

终止循环,用在if条件判断语句里边

for i in range(1,5):
    if i > 3:
        break
    print(i)

这里着重说下,在for循环中,如果使用break强制终止循环,else字句也不会执行,但是我们下边讲的使用continue会执行else字句!!!

for i in range(1,5):
    if i > 3:
        break
    print(i) # 1 2 3
else:
    print("END") # 不会执行
#----------------------------
for i in range(1,5):
    if i > 3:
        continue
    print(i) # 1 2 3 END
else:
    print("END")

(补充)双for循环结合break使用

a = [[0,2,3,4,5]]
for i in a:
     for j in i:
         if j == 3:
            break
     print(j) # 4

上边代码,为什么打印4呢,我们首先要对break有一个深刻的认识,break只是终止当前的for循环,,上边双for循环,只会终止里边的for循环,外层for循环不会终止!!!,所以当j=4时,终止当前循环,而外层的print将会执行,打印的是4。。。

continue

continue与break类似,用在if条件判断语句里边,只不过是中断本次循环,直接开始下一次循环:

下边代码,把1~10的偶数打印出来

for i in range(1,11):
    if i % 2 != 0:
        continue
    print(i) # 2 4 6 8 10

最后在来一个题:

给出一个不超过5位数的数字,判断有几位数;并且依次把 个位、十位、百位、千位、万位 打印出来。

比如:输入12345,打印5位数,最后依次把 5   4   3   2   1  打印出来,大家可以先自己写一写,答案不是唯一的!

num = int(input())
count = 0
if num >= 100:
    if num >= 10000:
        count = 5
        print("您输入的是5位数")
    elif num >= 1000:
        count = 4
        print("您输入的是4位数")
    else:
        count = 3
        print("您输入的是3位数")
elif num >=10:
    count = 2
    print("您输入的是2位数")
else:
    count = 1
    print("您输入的是1位数")

newNum = 0
for i in range(count):
    newNum = num // 10  # 用输入的数字除十,得到整数位,赋给一个新值
    print(num - newNum*10) # 用输入的值 - 新值*10  即可得出输入的值的个位数
    num = newNum

 

补充:

enumerate 枚举函数:

之所以把此函数放在这里,因为我们之前取一个列表(可遍历的数据都可以)的索引与各个项,一般通过for循环来实现的:

count = 0
l = [1,2,3,4]
for i in l:
    print(count,i)
    count += 1

有了enumerate函数,则更加便利、清晰:

l = [1,2,3,4]
for i,item in enumerate(l):
    print(i,item)

enumerate函数,还可以接收第二个参数:

l = [1,2,3]
for i,item in enumerate(l,10):
    print(i,item)
# 打印结果:
# 10  1
# 11  2
# 12  3
print(list(enumerate('abc')))
# [(0, 'a'), (1, 'b'), (2, 'c')]

print(list(enumerate('abc',2)))
# [(2, 'a'), (3, 'b'), (4, 'c')]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值