Python常见分支、循环结构例题演练!

小白如何成为python数据分析师

第三天----代码演练

要掌握新的知识,除了多看,更重要的还是得多练,正所谓熟能生巧,当你将某一个知识点应用的得心应手,相应的你对这个知识点已经有了自己透彻的理解,日积月累下可想而知是多么了不起的!

1.分支结构和循环结构----的代码练习!

一.分支结构

在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。

多分支结构:代码越扁平越好,扁平可读性好。可以嵌套使用,但是不能嵌套的太深,影响可读性。不可读就无法维护。
代码块:保持相同缩进的就是一个代码块;
1.英制单位转换为公制单位:
x = float(input('请输入长度:'))
print(f'{x} = {x * 2.54}厘米')
      
2.英制单位英寸和公制单位厘米互换:
# 我们要确定输入单位的是英寸还是厘米,才好进行下一步的转换计算。
# 我们不确定输入的格式是否正确及计算次数。可以使用while循环实现。

while True:
    value = float(input('请输入长度'))
    # float:输入为浮点数。
    unit = input('请输入单位: ')
    if unit == 'in' or unit == '英寸':
        # 判断输入单位,
        print('%f英寸 = %f厘米' % (value, value * 2.54))
    elif unit == 'cm' or unit == '厘米':
        # 判断输入单位,
        print('%f厘米 = %f英寸' % (value, value / 2.54))
    else:
        print('请输入有效的单位')
        

# 想让循环结束,可以使用“break”关键字  ,或者设定循环条件,不满足时退出。  
    

3.分段函数求值,—> 如何构造多个分支
分段函数求值,
     3x-5,x>1
f(x)=x+2,-1<=x<=1
     5x+3,x<=-1
x = float(input('x='))
if x > 1:
    y = 3 * x - 5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3
print(f'f(x)={y}')

# 我们也可以一直使用if来构造分支:只是会比较不方便。
x = float(input('x='))
if x > 1:
    y = 3 * x - 5
if x >= -1:
    y = x + 2
if x <= -1:
    y = 5 * x + 3
print(f'f(x)={y}')

4.个人所得税计算器

在这里插入图片描述

total = float(input('本月收入: '))
insurance = float(input('五险一金扣除: '))
E = total - insurance
I = E - 3500
if 0 < I <= 1500:
    R = 0.03
    D = 0
elif I <= 4500:
    R = 0.1
    D = 105
elif I <= 9000:
    R = 0.2
    D = 555
elif I <= 35000:
    R = 0.25
    D = 1005
elif I <= 55000:
    R = 0.3
    D = 2755
elif I <= 80000:
    R = 0.35
    D = 5505
else:
    R = 0.45
    D = 13505
if I > 0:
    T = I * R - D
else:
    T = 0
print(f'应纳税款: {T:.2f}元')
print(f'税后收入: {E - T:.2f}元')

二.循环结构

循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

for-in循环
# 输出0~100的整数。
for i in range(1, 101):  # 在0~100取数。
    print(i)

注意:在编程语言中,括号”()“都是左闭右开:左边闭区间,右边开区间,所以想取完数就得n+1。

1.1~100求和:
t = 0
for i in range(1, 101):
    t += i 
print(f'和为:{t}')

# 我们也可以直接调用函数模块计算。
total = sum(range(1, 101))
print(total)
2. 1~100求3或者5的倍数和:
total = 0
for i in range(1, 101):
    if i % 3 == 0 or i % 5 == 0:
        total += i
print(total)

3.实现1-100之间的偶数求和,奇数求和
# 偶数和
total = 0
for i in range(2, 101, 2):
    # 直接利用步长取出偶数。
    total += i
print(total)

#奇数和
total = 0
for i in range(1, 101):
    if i % 2 != 0:
        total += i
    else:
        pass
    #跳过
print(total)
4.输入你,求n!------->n!=n*(n-1)(n-2)
n=int(input('N='))
total = 1
if n>0:
    for i in range(1,n+1):
        total* = i
print(total)

5.输入两个数,找到它们的公约数
x=int(input('x='))
y=int(input('y='))
for i in range(x,0,-1):
    if x%i==0 and y%i==0:
        print(i)
        # break结束,找到就结束,
        break
        
# 方法二---奥基里德算法求公约数.
x = int(input('x='))
y = int(input('y='))
while y % x != 0:
    # x = y % x
    # y = x
    x, y = y % x, x
print(x)


6.输入N,输出1-N以及它们对应的平方立方、的NN次方
n = int(input('请输入n='))
print('N'.ljust(10), end='')
# 输出元素距离10,不换行
print('N^2'.ljust(10), end='')
print('N^3'.ljust(10), end='')
print('N^N'.ljust(10))
for i in range(1, n+1):
    print(f'{i:<10d}{i ** 2:<10d}{i ** 3:<10d}{i ** i:<10d}')
    





课后练习

练习了这么多,相信你对分支结构,循环结构有了自己的认知,动手自己试试下面的例题,检验自己学到了多少。

1. 找出100~999之间的水仙花数(各位数字的立方和刚好等于这个数本身)
    153 = 1^3 + 5^3 + 3^3
2. 找出1~10000之间的完美数(除自身外所有因子的和等于这个数)
    6 = 1 + 2 + 3
    28 = 1 + 2 + 4 + 7 + 14
3. 输入m和n(m >= n),计算C(m, n)的值 ---> m! / (n! * (m - n)!)
4. 输入一个正整数,判断它是不是质数(只能被1和自身整除的数)
5. 输入三角形三条边的长度,如果能构成三角形就计算周长和面积,
如果不能构成三角形,提示用户重新输入,直到正确!

# 1.寻找水仙花数:

for i in range(100,1000):
    low = i % 10
# 取个位
    mid = i // 10 % 10
# 取十位
    high = i // 100
# 取百位
    if i== low**3 +mid**3+high**3:
        print(i)
print('水仙花数有:')


# 2.找出1~10000的完美数,
for i in range(1,10001):
    num = 0
    for k in range(1, i):
        if i % k == 0:
            num += k
    if num == i:
        print(i)

 # 3.输入n,m,计算c=m!/(n1*(m-n)!)
m = int(input('m='))
n = int(input('n='))
a = 1
b = 1
d=1
c = m - n
if m >= n:
    for i in range(1, m + 1):
        a *= i
                #a=m!
    for j in range(1, n + 1):
        b *= j
               #b=n!
    for f in range(1, c + 1):
        d*= f   #d=c!
print(a / (b * d))

# 4.输入一个数判断是否是质数(素数)
n = int(input('n='))
if n == 1 :
    print(f'{n}不是质数')
if n == 2:
    print(f'{n}是质数')
for i in range(2, n):
    # 找到2到n的因子
    if n % i == 0:
        print(f'{n}不是质数')
        break
    else:
        print(f'{n}是质数')
        break

#  方法2,改进版,使用布尔值。
num = int(input("请输入一个正整数:"))
is_prime = True #假设是质数
for i in range(2, num): #进入循环
    # for i in range(2,int(num**0.5)+1):减少循环次数,
    if num % i == 0:
        is_prime = False
        break
if is_prime and num > 1:
    print(f'{num}是质数')
else:
    print(f'{num}不是质数')

# 5.输入三条边长,如果能构成三角形就计算周长和面积。不能提醒重新输入。直到输入正确。
# 当我们不知道循环次数时,使用while 循环。

while True:
    a = float(input('a='))
    b = float(input('b='))
    c = float(input('c='))
    if a + b > c and a + c > b and b + c > a:
        peri = a + b + c
        print(f'周长: {peri}')
        half = peri / 2
        area = (half * (half - a) * (half - b) * (half - c)) ** 0.5 # 海伦公式
        print(f'面积: {area}')
        break
    else:
        print('不能构成三角形')
        print('请重新输入')

版权声明:本文为qq_45691413原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。