• 学编程:Python入门考级必备[7]


    知识模块(七) 循序渐进

    一、for 循环初认识

    二、range()函数

    三、for 循环应用


    一、for 循环初认识

    循环的大佬——for 循环,它是属于迭代的循环,而 while 是属于条件的循环。
    for 循环格式:
    for 变量 in 序列范围:
            语句 1
            语句 2
    • for 是语句的开头,i 是变量,in:在...范围里面;
    • range()括号内的参数数值是代表了循环次数。
    • 每个词之间都用 1 个空格隔开,for 语句且必须用一个英文冒号结尾。
    • 计算机从 0 开始计数。
    #练 1:默认 range(10),输出 i 的值,看看 i 的变化。
    for i in range (10):
            print (i)
    怎么会得出这样的结果?
    答:这都是 range 的功劳

    二、range()函数

    英文:range         中文:范围、区间、序列
    range(10)函数作用是产生一个序列,序列有 10 个元素。
    例如 range(3)=[0,1,2] range(5)=[0,1,2,3,4],所以 range(10)是 0-9 输出。
    而且观察发现 range()函数默认是从 0 开始的。

    2.2 格式:range(start,stop)

    #练 2:例如,我们要取从 6 到 60 的数字,用 range()函数实现。
    for i in range (6,61):
            print (i, end= " " )

    可以发现,range 函数的 stop 是取不到 60 这个值的! 因此 stop 才要是 61。 默认 range()函数从小到大取值输出。

    2.3 格式:range(start,stop,step) step 是步长 代表要输出要隔 step 个数。
    #练 3:例如 range()输出 1 4 7 11 15 ...28。
    for i in range (1,31,3):
            print (i, end= " " )

     上面都是从小到大输出,那可不可以从大到小输出。例如输出 10 9 8 ... 2 1。


    for i in range (10,0,-1):
            print (i, end= " " )
    可以发现,我们把 range() 函数的步长是负的。start 与 stop 倒过来。
    #练 4:请用 range()依次输出 100 到 1 的值。
    #练 5:请实现输出 n 到 m 的值
    #练 6:实现输出 n 到 m 的偶数值
    #练 7:实现输出 1-100 的奇数和

    题 1:菲波那契数列,数列的第一个和第二个数都为 1,接下来每个数都等于前
    面 2 个数之和。1 1 2 3 5 8 13 21 34 55 ...
    请输入数值 n,求斐波那契数列从 1 到第 n 个数的值?
    #方法 1
    n = int ( input ())
    a = 0
    b = 1
    for i in range (n):
            t = a
            a = b
            b = a + t
            print (a, end= " " )
    #方法 2
    k = int ( input ())
    s = []
    s.append(1)
    s.append(1)
    for i in range (2,k):
            s.append(s[i-1] + s[i-2])
    print(s[k-1])

    题 2:老师要统计全班同学的考试成绩 score。
    而且老师要算出班级的平均成绩、最高分、最低分。
    首先请输入班级人数,再输入班级同学的成绩,并进行编程运算。
    n = int ( input ( "人数:" ))
    sum1 = 0 #存成绩
    for i in range (n):
            score = float(input( "成绩:" ))
            sum1 += score
            if i == 0:
                    max1 = score
                    min1 = score
            else:
                    if max1 < score: # 当第二、三成绩比第一个成绩要大
                            max1 = score # 就要替换 更新
                    if min1 > score: # 当第二、三成绩比第一个成绩要大
                            min1 = score # 就要替换 更新
    print( "总成绩:" ,sum1)
    print( "平均成绩:%2.f" % (sum1/n) )
    print( "最大值:" , max1)
    print( "最小值:" , min1)
    print( "极差:" , max1 - min1)

    三、for 循环应用

    题 1: 所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身。
    例如 153 是“水仙花数”,因为:153 = 1 3 + 5 3 + 3 3
    数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮 数或阿姆斯特朗数(Armstrong number),是指一 N 位数,其各个数之 N 次方和等于该数。
    现请问 100-999 范围内的水仙华数有哪些,请输出出来,并统计个数。
    cnt = 0
    for i in range (100,1000):
            ge = i % 10
            shi = i % 100 // 10
            bai = i // 100
            if ge**3 + shi**3 + bai**3 == i:
                    cnt += 1
                    print (i)
    print ( "个数:" , cnt)

    题 2 :回文数,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的
    整数。例如 12321 从哪边读都是一样的。
    请求出 1-999 范围内的回文数,并统计出来。
    cnt = 0
    for i in range (1,1000):
            if i<10:
                    cnt += 1
                    print (i,end= " " )
            elif i<100:
            if i % 10 == i // 10:
                    cnt += 1
                    print (i,end= " " )
            else :
                    if i % 10 == i // 100:
                            cnt += 1
                            print (i,end= " " )
    print()
    print( '回文数:' , cnt)

    题 3: ( 银行存利息问题) 农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投 资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为 R (0 到 20 之 间的整数)。约翰现有总值为 M 的钱(100 到 1,000,000 之间的整数)。他清楚地 知道自己要投资 Y 年(范围 0 到 400)。请帮助他计算最终他会有多少钱,并输出 它的整数部分。
    某一年的利息 = 本金 M * 年利率 R%
    某一年的钱 = 利息 + 本金
    请你编程输入本金 m,利率 r,年数 y;算出每一年的总钱数。
    m, r, y = input ().split( " " ) # 空格隔开输入
    m = float (m)
    r = int (r)
    y = int (y)
    for i in range (y):
            m += m * r * 0.01
            print ( "第%d 年的钱:%.2f " % (i+1,m))
              

    题 4:(猴子吃桃子问题)一群小猴子一天摘了许多桃子,第一天吃了一半,然后 忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到 第 10 天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

    n=1
    day = 10
    for i in range (day):
            if   i== 0:
                    print ( "第%d 天桃子数:" % day, 1)
            else :
                    n = (n+1)*2
                    print ( "第%d 天桃子数:%d" % (10-i,n))
    代码参考大全:
    1. '''#练1:默认range(10),输出i的值,看看i的变化。
    2. for i in range(10):
    3. print(i)
    4. #练2:例如,我们要取从6到60的数字,用range()函数实现。
    5. for i in range(6,60+1):
    6. print(i, end=" ")
    7. #练3:例如range()输出1 4 7 11 15 ...27 30。
    8. for i in range(1,31,3):
    9. print(i,end=" ")
    10. #练4:请用range()依次输出100到1的值。
    11. for i in range(100,0,-1):
    12. print(i,end=" ")
    13. #练6:实现输出n到m的偶数值
    14. n = int(input())
    15. m = int(input())
    16. sum1 = 0
    17. for i in range(n,m+1):
    18. if i % 2 == 0:
    19. sum1+=i
    20. print(sum1)
    21. '''
    22. '''
    23. 题1:菲波那契数列,数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
    24. 1 1 2 3 5 8 13 21 34 55 ...
    25. 请输入数值n,求斐波那契数列从1到第n个数的值?
    26. n = int(input())
    27. a = 0
    28. b = 1
    29. for i in range(n):
    30. t = a
    31. a = b
    32. b = a + t
    33. print(a, end=" ")
    34. #方法2
    35. k = int(input())
    36. s = []
    37. s.append(1)
    38. s.append(1)
    39. for i in range(2,k):
    40. s.append(s[i-1] + s[i-2])
    41. print(s[k-1])
    42. '''
    43. '''
    44. 题2:老师要统计全班同学的考试成绩score。
    45. 而且老师要算出班级的平均成绩、最高分、最低分。
    46. 首先请输入班级人数,再输入班级同学的成绩,并进行编程运算。
    47. n = int(input("人数:"))
    48. sum1 = 0 #存成绩
    49. for i in range(n):
    50. score = float(input("成绩:"))
    51. sum1 += score
    52. if i ==0:
    53. max1 = score
    54. min1 = score
    55. else:
    56. if max1 < score: # 当第二、三成绩比第一个成绩要大
    57. max1 = score # 就要替换 更新
    58. if min1 > score: # 当第二、三成绩比第一个成绩要大
    59. min1 = score # 就要替换 更新
    60. print("总成绩:" ,sum1)
    61. print("平均成绩:%2.f" % (sum1/n) )
    62. print("最大值:", max1)
    63. print("最小值:", min1)
    64. print("极差:", max1 - min1)
    65. '''
    66. '''
    67. 题1:所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身。
    68. 例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
    69. 现请问100-999范围内的水仙华数有哪些,请输出出来。
    70. cnt = 0
    71. for i in range(100,1000):
    72. ge = i % 10
    73. shi = i % 100 // 10
    74. bai = i // 100
    75. if ge**3 + shi**3 + bai**3 == i:
    76. cnt += 1
    77. print(i)
    78. print("个数:", cnt)
    79. '''
    80. '''
    81. 题2:回文数,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如12321 从哪边读都是一样的。
    82. 请求出1-1000范围内的回文数,并统计出来。
    83. cnt = 0
    84. for i in range(1,1000):
    85. if i<10:
    86. cnt += 1
    87. print(i,end=" ")
    88. elif i<100:
    89. if i % 10 == i // 10:
    90. cnt += 1
    91. print(i,end=" ")
    92. else:
    93. if i % 10 == i // 100:
    94. cnt += 1
    95. print(i,end=" ")
    96. print()
    97. print('回文数:', cnt)
    98. '''
    99. '''题3:(银行存利息问题)农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,
    100. 并对自己能得到多少收益感到好奇。已知投资的复合年利率为R (0到20之间的整数)。
    101. 约翰现有总值为M的钱(100到1,000,000之间的整数)。
    102. 他清楚地知道自己要投资Y年(范围0到400)。
    103. 请帮助他计算最终他会有多少钱,并输出它的整数部分。
    104. 某一年的利息 = 本金M * 年利率R%
    105. 某一年的钱 = 利息 + 本金
    106. 请你编程输入本金m,利率r,年数y;算出每一年的总钱数。
    107. m, r, y = input().split(" ") # 空格隔开输入
    108. m = float(m)
    109. r = int(r)
    110. y = int(y)
    111. for i in range(y):
    112. m += m * r * 0.01
    113. print("第%d年的钱:%.2f " %(i+1,m))
    114. '''
    115. '''题4(猴子吃桃子问题)一群小猴子一天摘了许多桃子,
    116. 第一天吃了一半,然后忍不住又吃了一个;
    117. 第二天又吃了一半,再加上一个;后面每天都是这样吃。
    118. 到第10天的时候,小猴子发现只有一个桃子了。
    119. 问小猴子第一天共摘了多少个桃子。'''
    120. n=1
    121. day = 10
    122. for i in range(day):
    123. if i==0:
    124. print("第%d天桃子数:" % day,1)
    125. else:
    126. n = (n+1)*2
    127. print("第%d天桃子数:%d" % (10-i,n))

  • 相关阅读:
    Kotlin
    04 Opencv图像操作
    【Springcloud】elk分布式日志
    LVS+Keepalived群集
    Python数据分析案例07——二手车估价(机器学习全流程,数据清洗、特征工程、模型选择、交叉验证、网格搜参、预测储存)
    Python中的贝叶斯推断和马尔科夫链蒙特卡洛抽样调查
    谷粒商城基础篇总结
    第七章 查找 三、折半查找(二分查找)
    可视化大屏:mapbox+vue全攻略
    【附源码】计算机毕业设计SSM图书销售网站
  • 原文地址:https://blog.csdn.net/weixin_44775255/article/details/127637902