一、循环语句while
1、语法格式
while循环语法格式
while 表达式:
执行语句
while嵌套
while 表达式1:
while 表达式1-1:
执行语句1-1
执行语句1
2、注意事项
循环语句必须有指定的结束条件,否则会陷入死循环。
循环语句分为两种控制方法:
条件控制
计数控制
3、小练习
1、去超市买十斤苹果。(条件控制循环)
total = 0
while total < 10:
weight = float(input())
total += weight
2、去超市买10个苹果。(计数控制循环)
count = 1
while count<=10:
print(f"开始拿第{count}个苹果")
count += 1
3、输入用户名和密码,判断用户名为admin密码为hqyj666,若用户名和 密码正确,提示登录成功;否则重新再次输入判断。
while True:
name = input("用户名")
pwd = input("密码")
if name == 'admin' and pwd == 'hqyj666':
print("登录成功")
break
else:
print("输入错误,请重新输入")
4、上面题目的改写,三次密码验证
count =1
while True:
name = input("用户名")
pwd = input("密码")
if name == 'admin' and pwd == 'hqyj666':
print("登录成功")
break
else:
print("输入错误,请重新输入")
count += 1
if count > 3:
print("三次机会已用完,请联系管理员")
break
5、输出0到100之间所有能被3或5整除的数
i = 0
while i < 100:
if i % 3 ==0 or i % 5 ==0:
print(i)
i += 1
6、计算1到100的累加和
i = 0
sum = 0
while i < 100:
i += 1
sum += i
print(sum)
7、计算1到100的偶数累加
i = 0
sum = 0
while i < 100:
i += 1
if i % 2 == 0:
sum += i
print(sum)
8、从键盘输入起始值为a,终止值为b,计算a到b之间能被3整除的偶数之和
a,b = map(int,input().split())
sum = 0
while a <= b:
if a % 3 == 0 and a % 2 == 0:
sum += a
a += 1
print(sum)
9、从键盘输入起始值为a,终止值为b,必须保证a<b,计算a到b之间能被3整除但不能被5整除的奇数的平方和
a,b = map(int,input().split())
sum = 0
if a > b:
a,b = b,a
while a <= b:
if a % 3 == 0 and a % 5 != 0 and a % 2 !=0:
sum += a ** 2
a += 1
print(sum)
10、打印如下三角形
num = int(input())
i = 1
while i <= num:
j = 1
while j <= i:
print("*",end=' ')
j += 1
i += 1
print()
11、打印九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print(f"{j}*{i} ={j*i:2}",end=' ')
j += 1
i += 1
print()
二、循环语句for
1、基本的for循环
1、语法格式
for语法格式:
for 临时变量 in 被遍历对象:
代码块
2、注意事项
1.被遍历的对象可以是任意序列也可以是一个区间范围。
2.只要被遍历对象没有遍历完,就可以一直循环遍历,直到遍历结束。
2、range()函数
1、语法格式
range(起始值start, 终止值end, 步长值step)
2、注意事项
1.range返回的区间范围是 [start , end),也就是说不包含终值end
2.参数1,start默认是0,可以省略不写
3.参数2,end没有默认值,不可以省略
4.参数3,step默认值为1,可以省略不写
3、len()函数
1、语法格式
len( s )
2、注意事项
通常和range配合使用,用于序列中元素的计算。
3、小练习
1、1到100累加求和
sum = 0
for i in range(101):
sum +=i
print(sum)
2、输出100到999之间的所有水仙花数
for i in range(100,1000):
a=i%10
b=i//10%10
c=i//100%10
if (a**3 + b**3 + c**3) == i:
print(i)
3、打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f"{j}*{i} ={j*i:2}",end=' ')
j += 1
i += 1
print()
4、打印一个n行的等腰三角形
n = int(input())
for i in range(1,n+1):
print(' '*(n-i)+'*'*(2*i-1),end='')
i += 1
print()
5、输入任意两个数,输出两数之间(包括这两个数)偶数之和
sum = 0
a,b = map(int,input().split())
for i in range(a,b+1):
if i % 2 == 0:
sum += i
print(sum)
6、输入一个数,输出这个数的所有因子
n = int(input())
for i in range(1,n+1):
for j in range(1,i+1):
if i * j == n:
print(i,j)
7、输入一个数,判断这个数是不是质数
n = int(input())
for i in range(2,n):
if n % i == 0:
print("不是质数")
break
else:
print("是质数")
8、输出100以内的所有质数
for i in range(2,101):
flag = True
for j in range(2,i):
if i%j == 0:
flag = False
if flag:
print(i)
9、编程求 2000 以内的所有“完数”。 完数是指一个数恰好等于它的真因子值之和, 例如:6是完数,因为 6=1+2+3
for i in range(2,2001):
sum = 0
for j in range(1,i):
if i % j ==0:
sum += j
if sum == i:
print(i)
10、百钱买百鸡是一个很经典的问题,请使用穷举法求出,用一百块钱买一百只鸡, 共有哪几种买法(公鸡5块钱一只,母鸡3块钱一只,小鸡1块钱三只)
for i in range(0,101):
for j in range(0,101):
for k in range(0,301):
if 5 * i +3 * j +k / 3 == 100 and i + j + k == 100:
print(i,j,k)
11、已知一串5位数的密码,满足a开头,取值范围是1-9,其他4位由b c d e代替 取值范围是0-9。密码要满足下面两个条件: ①abcde * a == eeeeee ②a b c d e互不相等
for a in range(1,10):
for b in range(10):
for c in range(10):
for d in range(10):
for e in range(10):
if (e+d*10+c*100+b*1000+a*10000)*a==(e+e*10+e*100+e*1000+e*10000+e*100000) and a!=b!=c!=d!=e:
print(a,b,c,d,e)
12、1.用户由键盘输入用户名和密码,分别保存在user和psd中 # 1、同时验证用户名和密码是否正确,用户名默认为admin,密码默认为666888 # 2、如果正确提示登录成功,否则提示用户名或密码错误,请重新登录 # 3、以上功能最多尝试5次,若次数用完未能成功,则提示登录失败
for i in range(5):
user = input("用户名:")
pwd = int(input("密码:"))
if user == 'admin' and pwd == 666888:
print("登录成功")
n = 1
break
else:
print("用户名或密码错误,请重新输入")
else:
print("登录失败")
13、设计一个逢7过的小游戏,输出100以内结果
for i in range(101):
if i == 7 or i//10%10==7 or i%10 == 7:
continue
else:
print(i)
14、猜数字游戏:用户输入任意一个数字与随机生成的数字比较, 两个数字一样就赢了(100 以内) 要求: (1) 使用random模块 【import random】 (2) 有三次猜错机会,猜对则打印数字 【生成随机整数random.】 (3) 用while循环实现功能
import random
n = random.randint(1,101)
i = 0
while i < 3:
a = int(input("请输入数字:"))
if n == a:
print("恭喜你,猜对了")
else:
print("猜错了,请重新输入:")
i += 1
else:
print("机会用完了")
15、使用循环语句,计算下面的表达式
(1) 1 + 1*2 + 1*2*3 + …… + 1*2*3*...*n
sum = 1
m = 0
n = int(input())
for i in range(1,n+1):
sum = sum * i
m += (sum)
print(m)
(2) 1 + 1/2 + 1/3 + 1/4 + .... + 1/n
sum = 0
n = int(input())
for i in range(1,n+1):
sum += (1/i)
print(sum)
(3) 1/2 + 2/3 + 3/4 + ...... + n/(n+1)
sum = 0
n = int(input())
for i in range(1,n+1):
sum += i/(i+1)
print(sum)
(4) 1 - 1/2 + 1/3 - 1/4 + ...
sum = 0
n = int(input())
for i in range(1,n+1):
if i % 2 == 0:
sum -= (1 / i)
if i % 2 != 0:
sum += (1/i)
print(sum)