day4-循环

循环 - 让代码重复执行 (代码写一遍,运行的时候可以执行多次)

  1. for循环
"""
语法:
for 变量 in 序列:
    循环体
    
说明:
for、in - 关键字,固定写法
变量  -  写一个变量名。(可以是已经定义过的,也可以没有没有定义过的)
序列  -  容器型数据类型对应的数据、常见序列:字符串、列表、元祖、字典、集合、迭代器、生成器、range。
:    -  固定写法
循环体 -  和for保持一个缩进的一条或者多条语句,就是需要冲的

执行过程:
让变量去序列中取值,取完为止,每取一个执行一次循环体。
for循环循环的次数和序列中元素的个数有关
"""
for x in 'abc':
    print(x, 'hello')
"""
x = 'a': print(x,'hello') -> print('a','hello')
x = 'b': print(x,'hello') -> print('b','hello')
...
x = '3': print(x,'hello') -> print('3','hello')
"""
  1. range函数 - 产生指定范围的数字序列

    1) range(N) - 产生[0,N)的数字序列,其中步长是1

    2) range(M,N) - 产生[M,N)的数字序列,步长为1

    3) range(M,N,step) - 产生[M,N)的数字序列,步长为step指定的值

print('======用法1:产生0开始步长为1的数字序列======')
for x in range(10):
    print(x)

print('======用法2:直接的控制循环次数=======')
for x in range(4):
    print('hello!')

print('======================')
for x in range(-10, 20):
    print(x)

print('======================')
for x in range(10, 20):
    print(x)

print('======================')
for x in range(10, 20, 3):
    print(x)

print('======================')
for x in range(20, 0, -3):
    print(x)

# 练习1:打印100以内所有的偶数
# 方法1:
print('==========方法1===========')
for x in range(100):
    if x % 2 == 0:
        print(x)

# 方法2:
print('===========方法2===========')
for x in range(0, 100, 2):
    print(x)
# 练习2:打印100~200中所有个位数是3的数
# 方法1:
print('===========方法1==========')
for x in range(100, 200):
    if x % 10 == 3:
        print(x)

# 方法2:
print('===========方法2===========')
for x in range(103, 201, 10):
    print(x)
# 练习3:打印所有的水仙花数
print('====================')
for x in range(100, 1000):
    if (x % 10)**3 + (x % 100 // 10)**3 + (x // 100)**3 == x:
        print(x)

print('===========方法2===========')
for num in range(100,1000):
    ge = num % 10
    shi = num // 10 % 10
    bai = num // 100
    if ge ** 3 + shi ** 3 + bai ** 3 == num:
        print(num)

两个循环套路

print('======用法1:产生0开始步长为1的数字序列======')
for x in range(10):
    print(x)

print('======用法2:直接的控制循环次数=======')
for x in range(4):
    print('hello!')

print('======================')
for x in range(-10, 20):
    print(x)

print('======================')
for x in range(10, 20):
    print(x)

print('======================')
for x in range(10, 20, 3):
    print(x)

print('======================')
for x in range(20, 0, -3):
    print(x)

# 练习1:打印100以内所有的偶数
# 方法1:
print('==========方法1===========')
for x in range(100):
    if x % 2 == 0:
        print(x)

# 方法2:
print('===========方法2===========')
for x in range(0, 100, 2):
    print(x)
# 练习2:打印100~200中所有个位数是3的数
# 方法1:
print('===========方法1==========')
for x in range(100, 200):
    if x % 10 == 3:
        print(x)

# 方法2:
print('===========方法2===========')
for x in range(103, 201, 10):
    print(x)
# 练习3:打印所有的水仙花数
print('====================')
for x in range(100, 1000):
    if (x % 10)**3 + (x % 100 // 10)**3 + (x // 100)**3 == x:
        print(x)

print('===========方法2===========')
for num in range(100,1000):
    ge = num % 10
    shi = num // 10 % 10
    bai = num // 100
    if ge ** 3 + shi ** 3 + bai ** 3 == num:
        print(num)

while循环

# 1. while循环
"""
语法:
while 条件语句:
    循环体

说明:
while - 关键字;固定写法
条件语句  -  任何有结果的表达式(只有赋值语句不行)
: - 固定写法
循环体  -   和while保持一个缩进的一条或者多条语句;需要重复执行代码

执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件是否为True,如果为True就在执行循环体
...以此类推,当条件语句结果为False循环直接结束
"""
# 使用while循环控制打印10个‘hello’
num = 10
while num > 0:
    print('hello')
    num -= 1

# whil循环控制循环次数的原则:让条件经历过指定次数后由True变数False
# for x in range(10):
#   print('hello')

# 2. while和for的选择
# for循环:循环次数确定的时候使用
# while:循环次数不确定的时候使用(程序员在写代码的时候d)
# 练习:提示用户不断输入内容,直到输入的数据是0为止
value = ''
while value != '0':
    vlaue = input('请输入')

循环关键字

# 1. continue
"""
continue和break只能出现在循环体中
1) continue - 结束一次循环/结束当次循环
如果在执行循环体的时候遇到了continue,那么当次循环结束,直接进入下一次循环

2) break - 结束整个循环
如果在执行循环体的时候遇到了break,整个循环直接结束
"""
for x in range(4):
    print('===')
    continue
    print('+++')
    print('---')

# 2. 有了break的while循环
"""
while True:
    需要重复执行的操作
    if 循环结构的条件
        break
"""
while True:
    value = input('请输入')
    if value == '0':
        break
# 3. else
"""
for 变量 in 序列:
    循环体
else:
    代码段

完整的while循环:
while 条件语句:
    循环体
else:
    循环体
    
else结构的存在不影响原来循环的执行,当循环自然死亡else后面的代码段会执行,如果循环是因为遇到break而结束的else后面的代码段不执行
"""
for x in range(4):
    print(x, '=====')
    if x == 2:
        break
else:
    print('else')

基础题:

4.使用for和while循环输出 0~100内所有3的倍数。

# for循环
for x in range(3, 101, 3):
    print(x)

# while循环
print('============================')
num = 0
while num % 3 == 0:
    print(num)
    num += 3
    if num > 100:
        break

5.使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

# for循环
for i in range(100, 200):
    ge = i % 10
    shi = i // 10 % 10
    # print(ge, shi)
    if ge % 3 == 0 or shi % 3 == 0:
        print('100~200内个位数或者十位数能被3整除的数为', i)
print('-------------------------------------------')
# while循环
i = 100
while i < 200:
    ge = i % 10
    shi = i // 10 % 10
    if ge % 3 == 0 or shi % 3 == 0:
        print('100~200内个位数或者十位数能被3整除的数为', i)
    i += 1

6.统计100~200中十位数是5的数的个数

for x in range(100, 200):
    if x % 100 // 10 == 5:
        print('十位数是5的个数:', x)

7.打印50~150中所有能被3整除但是不能被5整除的数

for x in range(50,150):
    if (x % 3 == 0 ) and (x % 5 != 0):
        print(x)

8.计算50~150中所有能被3整除但是不能被5整除的数的和

num = 0
for x in range(50, 150):
    if (x % 3 == 0) and (x % 5 != 0):
        num += x
print('50~150中所有能被3整除但是不能被5整除的数的和', num)

进阶题

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

sum1 = 1 
for x in range(1, 11):    
    sum1 *= x 
print('1*2*3*4*...*10=', sum1)

2.统计100以内个位数是2并且能够被3整除的数的个数

count = 0
for x in range(2, 100, 10):
    if x % 3 == 0:
        count += 1
print('100以内个位数是2并且能够被3整除的数的个数:',count)

3.输入任意一个正整数,求他是几位数?

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

number = int(input('请输入一个正整数:'))
count = 1  # 计数,默认1位数
while number // 10:
    count += 1
    number /= 10
print('这是个', count, '位数')

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

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

for x in range(100,1000):
    a = x // 100
    b = x // 10 % 10
    c = x % 10
    if a ** 3 + b ** 3 + c ** 3 == x:
        print(x)

挑战题

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

num = int(input('请输入一个数:'))
for x in range(2, num):
    if num % x == 0:
        print('这个数不是质数!')
        break
else:
    print('这个数是质数!')

2.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

n = int(input('请输入一个正整数:'))
f1 = f2 = 1
if n == 1 or n == 2:
    print('第', n, '个数的斐波那契数列值为:',f1)
for x in range(2, n):
    f3 = f1 + f2
    f1 = f2
    f2 = f3
fn = f2
print('第', n, '个数的斐波那契数列值为:',fn)

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

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

4.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值