python循环 - 让代码重复执行

循环 - 让代码重复执行

1. for循环

1.1语法:

 for 变量 in 序列:
     循环体

1.2说明:

 1)for in - 都是关键字,固定写法
 2)变量 - 自定义一个变量名
 3)序列 - 容器型数据类型对应的数据
 4)常见的序列:字符串,元组,列表,字典,迭代器,生成器,集合
 5)循环体:重复执行的代码段
 6)执行过程:变量依次从序列中取值,取一次循环体执行一次,直到取完
for i in "I Love You":
print(i)

1.3 range 函数 - 产生指定的数字序列

 1)range(N) 产生[0-N)的数字序列,步长默认为1
 2)range(M,N) 产生[M,N)的数字序列,步长默认为1
 3)range(M,N,step) 产生[M,N)的数字序列 step为指定步长的值
for i in range(10):
    print(i)
print("---------------------")
a = 0
for i in range(0,100):
    a+=1
    print("hello")
print(a)
print("---------------------")
for i in range(10,20,2):
    print(i)
print("---------------------")
for i in range(20,2,-3):
    print(i)
练习1:打印100以内所有的偶数
for i in range(0,100,2):
    print(i)
练习2:打印100-200中所有个位数是3的数
for i in range(100,200):
    if i % 10 == 3:
        print(i)
练习3:打印所有的水仙花数
for i in range(100,1000):
    if (i//100)**3+(i//10%10)**3+(i%10)**3 == i:
        print("水仙花数:",i)
练习4:统计100以内的偶数个数
count = 0
for i in range(100):
    if i % 2 == 0:
        count+=1
print(count)
练习5:统计100以内能被3整除的偶数的个数
count = 0
for i in range(100):
    if i % 6 == 0:
        count+=1
print(count)
练习6:计算1+2+3+…+100的和
sum = 0
for i in range(101):
    sum += i
print(sum)
练习7:计算所有水仙花数的和
sum = 0
for i in range(100,1000):
    if (i//100)**3+(i//10%10)**3+(i%10)**3 == i:
        sum += i
print(sum)

2.while 循环

2.1语法:

while 条件语句:
	循环体

2.2说明:

2.2.1while - 关键字,固定写法
2.2.2条件语句 - 任何有结果的表达式
2.2.3循环体 - 重复执行的代码段

2.3规则:

2.3.1先判断条件,true执行循环体,执行完再次判断,
2.3.2如果为true再次执行,以此类推,直到条件不成立,循环结束
练习:使用while打印十个hello
num = 0
while num<10:
    print("hello")
    num += 1

2.4while 和 for的选择

2.4.1for循环:循环次数确定的时候使用
2.4.2while循环:循环次数不确定的时候使用
练习:提示用户不断输入内容,直到输入的数据是0停止
b = input("请输入:")
while b !='0':
    b = input("请输入:")

3.循环关键字

3.1 continue 和 break

  说明:只能出现在循环体中,for循环与while循环都可
3.1.1 continue - 结束一次循环/结束当次循环
 如果遇到continue,当次循环结束,直接执行下一次循环

实例1

for i in range(4):
    print('======')
    continue
    print('++++++')

实例2

for i in range(10):
    if i == 5 or i == 8:
        continue
    print(i)

3.1.2 break - 结束整个循环
 如果遇到break,整个循环结束

实例1

for i in range(10):
    print(i)
    break

实例2

for i in range(10):
    if i == 5:
        break
    print(i)

实例3

while True:
    value = input("请输入:")
    if value == '0':
        break

3.2 else关键字

说明:

for循环
for 变量 in 序列:
循环体
else:
代码段

while循环
while 条件语句:
循环体
else:

代码段

重点:else结构的存在不影响原来循环的执行

当循环正常结束时,继续执行else后面的代码段,否则不执行

实例1

for i in range(4):
    print(i,"====")
else:
    print("正常")

实例2

for i in range(4):
    print(i,"====")
    if i == 2:
        break
else:
    print("正常")

通过实例1和实例2的对比看else的作用,while相同

基础题

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

    for循环

    for i in range(0,100,3):
        print(i)
    

    while循环

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

for循环

for i in range(100,200):
    if (i%10) % 3 ==0 or (i//10%10) % 3 ==0:
        print(i)

while循环

x = 100
while x<200:
    if (x % 10) % 3 == 0 or (x // 10 % 10) % 3 == 0:
        print(x)
    x+=1
6. 统计100~200中十位数是5的数的个数
count = 0
for i in range(100,200):
    if i//10%10 == 5:
        count+=1
print(count)
7. 打印50~150中所有能被3整除但是不能被5整除的数
for i in range(50,150):
    if i % 3 ==0 and i % 5 !=0:
        print(i)
8. 计算50~150中所有能被3整除但是不能被5整除的数的和
sum = 0
for i in range(50,150):
    if i % 3 ==0 and i % 5 !=0:
        sum+=i
print(sum)

进阶题

1. 使用循环计算1*2*3*4*...*10的结果。
k = 1
for i in range(1,11):
    k*=i
print(k)
2. 统计100以内个位数是2并且能够被3整除的数的个数。
count = 0
for i in range(100):
    if i % 10 == 2 and i % 3 == 0:
        count+=1
print(count)
3. 输入任意一个正整数,求他是几位数?

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

b = int(input("请输入一个正整数:"))
count = 0
while b>0:
    b //=10
    count+=1
print("它是一个",count,"位数")
4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。
for i in range(100,1000):
    if (i//100)**3+(i//10%10)**3+(i%10)**3 == i:
        print("水仙花数:",i)

挑战题

1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
x = int(input("请输入一个数:"))
for i in range(2,x):
    if x % i == 0:
        print("这个数不是素数")
        break
else:
    print("这个数是素数")
2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
n = int(input('请输入一个正整数:'))
n1 = 0
n2 = 1
sum  = 1
for i in range(2, n+1):
    sum = n1 + n2
    n1 = n2
    n2 = sum
print('第',n,'个数是',sum)
3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1,10):
    for j in range(1,i+1):
        print(i,"*",j,"=",i*j,end='   ')
    print("")
4. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for i in range(34):
    for j in range(51):
        k = 100 - i -j
        if 3*i+2*j+k/2 == 100 and i+j+k==100:
            print("有大,中,小马各",i,j,k,"匹")

你可能感兴趣的:(python学习之路,python)