ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PY期末习题全解析

2021-12-23 21:35:11  阅读:136  来源: 互联网

标签:递归 int PY range delta print input 习题 解析


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程序。

 

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

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

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))

 

标签:递归,int,PY,range,delta,print,input,习题,解析
来源: https://www.cnblogs.com/SpeedZone/p/15723640.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有