DAY3 BLOG + 作业

循环结构 — 可以让代码重复执行(代码写一遍,执行多次)

for 循环

语法:
for 变量 in 序列:
    循环体
    
说明:
for、in      -   关键字;固定写法
变量         -   变量名(可以是已经定义过的变量的变量名,也可以是没有定义)
序列         -   序列就是Python中容器型数据类型对应的数据;例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
:           -   固定写法
循环体       -   和for保持一个缩进的一条或者多条语句(至少1条件); 循环体就是会被重复执行的代码

执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
for循环循环次数和序列中元素的个数有关
for x in 'abc':
	print(x, '====')
print('++++')
'''
a ====
b ====
c ====
++++
'''

1.range 函数 — 产生一个等差数列

#1 2 3 4 5 6

#1 3 5 7 9

  1. range(N) — 产生[0, N), 差是1的等差数列(N必须是正整数)。range(3) — 0, 1, 2;range(11) —0, 1, 2, 3, 4, 5, 6, 7, 8, 9

  2. range(M, N) — 产生[M, N), 差是1的等差数列(M < N)。range(2, 6) — 2, 3, 4, 5;range(-2, 1) — -2, -1, 0

  3. range(M, N, step) — 产生[M, N), 差是step的等差数列。range(10, 4, -2) — 10, 8, 6

2.求和套路

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

# 1)定义一个变量保存最后的和,变量默认值是0
sum1 = 0
# 2)通过循环获取到要求和的数据
for x in range(1, 101):
    # 3) 取到一个数据就往保存和的变量中加一个数据
    sum1 += x  # sum1 = sum1 + x

print('和:', sum1)

练习: [45, 78, 90, 45, 67, 100, 90, 98, 76]

scores = [45, 78, 90, 45, 67, 100, 90, 98, 76]
total = 0
for x in scores:
    total += x
print('总分:', total)

3.统计个数的套路

练习:统计scores中不及格学生的个数

scores = [45, 78, 90, 45, 67, 100, 90, 98, 76]
# 1) 定义一个变量保存最后的个数,默认值是0
count = 0
# 2) 通过循环获取统计对象
for x in scores:
    # 3) 判断获取到的对象是否符合个数加1的条件
    if x < 60:
        count += 1
print('不及格人数:', count)

练习:统计100以内(1~99)能被3整除的数的个数

# 方法一:
count = 0
for x in range(1, 100):
    if x % 3 == 0:
        count += 1
print('被3整除的数的个数:', count)

# 方法二:
count = 0
for x in range(3, 100, 3):
    count += 1
print('被3整除的数的个数:', count)

练习:计算2468…*20的结果

total = 1
for x in range(2, 21, 2):
    total *= x
print(total)        # 3715891200

练习:计算100以内所有能被3整除但是不能被5整除的数的和

# 方法一:
total = 0
for x in range(1, 100):
    if x % 3 == 0 and x % 5 != 0:
        total += x
print(total)

# 方法二:
total = 0
for x in range(3, 100, 3):
    if x % 5 != 0:
        total += x
print(total)

while循环

while 条件语句:
    循环体
    
其他代码
    
说明:
while       -   关键字;固定写法
条件语句      -   任何有结果的表达式,比如:具体的数据、已经赋值过的变量、运算表达式(赋值运算除外)
:           -   固定写法
循环体       -    和while保持一个缩进的一条或者多条语句(至少一条); 循环体就是需要重复执行的代码

执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完再判断条件语句是否为True,为True又执行循环体...
以此类推,如果判断条件语句的结果是False循环就结束。

练习:打印1,2,3,4,5

# for loop
for x in range(1, 6):
    print(x)
# while loop
num = 1
while num < 6:
    print(num)
    num += 1

for和while的选择

如果循环次数确定就使用for循环;循环次数不确定就使用while循环。

练习:提示用户输入数据,直到输入的值是0为止。

"""
请输入一个数: 19
请输入一个数: 20
请输入一个数: 8
...
请输入一个数:0
结束!
"""
# value = '10990'   # value的初始值只要不是'0'都可以
# while value != '0':
#     value = input('请输入一个数:')
num = input(请输入一个数:')
while num != 0:
    print('请输入一个数:')

练习:完成猜数字游戏

"""
游戏开始产生一个0~100的随机数,让用户不断输入数字,直到输入的数字和产生的随机相等为止。如果猜错了给出大了或者小了的提示。

45
请输入数字(0~100):50
大了!
请输入数字(0~100):25
小了
请输入数字(0~100):30
小了
请输入数字(0~100):45
恭喜你,猜对了!
"""
import random
# random.randint(a, b)  - 产生a到b的随机数
value = random.randint(0, 100)    # value的值就是0~100的随机数

input_num = int(input('请输入数字(0~100):'))
while input_num != value:
    if input_num > value:
        print('大了!')
    else:
        print('小了!')
    input_num = int(input('请输入数字(0~100):'))

print('恭喜你,猜对了!')

1. 基础题

  1. 输入年份,如果输入的年是闰年打印'闰年'否则打印'平年'

    year = int(input('请输入年份:'))
    if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
        print('闰年')
    else:
        print('平年')
    
  2. 使用for和while循环输出 0~100内所有3的倍数。

    num = 0
    for num in range(0, 101, 3):
        print(num)
    
    num = 0
    while num <= 100:
        if num % 3 == 0:
            print(num)
        num += 1
    
  3. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    for i in range(100, 201):
        if (i % 100 // 10) % 3 == 0 or (i % 10 % 3 == 0):
            print(i)
    
    num = 100
    while num <= 200:
        if (num % 100 // 10 % 3 == 0) or (num % 10 % 3 == 0):
            print(num)
        num += 1
    
  4. 使用for和while循环统计100~200中十位数是5的数的个数

    count = 0
    for i in range(100, 201):
        if i % 100 // 10 == 5:
            count += 1
    print(count)
    
    count = 0
    num = 100
    while num <= 200:
        if num % 100 // 10 == 5:
            count += 1
        num += 1
    print(count)
    
  5. 使用for和while循环打印50~150中所有能被3整除但是不能被5整除的数

    for i in range(50, 151):
        if i % 3 == 0 and i % 5 != 0:
            print(i)
    
    num = 50
    while num <= 150:
        if num % 3 == 0 and num % 5 != 0:
            print(num)
        num += 1
    
  6. 使用for和while循环计算50~150中所有能被3整除但是不能被5整除的数的和

    sum = 0
    for i in range(50, 151):
        if i % 3 == 0 and i % 5 != 0:
            sum += i
    print(sum)
    
    while num <= 150:
        if num % 3 == 0 and num % 5 != 0:
            sum += num
        num += 1
    print(sum)
    

2. 进阶题

  1. 使用循环计算1*2*3*4*...*10的结果。

    result = 1
    for i in range(1, 11):
         result *= i
    print(result)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数。

    count = 0
    for i in range(0, 100, 3):
         if i % 10 == 2:
              count += 1
    print(count)
    
  3. 输入任意一个正整数,求他是几位数?

    注意: 这儿不能使用字符串,只能用循环

    
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

    ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for i in range(100, 1000):
         if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 100 % 10) ** 3 == i:
              print(i)
    

3. 挑战题

  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    num = 28
    for i in range(2, num):
         if num % i == 0:
              print('is not prime')
              break
         else:
              print('is prime')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

    
    
  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for i in range(1, 10):
         for j in range(1, i + 1):
              print(j, '*', i, '=', i * j, end = ' ')
         print()
    
  4. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值