Python从入门到精通,100天就够了!(3)——分支与循环结构练习

上一篇文章讲了Python里面分支结构(选择结构)和循环结构,但是分支和循环结构的重要性不言而喻,它是构造程序逻辑的基础,对于初学者来说也是相对困难的部分。大部分初学者在学习了分支和循环结构后都能理解它们的用途和用法,但是遇到实际问题的时候又无法下手;看懂别人的代码很容易,但是要自己写出同样的代码却又很难。如果你也有同样的问题和困惑,千万不要沮丧,这只是因为你才刚刚开始编程之旅,你的练习量还没有达到让你可以随心所欲的写出代码的程度,只要加强编程练习,这个问题迟早都会解决的。下面我们做一些经典案例提升我们对这两个结构的熟练度。

1.找出100~999之间的水仙花数(各位数字的立方和刚好等于这个数本身) 例如:153=1^3+5 ^3 +3 ^3
for i in range(100, 1000):
    A = i // 100
    B = i // 10 % 10
    C = i % 10
    if A ** 3 + B ** 3 + C ** 3 == i:
        print(i)

这道题难点主要在于如何把一个数的各个位置上的数字表示出来。三位数直接被100整除即可得到百位上的数字,把该三位数除以10再取余就可得到个位,三位数被整除10再除以10取余就可得到十位。最后用分支结构判断各位数字的立方和是否刚好等于这个数本身来判断是否是水仙花数。

2.输入一个数字,对该数字进行翻转输出。
m = int(input('请输入m:'))
total = 0
while m > 0:
    total = total * 10 + m % 10
    m = m // 10
print(total)

这道题和上道题一样,只是用一个变量存储每次取余后的数,下一次将总数乘10再加上本次的余数,循环条件为处理后的m大于0。

3.找出1~1 0000之间的完美数(除自身外所有因子的和等于这个数)例如:6=1+2+3, 28=1+2+4+7+14
for num in range(2, 10000001):
    total = 1
    for i in range(2, num):
        if num % i == 0:
            total = total + i
    if num == total:
        print(num)
4.输入m和n(m>=n),计算C(m,n)的值—>m!/(n!*(m-n)!)
m = int(input('请输入m:'))
n = int(input('请输入n:'))
fm = 1
fn = 1
fk = 1
for m in range(2, m + 1):
    fm *= m
for n in range(2, n + 1):
    fn *= n
for i in range(2, m - n + 1):
    fk *= i
print(fm // fn // fk)
5.输入一个正整数,判断它是不是质数(只能被1和自身整除的数)
num = int(input('请输入一个正整数:'))
for B in range(2, num + 1):
    if num % B == 0:
        break
if num > 1 and num == B:
    print(f'{num}是一个质数')
else:
    print(f'{num}不是一个质数')
6.打印出1-100中的质数。

第一种方法:

for num in range(2, 100):
    is_prime = True
    for i in range(2,int(num ** 0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num, end=' ')

第二种方法:

for num in range(2,100):
    for i in range(2,num+1):
        if num % i == 0:
            break
    if num == i:
        print(num,end=' ')
7.打印出乘法口诀表(9X9)。
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{j}X{i}={i*j}', end='\t ')
    print()
8.输入三角形三条边的长度,如果能构成三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入,直到正确。
while True:
    a = float(input('a = '))
    b = float(input('b = '))
    c = float(input('b = '))
    if a + b > c and a + c > b and b + c > a:
        p = a + b + c
        half = p / 2
        area = (half * (half - a) * (half - b) * (half - c)) ** 0.5
        print(f'三角形周长为{p}')
        print(f'三角形面积为{area:.2f}')
        break
    else:
        print('不能构成三角形,请重新输入')
9.斐波拉切数
n = int(input('请输入一个正整数:'))
a, b = 1, 1
print(a, b, sep='\n')
for _ in range(2, n):
    c = a + b
    print(c)
    a = b
    b = c
10.百钱百鸡问题(鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,各多少只)
for x in range(0, 21):
    for y in range(0, 34):
        z = 100 - x - y
        if z % 3 == 0 and 5 * x + 3 * y + z / 3 == 100:
            print(f'鸡翁:{x}只,鸡母:{y}只,鸡雏:{z}只')

这十道题都是循环与分支结构很经典的练习题,如果能理解但是还不能独立写出来,那就还需要多加练习呀!

Get It!
请添加图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值