聪明办法学python学习笔记2

文章解析了五道编程练习题,涉及数学公式、级数求和、取模运算和数组操作,展示了如何利用Python的基础语法解决实际问题,适合初学者学习。
摘要由CSDN通过智能技术生成

今天更新一下Chapter2练习题中的问题:

第一题

根据这道题,以及提供的代码模板,我们可以把代码写成:

import ast

n = ast.literal_eval(input())

# 在这行注释下面,编写代码,输出你的答案

# 利用数学公式计算总台球数
total_balls = n * (n + 1) // 2

print(total_balls)

详细分析一下代码意义:

Total_balls = n * (n + 1) // 2: 此行使用算术级数之和的公式计算台球总数。 公式为n * (n + 1) // 2,表示前n个正整数之和。

n:行数。
(n + 1):n 之后的下一个数字。
n * (n + 1):n 与下一个数字的乘积。
n * (n + 1) // 2:乘积除以2所得的和(算术级数公式中的重复计算和)。
print(total_balls):该行打印计算出的台球总数。

总之,这个代码无需使用循环、递归或其他复杂结构,它其实依赖一个简单的数学公式,这个公式利用了算术级数的特性。

第二题

import ast
eggs = ast.literal_eval(input())

# 在这行注释下面,编写代码
min_boxes = eggs // 12 + (1 if eggs % 12 != 0 else 0)
print(min_boxes)

详细分析一下代码意义:

min_cartons = (eggs + 11) // 12: 此行计算存储给定数量的鸡蛋所需的最小鸡蛋盒数量。 公式 (鸡蛋 + 11) // 12 确保将剩余的鸡蛋装入完整的纸箱后,计入另一个纸箱中。 鸡蛋总数加 11,然后除以 12。

print(min_boxes):该行打印计算出的鸡蛋盒的最小数量。

第三题

n, k = map(int, input().split(','))

kth_digit = n // 10 ** k % 10
print(kth_digit)

详细分析一下代码意义:

kth_digit = n // 10 * * k % 10: 此行计算数字 n 中从右边算起的第 k 位数字。

10**k:10 的 k 次方。
n // 10**k:n 除以 10 的 k 次方的整数。 这有效地删除了最后 k 位数字。
% 10:除以 10 取余数,得到右数第 k 位。
print(kth_digit):该行打印计算出的第 k 位数字。

第四题

import ast
import math
n = ast.literal_eval(input())
x = (-1 + ( 1 + 8 * n) ** (1/2)) / 2
print(math.ceil(x))

根据题目要求,我们了解到3行最多包含6个台球,那画个图大概就是

。。

。。。

。。。。

。。。。。

。。。。。。

。。。。。。。

。。。。。。。。

按照上面的图,我们可以分析出来,每一行都是比前面一行要多出一个球,根据找规律,我们可以明白 

x = (-1 + (1 + 8 * n) * * (1/2) ) / 2 代表的就是台球的总行数

第五题

import ast
n = ast.literal_eval(input())


total_balls = sum(range(1, n + 1))
print(total_balls)

其实这道题跟上面的解题思路是一样的,只是公式比上面的要简单一些,因此

total_balls = sum (range (1, n+1)) 计算出来的就是总共的数量。

本人只是计算机系小白一只,做这个笔记只是记录在做题的过程中学习到的知识,看看每天进步的一点点!

所有题目版权由DataWhale管理,请勿擅自挪用,谢谢配合!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值