(五)for,range,continue,list

for 语句
作用:
    用来遍历可迭代对象的数据元素
    可迭代对象是指能依次获取数据元素的对象
可迭代对象包括:
    字符串 str
    ----以下内容以后再讲------
    列表 list 
    元组 tuple
    字典 dict
    集合 set
    range 函数返回的对象等
语法:
    for 变量列表 in 可迭代对象:
        语句块1
    else:
        语句块2

练习:
1.任意输入一个字符串:
计算出您输入的空格的字符,并打印出来
计算您输入的'a' 字符的个数,并打印出来 (要求用for语句实现)

k = input("请输入字符串")
n = 0
for m in k:
    if m == "a":
        n += 1
print(n)

思考:
    用while语句能否实现上述功能?

range 函数
    格式:
        见:>>> help(range)
函数
range(stop)
    从零开始,每次生成一个整数后加1操作,直到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,0)    # 生成空

练习:
    1 用for 语句打印 1 ~ 20 ,打印在一行内

        for x in range(1,21):
        print(x,end = " ")
        print( )

    2.用for 语句打印 1 ~ 20 , 每5个打印在一行内

        for x in range(1,21):
            print(x,end = " ")
            if x % 5 ==0:
                print()
        print()

    3.求 100 以内在哪些数与 自身+1 的乘积对11求余的结果等于8

        for a in range(1,101):
            b = a * (a + 1) % 11
            if b == 8 :
                print(a)

    4.计算 1 + 3 + 5 + 7 + ... + 97 + 99 的和分别用for和while 循环语句来实现

       s = 0
        for a in range(1,100,2):
            s += a
        print(s)

for 语句的注意事项:
    请问下面程序的打印结果是什么:

    i = 6
    for x in range(1,i):
        print('x =',x,'i=',i)
        i -= 1
   结果:
   x = 1 i= 6
   x = 2 i= 5
   x = 3 i= 4
   x = 4 i= 3
   x = 5 i= 2

如下语句的执行结果是什么?为什么?
  for x in range(4,0):
      print(x)
  print('x绑定',x)
出错

for 语句的嵌套
    示例:
        for x in "ABC":
            for y in '123':
                print(x + y)   # A1,A2,A3,B1,B2....

思考:
  for x in range(5)
      for y in range(10)

练习:
1.输入一个整数n,打印一个对应的正方形:
  如:
    请输入:5
  打印:
   1 2 3 4 5  
   1 2 3 4 5  
   1 2 3 4 5  
   1 2 3 4 5  
   1 2 3 4 5  
  请输入: 3
  打印:
    1 2 3
    1 2 3
    1 2 3

    n = int(input('请输入一个整数'))
    for line in range(n):
        for a in range(1,n+1):
            print(a,end = '')
        print()  

2.输入一个整

数n,打印一个对应的正方形:
    如:
        请输入: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 

    n = int(input('请输入一个整数'))
    for line in range(n):
        for a in range(line +1,n + line + 1):
            print('%02d' % a,end = ' ')
        print()  

问题
    如何让程序不再向下执行,重新开始一次新的循环   

continue 语句
    用于循环语句中(while,for语句)中,不再执行本次循环continue之后的语句,重新开始一次新的循环

    说明:
        1.在for 语句中执行continue 语句,将会从可迭代对象中取下一个元素,绑定变量后再次开始执行
        2.在while语句中执行continue,将会直接跳转到while语句的真值表达式出重新判断循环条件

练习: 
  输入一个起始数,用start绑定,输入一个结束数用stop绑定,打印start 到 stop(不包含stop)内的所有奇数

    start = int(input('请输入一个起始数:'))
    stop = int(input('请输入一个结束数:'))
    for a in range(start,stop) :
        if a % 2 == 0:
            continue
        print(a)

练习:
  2. 求1 ~ 100 之间所有不能被5 , 7, 11整除的数以及这些数的和

        s = 0
        for a in range(1,100):
            if a % 5 == 0 or a % 7 == 0 or a % 11 == 0:
                continue
            s += a
            print(a,end=" ")
            print()
        print('这些数的和是:',s)

循环语句总结:
    while 语句
        可以死循环
    for 语句
        用于可迭代对象的循环
        (字符串,range()返回的对象)
    break 语句:
        用于终止当前循环
    continue 语句
        用于开始一次新的循环

列表 list
    定义:
        列表是一种容器
        列表是序列的一种
        列表是可以被改变的序列
        列表中由一系列特定元素组成的,元素与元素之间可以没有任何的关联关系,但他们之间由先后顺序关系

创建空列表的字面值
    L = [ ]   # L 变量绑定空列表
创建非空列表的字面值
    L = [1,2,3,4 ]
    L = ['Beijing','shanghai','shenzhen']
    L = [1,Two,3.14,'四' ]

列表的构造(创建)函数 list
    list()    # 生成一个空的列表,等同于[]
    list(iterable)  # 用可迭代对象创建一个列表

示例:
    L = list() # L绑定空列表
    L = list("hello")  # L 绑定['h','e','l','l','o']
    L = list(range(1,10,2))

列表的运算:
    +  +=  *  *=

    + 用于拼接列表
        x = [1,2,3]
        y = [4,5,6]
        z = x + y  # z = [1,2,3,4,5,6]

    += 用原列表与左侧列表拼接,用变量绑定拼接后的列表
        x = [1,2,3]
        x += [4,5,6]
        print(x)

    * 生成重复的列表
    x = [1,2] * 3   # x = [1,2,1,2,1,2]
    x *= y 等同于 x = x * y

列表的比较运算:
    运算符:
        <  <=  >  >=  ==  !=
    比较的规则同字符串的规则相同
        x = [1,2,3]
        y = [1,2,4]
        x != y  # True
        x <= y  # True
        y > x   # True 
        ["AB",'abc','123'] < ['AB','123','abc'] # False ('abc' < '123')
        [1,'two'] > ['two',1]  # TypeError

列表的 in / not in 运算符
    作用:
        判断一个值是否存在与列表中,如果存在返回True,否则返回False
        not in 的返回值与 in 运算符相反
    示例:
        2 in [1,2,3,4]  # True
        '2' in [1,2,3,4]  #False

列表是可迭代对象:
    for x in [2,3,5,7]:
        print(x)  # x绑定列表内的元素

练习:
1.输入三行文字,将这三行文字保存与列表L中,并打印:
    如:
    请输入:abc<回车> 
    请输入:1234<回车> 
    请输入:你好<回车> 
    生成如下列表:
        ['abc','1234','你好']
    print(L) # 打印

2.输入任意行文字,存于列表L中,当不输入任意内容回车后退出输入,
   1)打印L列表中的内容
   2)计算您共输入的几行内容
   3)计算共输入了多少字符


1.写一个程序,任意输入一个数,判段这个数书否是素数(prime)
    素数(也叫质数) 是只能被1 和自身整除的数
    如:
        2 3 5 7 11 13 17 19 ...
    提示:要用循环,先排出能被2345 ..自身-1整除的非素数,剩余的即为素数

        s = int(input('请输入一个数:'))
        if s == 2:
            print(s,"是素数")
        else:    
            for x in range (2,s):
                if s % x == 0:
                    print(s,"不是素数")
                    break
                else :
                    print(s,"是素数")
                    break

2.编写程序求下列多项式的值
    Sn = 1/1 - 1/3 + 1/5 - 1/7 ...
    1000000个分式的值是多少?
    将此值乘以4后打印出来.

    a = 1
    c = 1
    Sn = 0
    for a in range(1,2000000,2):
        b = (-1) **(c+1) *(1/a)
        Sn +=b
        c +=1
    print("Sn=",Sn)  
    print("Sn * 4 =",Sn * 4)

3.输入一个整数(代表树干的高度)打印如下形式的圣诞树
    输入: 2 
     *
    ***
     *
     * 
    输入:3
     *
    ***
   *****
     *
     *
     *

    a = int(input("请输入一个数:"))
    for x in range(1,a + 1):
        n = (2 * x - 1)
        print(" " * (a - x),"*" * n)
    for c in range(1,a + 1):
        print(" "*(a - 1),"*")

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值