2022.5.5python复习题

Rye758 2022-05-05 16:42:27

目录

一、整数求和。输入整数n,计算1 ~ n之和。

二、整数排序。输入3个整数,把这3个数由小到大输出。要求通过列表来存储数据。

三、编写函数输出1-100中偶数之和。

四、编写函数,计算20*19*...*3的结果

五、编写函数,判断用户输入的整数是否为回文数。回文数是一个正向和逆向都相同的整数,如123454321、9889。

六、编写函数,判断用户输入的3个数字是否能构成三角形的三条边。

七、兔子数列又称斐波那契数列、黄金分割数列,它由数学家列昂纳多·斐波那契以兔子繁殖的例子引出,故此得名。


一、整数求和。输入整数n,计算1 ~ n之和。

解题思路

1. 定义存储输入与结果的变量

n = int(input("请输入n:"))    # 存储输入的值(注意输入的值类型为str,所以转为int存储)
s = 0    # 初始化结果

2. 可以看出1 ~ n之和是需要重复计算的,所以用到for循环

for i in range(1, n + 1):    # i会遍历[1,n+1),注意range函数左闭右开的性质,所以右边的n需要+1
    s += i    # s存储每次循环加一个i的值
print(s, "\n")    # 最后输出和s

 完整代码

def zsqh1():
    '''
    :输入:一个整数n
    :输出: 1 ~ n之和
    :return:无
    '''
    print("输出1 ~ n之和")
    n = int(input("请输入n:"))
    s = 0
    for i in range(1, n + 1):
        s = s + i
    print(s, "\n")

 运行结果

  

def的作用是可以让代码模块化,方便查看与调用,用法如下

def 函数名(参数):    # 注意后面的冒号一定要写,无参函数无需填参数
    函数体
    return 值    # 返回值,无返回值可不写

需要调用时方法如下

函数名(参数)    # 无参函数无需填参数

 

整数排序。输入3个整数,把这3个数由小到大输出。要求通过列表来存储数据。

 解题思路

1.定义一个空列表

a = []    #初始化列表

2.存储三个数字

for i in range(3):    # 循环三次
    a.append(int(input("请输入第%d个数:" % (i + 1))))    #提示输入的是第几个数字

range(3)等价于range(0, 3),当range函数只有一个参数时默认从0开始

3.列表排序需要用到sort()函数

a.sort()    # 默认升序,也就是从小到大,降序写法a.sort(reverse=True)
print(a)

这里需要注意的是如果直接写print(a.sort())的话结果是None

 完整代码

def zspx2():
    '''
    :输入:三个整数
    :输出: 从小到大
    :return:无
    '''
    a = []
    print("输入三个数后从小到大排序")
    for i in range(3):
        a.append(int(input("请输入第%d个数:" % (i + 1))))
    a.sort()
    print(a, "\n")

运行结果

 

编写函数输出1-100中偶数之和。

解题思路

1.定义存储和的变量

s = 0    # 初始化

2.确定数值范围

for i in range(1, 101):

3.判断为偶数时加上

if i % 2 == 0:    # 当i除2余数为0时执行下面的代码
    s += i
print(s)

 完整代码

def osh3():
    '''

    :输出:1-100偶数和
    :return:
    '''
    s = 0
    for i in range(1, 101):
        if i % 2 == 0:
            s += i
    print("1-100偶数和:%d" % (s), "\n")

运行结果

 

编写函数,计算20*19*...*3的结果

解题思路

 1.如果只追求答案一样代码如下

def cj4():
    '''

    :输出:20*19*...*3的积
    :return: 无
    '''
    s = 1
    for i in range(3, 21):
        s *= i
    print("20*19*...*3的积:%d" %(s), "\n")

2.严格按照题意来倒序的话range只需要小改一下

for i in range(20, 2, -1):    # 从20开始每次循环-1,最后一次循环时i=3
    s *= i

range(开始, 结束, 每次循环的变化)

每次循环的变化不写的话默认为1

完整代码

def cj4():
    '''

    :输出:20*19*...*3的积
    :return: 无
    '''
    s = 1
    for i in range(20, 2, -1):
        s *= i
    print("20*19*...*3的积:%d" %(s), "\n")

运行结果

 

编写函数,判断用户输入的整数是否为回文数。回文数是一个正向和逆向都相同的整数,如123454321、9889。

解题思路

1.定义输入和颠倒后的结果变量

a = input("请输入一个整数:")
b = a[::-1]    # 步长为-1倒序赋值给b

str[开始:结束:步长]

开始和结束为空时默认为头和尾

步长为正数时正序截取,反之倒序

2.判断正向和逆向是否相同

if a == b:    # 相等执行该分之
    print("该数是回文数", "\n")
else:    # 不相等执行该分之
    print("该数不是是回文数", "\n")

 完整代码

def hws5():
    '''
    :输入:一个整数
    :输出:是否为回文数
    :return:无
    '''
    print("判断是否为回文数")
    a = input("请输入一个整数:")
    b = a[::-1]
    if a == b:
        print("该数是回文数", "\n")
    else:
        print("该数不是是回文数", "\n")

运行结果

 

编写函数,判断用户输入的3个数字是否能构成三角形的三条边。

解题思路

1.定义一个空列表

a = []

2.存储三次输入的值

for i in range(3):
    a.append(int(input("请输入第%d个边:" % (i + 1))))

3.判断条件是否符合

amax = max(a)    # 获取a当中最大的值
a.remove(amax)    # 删除一个最大值
if a[0] + a[1] > amax:    # 剩下的两个值加起来是否大于最大值,是则执行该分支
    print("可构成三角形", "\n")
else:    # 否则执行该分支
    print("不可构成三角形", "\n")

 完整代码

def sjx6():
    '''
    :输入:三个边长
    :输出:是否可构成三角形
    :return: 无
    '''
    a = []
    print("判断三个边是否可构成三角形")
    for i in range(3):
        a.append(int(input("请输入第%d个边:" % (i + 1))))
    amax = max(a)
    a.remove(amax)
    if a[0] + a[1] > amax:
        print("可构成三角形", "\n")
    else:
        print("不可构成三角形", "\n")

运行结果

 

七、兔子数列又称斐波那契数列、黄金分割数列,它由数学家列昂纳多·斐波那契以兔子繁殖的例子引出,故此得名。兔子繁殖的故事如下:

兔子一般在出生两个月之后就有了繁殖能力,每对兔子每月可以繁殖一对小兔子,假如所有的兔子都不会死,试问一年以后一共有多少对兔子?

本案例要求编写代码,利用递归实现根据月份计算兔子总数量的功能。

 

解题思路

1.首先要理解兔子数列是什么

如下图所示7个月的数量

(图片来自网络)

根据所得到的规律可以发现从3月开始数量就有一定的规律,3月的数量等于1月和2月的数量总和,4月的数量等于2月和3月的总和,由此后续推理如下

 (图片来自网络)

2.定义三个初始变量

n = 12    # 十二月
a = 1    # 第一个月
b = 1    # 第二个月

 3.循环计算到12月

for i in range(3, n + 1):    # i为月份,规律从3月开始所以循环也从3开始
    c = a + b    # c代表当前月的兔子数量
    b = a    # 上上个月兔子数量(b)更新为上个月兔子数量(a)
    a = c    # 上个月兔子数量(a)更新为当月兔子数量(c)
print("一年后有%d只兔子" % (c), "\n")

 完整代码

def tzsl7():
    '''
    :输出:一年后兔子数量
    :return:无
    '''
    n = 12
    a = 1
    b = 1
    for i in range(3, n + 1):
        c = a + b
        b = a
        a = c
    print("一年后有%d只兔子" % (c), "\n")

运行结果

...全文
541 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

208

社区成员

发帖
与我相关
我的任务
社区描述
一个专注于研究软件新技术的社区
软件工程 高校
社区管理员
  • 勤奋龙
  • 没有一分是自己的
  • Rye758
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧