循环结构练习题

day05下创建一个名为12-for-in循环练习的代码文件
练习一:求出一个范围内所有的水仙花数
for num in range(100, 1000):
    unit = num % 10
    dacade = num // 10 % 10
    hundred = num // 100
    if unit ** 3 + dacade ** 3 + hundred ** 3 == 
        print(f'{num}是一个水仙花数')
    # else:
        # print(f'{num}不是水仙花数

在这里插入图片描述
我们得出100~1000之间的水仙花数有四个

练习二:计算1-100的和
total = 0
for i in range(1, 101):
    total += i
print(f'1-100的和为{total}')

在这里插入图片描述

练习三:计算出100的阶乘。阶乘:5的阶乘 = 5! = 5 * 4 * 3 * 2 *1
total = 1
for i in range(1, 101):
    total *= i
print(f'100的阶乘为{total}')

在这里插入图片描述

PS:也可以是range(2, 101),但total不能从0开始,
day05下创建一个名为14-while循环练习的代码文件
练习三:使用while循环计算1-100的和
total = 0
i = 1
while i <= 100:
    total += i
    i += 1
print(f'1-100的和为{total}')

在这里插入图片描述

day05下创建一个名为16-练习的代码文件
练习四:统计100以内个位数是2并且能够被3整除的数是个数
n = 0
for i in range(10, 101):
    if i % 10 == 2 and i % 3 == 0:
        n += 1
print(f'个数{n}')

number = 0
for i in range(2, 93, 10):
    if i % 3 == 0:
        number += 1
print(f'100以内个位数是2并且能够被3整除的数是个数为{number}')
练习五:输入任意一个正整数,求他是几位数?
num = 123
lenght = 0  # 原始长度为0
while True:
    num //= 10  # 赋值
    lenght += 1  # 每循环一次,num减少一位数字,实际长度加一
    if num == 0:
        break  # if num == 0将循环停掉
print(f'这是一个{lenght}位数')

n = int(input())
m = 0
while n != 0:
    n //= 10
    m += 1
print(m)
第六题:求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34…(这儿的n可以是任意正整数,可以通过输入来确定)
a = 1  # 初始时,第一个数
b = 1  # 初始时,第二个数  
# n = 3, result = 2,1 + 1 = 2,一次计算过程算出第三个数
# n = 4,result = 3,1 + 1 = 2,1 + 2 = 3,二次计算过程算出第四个数
# n = 5,result = 5,1 + 1 = 2,1 + 2 = 3,2 + 3 = 5,三次计算过程算出第五个数
# 要算n个数的话,从头到尾,我们需要n-2次计算过程
n = 8  #意味着要做6次计算
for _ in range(n - 2):  # for循环计算次数,变量用—_代替
    mid = a + b  # 初始时,mid = 2
    a = b  # 把b赋予a,相当于是把a往后挪了一下
    b = mid  # 依次循环,b的位置也往后挪了一位,直到循环结束
print(f'第{n}个数为{mid}')

在这里插入图片描述

第七题:输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。外层循环表示九九乘法表的行

规律:第一行有一列,第二行有两列,第三行有三列……第九行有九列
列被航控制,意味着行是外层循环(循环9次),列是内层循环



for i in range(1, 10):  # 循环执行9次,外层循环表示九九乘法表的行
    for j in range(1, i + 1):   # 内层循环表示列,列被行控制的
        print(f'{i}*{j}={i * j}', end='\t')
        # \t转义字符,自带特殊作用,代表键盘上的制表符tab,\t中的t也有table表格的意思,
        # 当输出结果类似表格形式时,\t能够起到对其作用。
    # 虽然print()不打印任何结果,但是end参数始终在起作用。
    print()

在这里插入图片描述

第八题:这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法 --> 找极值)
# 使用x、y、z三个变量代表大马、中马、小马
# x + y + z = 100,3 * x + 2 * y + 0.5 * z = 100
# 说明只有两个条件,不能用三元一次方程
for x in range(0, 35):  # 假设用的全都是大马,需要34匹,33 * 3 = 99还有1担货
    for y in range(0, 51):  # 假设用的全都是中马,需要50匹
        for z in range(0, 101):  # 假设用的全都是小马,需要100匹
            if x + y + z == 100 and 3 * x + 2 * y + 0.5 * z == 100:
                print(f'大马{x}匹,中马{y}匹,小马{z}匹')

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值