Python for 循环的语法和应用, range函数,continue函数

for 语句(循环语句)

作用:
 用来遍历可迭代对象元素
语法:

for  变量列表 in 可迭代对象:

    语句块1...
  else:
   语句块2...
 语法说明:
 1.可迭代对象每次提供一个元素依次赋值给变量列表中的变量,赋值完毕后执行语句块1,重复执行此步骤
 2.当可迭代对象不能提供数据时,执行else子句部分的语句块2,然后退出循环
 3.else子句部分可以省略
 4.当在语句内部用break终止循环时,else子句部分语句块2不会执行

 注:可迭代对象是指能依次获取数据元素的对象

示例:
s="abcde"
for x in s:
 print("----->",x)
else:
 print("程序终止")

s="abcde"
for x in s:
 print("----->",x)
 if x=='c':  # 此时else 子句部分不会执行
 break 
else:
 print("程序终止")

练习 
写程序,任意输入一行字符串,打印这个字符串内有多少空格' '
s=input("请输入一行字符串:")
a=0
for x in s:
 if x==" ":
  a+=1
print(a)

i=0
s=input("请输入一行字符串:")
a=0
length=len(s)
while i < length:

 if x==" ":
  a+=1
 i+=1
print(a)

range函数
作用:
  用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)
调用格式:
  range(stop)
  从零开始,每次生成一个整数后加一操作,直至stop为止(不包含stop)
  range(start,stop[,step]) 从start开始,每次生成一个整数后移动step,直至stop为止(不包含stop,且step可以为负数)
  示例:
  range(4) 

  # 0 1 2 3
  range(3,6)

   # 3 4 5
  range(1,10,2)

   # 1 3 5 7 9
  range(5,0,-2)

  # 5 3 1
  range(4,1)   

   # 空
  for x in range(4):
   print(x)

   # 0 1 2 3

练习:
用 for 执行
2.写一个程序,输入一个开始的整数值用变量begin绑定

输入一个结束的整数值用变量eng绑定
打印从begin到end(不包含end)的每个整数(打印在一行内)
如:
请输入开始值:8
请输入结束值:30

打印结果:
8 9 10...28 29 30
附加思考:
  如何实现每5个数字打印在一行

begin=int(input("请输入开始值:"))
end=int(input("请输入结束值:"))
i=1                       
for a in range(begin,end):
 print(a ,end=" ")     
 if i%5==0:
  print()
 i+=1

 


for 语句嵌套:
  示意:
  for x in "ABC":
   for y in "123":
    print(x+y)
 

练习
 用 for 循环嵌套打印以下矩形:
 (输入一个数n(10以内) 代表矩形的宽度和高度)
 打印如下:
 请输入:5
 1 2 3 4 5
 2 3 4 5 6
 3 4 5 6 7
 4 5 6 7 8
 5 6 7 8 9
b=int(input("请输入一个整数(10以内):"))
if 0< b <=10:
 for s in range(0,b):
  for d in range(1,b+1):
   print(s+d ,end=" ")
  print()
else:
 print("输入有错")

3.用for循环生成一个字符串:
'ABCD...XYZ'并打印
'AcBbCcDd...XxYyZz'并打印
提示:
  用chr和ord函数
x=0
for a in range(65,91):
 b=97
 q=[]
 while b<= 122:
  q+=chr(b)   
  b+=1
 print(chr(a)+q[x],end=" ")
 x+=1
 a+=1

4.任意输入一个n代表三角形的高度,打印此形状的三角形
如:输入:4
打印如下:
      1
    121
  12321
1234321 

a=int(input("请输入:"))
l=[]
for i in range(1,a+1):
    l.append(i)
    print((a-i)*' ',end='')
    for x in l: 
        print(str(x),end="")
    for d in l[-2: :-1]:
        print(d,end="")
    print()

5.将第四题打印的三角形变为打印菱形

a=int(input("请输入:"))
l=[]
for i in range(1,a+1):
    l.append(i)
    print((a-i)*' ',end='')
    for x in l: 
        print(str(x),end="")
    for d in l[-2: :-1]:
        print(d,end="")
    print()
ds=1
while ds<a:
    l.pop()
    print((ds)*" ",end="")
    for r in l:
        print(r,end="")
    for o in l[-2::-1]:
        print(o,end="")
    print()
    ds+=1

6.有一只小猴子,摘了很多桃
第一天吃了全部桃子的一半,感觉不饱又吃了一个
第二天吃了剩下桃子的一半,感觉不饱又吃了一个
....以此类推
到第十天,发现只剩下一个
问第一天摘了多少桃

a=1
for x in range(1,10):
    a=(a+1)*2
print(a)

7.打印完全数
1+2+3=6(6为完全数)
1,2,3都为6的因数(能被一个数x整除的数为y,则y为x的因数)
1*6=6
2*3=6
完全数是指除本身以外的所有的因数之和相加等于自身的数
求4~5个完全数,并打印出来
6  28  496  8128


for x in range(1,100000):
    l=[]
    for a in range(1,x):
        if x%a==0:
            l.append(a)
    if x == sum(l):
        print(x)
方法二
x=1
while True:
    sum_yinshu=0
    for i in range(1,x):
        if s%i==0:
            sum_yinshu +=i
    if sum_yinshu==x:
        print(x,"是完全数")

    i+=1

8,算出 100~999 以内的水仙花数(Narissistic Number)
 水仙花数是值百位的3次方 加上 十位的3次方
 加上个位的3次方等于原数的数字
 例如:
 153=1**3+5**3+3**3
for x in range(100,1000):
    a=x%10
    b=(x%100)//10
    c=x//100
    if x==a**3+b**3+c**3:
    print(x)

方法二:
g=[]
for x in range(100,1000):
    d=str(x)
    a=list(d)
    if x==int(a[0])**3+int(a[1])**3+int(a[2])**3:
        g.append(x) 
print(g)
方法三:
for bai in range(1,10):
    for shi in range(10):
        for ge in range(10):
            x=bai*100+shi*10+ge
            if x==bai**3+shi**3+ge**3:
            print(x)

9.输入一个整数n 代表结束的数
将1~n之间所有的素数计算出来并存入列表l中
1)最后打印此列表中觉得全部素数
2)打印这些素数之和
c=[]
n=int(input("请输入:"))
for x in range(2,n):
    for y in range(2,x):
        if x%y==0:
            break
    else:
        c.append(x)
print(c)
print(sum(c))
10.求100以内有哪些整数与自身加1 的乘积再对11求余的结果等于8
打印这些数,将这些数存入列表当中(建议用列表推导式)
a=[x for x in range(1,101) if ((x+1)*x)%11==8]
print(a)
11.计算20个百斐波那契数(fabonacci数)
存于列表中,最后打印这20个数
1,1,2,3,5,8,13,...
(从第三个数起,后一个数是前两个数之和)

d=[1,1,2] 
i=1
a=2            
while i<18:       
    f=d[i]+d[ a]  
    d.append(f)  
    i+=1         
    a+=1
print(d)
方法二:
l=[]
a=1
b=1
l.append(a)
l.append(b)
while len(l)<20:
    c=a+b        
    l.append(c)   
    a=b        
    b=c      
print(l)


continue 语句
作用:
   用于循环语句(while,for语句)中,不再执行本次循环内continue之后的语句,重新开始一次新的循环
说明:
  1.在while语句中执行continue语句,将直接跳转到whlie语句的真值表达式处重新判断循环条件
  2.在for语句中执行continue语句,将会从可迭代对象中取下一个语句,绑定变量后再次进行循环
示例:
打印5以内的整数,但不打印2:

for i in range(5):
 if i == 2:
  contiue #如果i等于2,重新开始一次新的循环
 print(i)

实例:
  输入一个开始的数用begin绑定
  输入一个结束的数用end绑定
  打印begin~end之间所有的奇数
begin=int(input("请输入一个开始的整数:"))
end=int(input("请输入一个结束的整数:"))
for s in range(begin,end):
 if s%2==0:
  contiue
 prlint(s)

begin=int(input("请输入一个开始的整数:"))
end=int(input("请输入一个结束的整数:"))
i=begin
while i<end:
 if i%2==0:
  i+=1
  continue
 print(i)
 i+=1

练习:
  写一个程序,求1~100之间所有不能被5,7,11整除的数的和
d=0
for s in range(1,101):
 if s%5==0 or s%7==0 or s%11==0:
  continue
  d+=s

print(d)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值