Python中range数列与循环


前言

本文介绍了range数列以及for循环的基础内容。


一、range数列

range函数是Python内置的一个函数,用于生成一个整数序列。
range函数是Python中用于生成指定范围内整数序列的常用工具函数。它的灵活性和简洁性使得它在编程中经常被使用。

range([start,] stop [, sep]) []中选填
start:起点,默认值是0, 包含
stop:终点,必填, 不包含
step:步长,默认值为1

扩展:第二个数比第一个数大,步长要为正;第二个数比第一个数小,步长要为负,否则结果为空。

代码实例讲解如下:

datas = range(10)
print(list(datas))# 结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
datas = range(0, 10)
print(list(datas)) # 结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
datas = range(5, 10)
print(list(datas))  # 结果为[5, 6, 7, 8, 9]
datas = range(5, 16, 4)
print(list(datas))  # 结果为[5, 9, 13]
# 扩展
datas = range(86, 68, -4)
print(list(datas))  # 结果为[86, 82, 78, 74, 70]
datas = range(1, 10, -1)
print(list(datas))  # 结果为[]
# 第二个数比第一个数大,步长要为正
# 第二个数比第一个数小,步长要为负  否则结果为空

二、for循环

循环是计算机编程中常用的控制结构之一,它可以让程序重复执行某些指令,直到满足某个条件才停止,循环结构:重复,多次执行
在Python中,for循环用于迭代遍历一个可迭代对象(如列表、元组、字符串等),并对其中的每个元素执行某个操作。
在循环体中,我们可以执行任何需要执行的操作,例如打印、计算、条件判断等。可以使用range()函数来生成一个序列,然后在循环中使用。循环还可以结合条件语句(如if语句)来灵活控制循环的执行过程。
其中,for循环是一种特别常见的循环结构,它通常用于在已知循环次数的情况下重复执行某些操作。其基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {
    // 待执行的代码块
}

需要缩进,和if相似。
整数、浮点、布尔、空值无法遍历,会爆错;for遍历在5种数据类型中只能用于range、字符串

  • range:将range结果逐个赋予变量i
  • 字符串:将字符串的内容逐个赋予c(c = char)
  • range(一串数字)、for 变量名 in 内容

代码如下(示例):

# 将range结果逐个赋予变量i
for i in range(4):
    print("早点睡", i)
# 字符串:将字符串的内容逐个赋予c(c = char)
for c in "早点睡":
    print(c)
# 列表
for e in ["快下课了", "问一下", "吃什么", "炸酱面", True, 86]:
    print(e)

习题

题目:计算1+2+3+4+…+100

total = 0
for i in range(1, 101):
    total += i
print(total) # 结果为5050

可以简单求和 print(sum(range(1, 101))) ,但是现在在学习for循环和range数列,不建议使用sum函数

题目2:计算500-1000之间3的倍数的平均数

total = 0
n = 0
for i in range(500, 1001):
    if i % 3 == 0:
        total += i
        n += 1
print(total / n) # 结果为750.0

题目3:计算:从500开始前10个13的倍数的平均数

total = 0
for i in range(500, 500+5*10, 5):
    total += i
print(total / 10) # 结果为522.5

三、break与continue

四、for循环嵌套与案例

双层循环可以用于处理二维数据结构(如矩阵)或执行特定的重复操作。

外层循环变化依次,内层循环变化一轮

for i in range(3):
    for j in range(3):
        for m in range(3):
            print(i, j)

案列1

输入一个数字,计算其的阶乘和 eg: 5! + 4! + 3! + 2! + 1!

num = int(input("请输入一个数字"))
total = 0
for i in range(1, num + 1):
    a = 1
    for j in range(1, i + 1):
        a *= j
    total += a
print(total)

案例2

打印9*9乘法表(for循环嵌套)

for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j} x {i} = {i*j}", end="\t")
    print()

案例3:控制图形

# i控制行   j控制列
# 基础图形
for i in range(9):
    for j in range(9):
        print(" * ", end="")
    print()

# 空心正方形
for i in range(9):
    for j in range(9):
        if j == 0 or i == 0 or i == 8 or j == 8:
            print(" * ", end = "")
        else:
            print("   ", end = "")
    print()

# 两条对角线
for i in range(9):
    for j in range(9):
        if i + j == 8 or i == j:
            print(" * ", end = "")
        else:
            print("   ", end = "")
    print()

# 斜左上三角
for i in range(9):
    for j in range(9):
        if i + j <= 8:
            print(" * ", end = "")
        else:
            print("   ", end = "")
    print()

# 斜右上三角
for i in range(9):
    for j in range(9):
        if i <= j:
            print(" * ", end = "")
        else:
            print("   ", end = "")
    print()

# 沙漏
for i in range(9):
    for j in range(9):
        if (i + j <=8 and i <= j) or (i + j >= 8 and i >= j):
            print(" * ", end = "")
        else:
            print("   ", end = "")
    print()

案例4

求1000以内所有质数的平均数

n = 0
total = 0
for i in range(1000, 1, -1):
    flag =  True
    for j in range(2, i):
        if i % j == 0:
            flag = False
            break
    if flag:
        n += 1
        total += i
print(total / n)  # 453.13690476190476

五、while循环

while在…期间
当while条件为真时,循环执行语句

默认开门(条件为真) 随着程序的执行,关门(条件为假)
循环内部需要将条件设置为False否则会成死循环(一直执行)

例题1:使用while循环打印10次醒醒了

n = 0
flag = True
while flag:
    print("醒醒了")
    n += 1
    if n == 10:
        flag = False

# 第2种方法,只适用于python,上一种其他语言也可以
n = 0
while n < 10:
    print("醒醒了")
    n += 1

例题2:每次输入一个整数,求输入了几次,前面所以整数的和大于100

total = 0
n = 0
flag =True
while flag:
    num = int(input("输入一个整数"))
    total += num
    n += 1
    if total > 100:
        print(n)
        flag = False

例题3:随机生成一个5-10之间的整数,请问随机多少次,数字的累加和可以大于100

import  random
count = 0
total = 0
while total <= 100:
    total += random.randint(5, 10)
    count += 1
print(count)

六、while循环嵌套

例题4:使用while制作9*9乘法表

i = 1
while i < 10:
    # 内层循环
    j = 1
    while j <= i:
        print(f"{j} * {i} = {j*i}", end = "\t")
        j += 1
    print()

    i += 1

七、for与while均可以搭配使用else

1、for搭配else运用

简单说明

for i in range(10):
    if i == 3:
        continue # 终止某一次循环  不会导致else不执行
        break  # 终止整个循环  导致else不会执行
    print(i)
else:
    print("for循环完整结束")

稍稍复杂一点:求1000以内10个最小的质数

count = 0
for i in range(2, 1000):
    # 判定i是不是质数
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        count += 1
        print(i)
        if count == 10:
            break

for + else

2、while+ else例题说明

while的和for用法类似

题目:1000以内最大的10个质数

value = 1000
count = 0
while value > 1:
    j = 2
    while j < value:
        if value % j == 0:
            break
        j += 1
    else:
        print(value)
        count += 1
        if count == 10:
            break
    value -= 1

运行结果如下:

while +
建议:写练习的时候一步步来,例如上面的题可以先写输出1000以内的数,然后判断质数、计数10个,输出,正确的部分放在那就不要动了,直接写容易出错,写一步运行一步,新手可以先慢慢来。
me就是一个鲜明的示例。(╥﹏╥)


总结:

以上就是今天要讲的内容,本文仅仅简单介绍了range数列和循环的简单应用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值