PY期末习题全解析

1.判断闰年

编写程序判断输入的年是否为闰年。四年一闰;百年不闰,四百年再闰;千年不闰,四千年再闰。

选择结构的经典例题,关键在于对题目信息的整合,意识到千年和四千年的条件都是百年和四百年的子集。

a=int(input())
if a%4==0 and a%100!=0: #先描述出题目对于闰年的判断
    print("Yes")
elif a%400==0:          #这个是特殊情况,特殊判断
    print("Yes")
else:                   #其他情况全部都不是闰年
    print("No")

 

2.编程求解一元二次ax2+bx+c=0。

按照初中数学的方式来就行,把求根公式的过程用ifelse铺开

最大的障碍在虚根咋求忘了

import cmath
import math
a=int(input())
b=int(input())
c=int(input())
delta=b*b-4*a*c
if delta>0:                        #当delta>0时
    print(-b+math.sqrt(delta)/2*a) #B方减4AC系列
    print(-b-math.sqrt(delta)/2*a)
elif delta==0:                     #当delta=0时
    print(-b/2*a)
else:                              #当delta<0时
    print(-b+cmath.sqrt(delta)/2*a)#求虚根
    print(-b-cmath.sqrt(delta)/2*a)

 

3.在火车站托运行李时,规定50千克以内,每千克2元,超过部分每千克收费1.5元,编写程序,实现输入重量,输出付款金额。

比前两道题还简单的题目,描述题干即可

a=eval(input())
if a<50:
    print(a*2)
else:
    print(100+(a-50)*1.5)

 

4.打印九九乘法表。分别写出格式一和格式二对应的Python程序。

PY期末习题全解析

 

建议配合这篇文章食用,关键在于第二层循环的含义以及控制的循环次数问题,

第一层循环进行一次,第二次循环进行一轮,像钟表一样。

for i in range(1,10):
    for j in range(1,i):                    #二层循环每一轮都比前一轮多循环一次
        print(j,"*",i,"=",i*j,end=" ")      #结尾的end参数控制输出的最后是个空格还是个换行
    print("\n")
for i in range (1,10):
    for j in range(1,10):
        if j<i:
            print("         ",end=" ")
        else:
            print(j,"*",i,"=",j*i,end=" ")
    print("\n")

 

5.算阶乘

先展示正常版的代码,也是循环的做法,这可以说是循环最最基础的应用了

从1循环到n即可

n=int(input())
t=1                     #设置变量t用于统计,注意必须要设置成1,不能是0.变量的名字随意起
for i in range(1,n+1):  #从2乘到n
    t*=i
print(t)

不正常版就是递归的脑瘫做法,不仅慢还只能算到1000(python递归限制1000层)

def jiecheng(n):
    if n==1:                  #每个递归都要有一个退出条件,这个条件是整个递归思路的大组成部分
        return 1
    else:
        return n*jiecheng(n-1)#不难发现这里的公式基本就是循环方法的公式倒着写
n=int(input())
print(jiecheng(n))

 

6.斐波那契数列前20项

题干里面可以说吧递归的核心表达式直接给你了

退出条件考虑给你的那三个特殊值,递归的时候从后往前递归,总会回到那几个特殊值

def fib(n):
    if n==0:                       #条件1
        return 0
    elif n==1 or n==2:             #条件2
        return 1
    else:
        return fib(n-1)+fib(n-2)   #fib的公式逆推法
for i in range(1,21):
    print(fib(i))

 

上一篇:笔记本如何设置插入USB鼠标自动禁用触摸板


下一篇:通信原理 -- 码元