python基础 - 06 循环结构之for循环

for循环结构

循环结构: 在开发中遇到需要重复的做某见事情的时候,需要用到循环结构.

python中提供的循环结构有两种: for循环, while循环.

for循环:一般在知道循环次数的时候使用.

while循环:一般在不知道循环次数的时候使用.

1.for 循环

for循环的结构
for 变量 in 范围:
    循环体(循环执行语句)
    
for的功能:让变量依次去取指定范围中的值,
          直到范围中的值取完为止.每取到一个值执行一次循环体
# range(0, 6): 左闭右开,依次加1
# range(0, 6, 2):左闭右开.依次加2,第三个元素是步长.
# range(10):0,1,2,3,4,5,6,7,8,9,10
for i in range(0, 6, 2):
    print(i)
    
#扩充知识点:
import random
# 随机产生一个1-100的整数
num = random.randint(1,100)
print(num)

# 随机产生一个1-100的浮点数
num = random.uniform(1,100)
print(num)

# 随机产生一个步长为2的整数
num = random.randrange(0,101,2)
print(num)

2.for循环嵌套

例如:
for i in range(1, 10):
    for j in range(1, i+1):
        print()

3.continue 和 break 的使用

(1).continue: 提前结束本次循环(不再执行continue后的循环语句)

# 打印1-10,但是不打印5
for i in range(1, 11):
    if i == 5:
        continue
    print(i, end = ' ')
    
#练习: 计算1-100中所有能被5整除的数的和,要求用continue.
num = 0
for x in range(1, 101):
    if x % 5 != 0:
        continue
    num += x
print(num)

(2). break: 结束整个循环.

# 打印1-10,但是当打印到5时结束整个循环.
for a in range(1, 11):
    if a == 5:
        break
    print(a, end = ' ')

# 练习: 找出101-200之间第一个能被7整除的数,并打印.
for b in range(101, 201):
    if b % 7 == 0:
        print(b)
        break

练习1: 求1+2+3+...+100的和.

Version:0.0.1
Author:韩波
Date:2018.5.10
  
sum1 = 0
for x in range(1, 100+1):
    # sum1 = sum + 1
    sum1 += x
    print(x, sum1)
# print(sum1)

练习2: 求123...100的积.

num2 = 1
for i in range(1,20+1):
    # num2 = num2 * i
    num2 *= i
    print(num2, end = ',')

练习3: 找出1到100中所有可以被3整除的数.

for y in range(1, 100+1):
    if y % 3 == 0:
        print(y, end = ' ')

练习4: 给出一个不多于5位的正整数, 要求:1.求它是几位数?

num3 = int(input('请输入一个不超过5位数的正整数:'))
count = 1
temp = num3
for x in range(1, 6):
    temp //= 10
    if temp != 0:
        count += 1
print('%d是%d位数' % (num3, count))

练习5: 求10的阶乘.

num4 = 1
for i in range(1, 11):
    num4 *= i
print(num4)

练习6: 求阶乘之和: 1! + 2! + 3! + ... n!

num5 = 0
for x in range(1, 4):
    num6 = 1
    for y in range(1, x+1):  # 循环结束后num6存的是X.
        num6 *= y
    num5 += num6    # 把每次求的得的阶乘累加起来
print(num5)

练习7: 九九乘法表.

for x in range(1, 10):
    for y in range(1, x+1):
        print('%d * %d = %d' % (y, x, x*y), end='\t')
    print()

练习8: 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该 数本身。如水仙花数153: 153 = 1^3 + 5^3 + 3^3

for i in range(100, 1000):
    a = i // 100        #百位
    b = i // 10 % 10    #十位
    c = i % 10          #个位
    if i == a**3 + b**3 + c**3:
        print('%d是水仙花数' % i)

练习9: 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

month = int(input('请输入你想查看的第几个月:'))
num = 1  # 初始兔子的数量
n1 = 1   #第一月的兔子数量
n2 = 1   #第二月的兔子数量
for n in range(1, month + 1):
    if n == 1 or n == 2:
        num = 1          # 一\二月的老兔子
    else:
        num = n1 + n2   #第三月.....n个月的的兔子数量
        n1 = n2
        n2 = num
print('第%d个月的兔子总数有%d只' % (month, num))

练习10: 有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13...求出这个数列的第20个分数

for x in range(1, 21):
    if x == 1:
        num1 = 2     #分子
        num2 = 1     #分母
    else:
        temp = num1
        num1 = num1 + num2
        num2 = temp
print('第20个分数是:%d/%d' % (num1, num2))

练习11: for循环嵌套打印正方形

print('打印实心正方形-----------------------------------------')
for a in range(1, 9):      # 双for循环
    for b in range(1, 9):
        print('*', end='  ')
    print()

print('单for循环')          #单for循环
for a1 in range(1, 9):
    print('  *' * 8, end='')
    print()

print('打印空心正方形-----------------------------------------')
for i in range(1, 9):            # 双for循环
    if (i == 1) | (i == 8):
        for j in range(1, 9):
            print('*', end='  ')
    else:
        for j in range(1):
            print('*', end='  ')
        for j in range(6):
            print(' ', end='  ')
        for j in range(1):
            print('*', end='  ')
    print()

for i1 in range(1, 9):             #单for循环
    if (i1 == 1) | (i1 == 8):
        print('  *' * 8, end='')
    else:
        print('  *' + '   ' * 6 + '  *', end='')
    print()

练习12: for循环嵌套打印三角形

print('打印实心三角形---------------------------------------------')
for c in range(1, 6 + 1):
    for d in range(1, 7 - c):
        print(' ', end='  ')
    for e in range(0, 1 + 2 * (c - 1)):
        print('*', end='  ')
    print()

print('打印直角三角形---------------------------------------------')
for g in range(1, 11):
    for h in range(1, g + 1):
        print('*', end='  ')
    print()

print('打印等腰三角形---------------------------------------------')
for i in range(1, 11):
    for j in range(1, 11 - i):
        print(' ', end='')
    for h in range(1, i + 1):
        print('*', end=' ')
    print()

print('单for循环打印三角形----------------------------------------')
for q in range(0, 11):
    print('  *' * (q + 1), end='')
    print()

猜你喜欢

转载自blog.csdn.net/hanbo6/article/details/80299253