Python编程挑战赛

alt
alt
alt

题1:给小朋友分糖,每人分到糖的数量不同,输入小朋友的数量,计算至少需要多少糖?

思路:第1个小朋友1颗糖,第2个小朋友2颗糖,第3个小朋友3颗糖,……第n个小朋友n颗糖,计算1+2+……+n的和即可。

第1种写法:不用Python高级函数

n = int(input())
r = 0
for i in range(1, n + 1):
    r = r + i
print(r)

第2种写法:用Python高级函数


def splitcandy(n):
    return sum(list(range(1,n+1)))
    
n = 10
print(splitcandy(n))

题2:韩信点兵

一队士兵,3个一数多2人,5个一数多3人,7个一数多2人,问总共有多少人?输入一个数字n,判断在1~n之间有多少满足要求的数字。

第1种写法:不用函数

n = int(input())
for i in range(n):
    if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
        print(i)

第2种写法:函数并数组输出

def hanxin(n):
    ans = []
    for i in range(n):
        if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
            ans.append(i)
    return ans

题3:小明家里有很多不同的趣味书籍,有3个好朋友每人来借一本书(同一本书一次不能借给两个人)

任意输入书籍的数量n(3<=n<=100),输出在所有的书籍中,找3本书给3个人有多少种不同的排列组合方法。

【输入样例】 3 【输出样例】 6

排列组合问题

n = int(input())
print(n * (n - 1) * (n - 2))
全国青少年信息素养大赛中的Python编程挑战赛是许多学生提升编程能力的重要途径。复赛题目通常涉及较为复杂的逻辑和算法,涵盖如数学运算、字符串处理、列表操作、条件判断及循环结构等知识点。 以下是根据过往真题整理的一些常见题型及其解法: ### 数学运算类题目 这类题目通常要求选手编写程序完成特定的数学计算。例如,输入一个正整数 N (0 ≤ N ≤ 1000),然后计算并输出(5*N)的值。这种类型的题目相对简单,主要考查input函数、int函数、print函数以及基本的算术运算[^1]。 ```python n = int(input()) print(5 * n) ``` ### 模运算与取余操作 模运算是另一种常见的数学操作,用于求两个数相除后的余数。例如,输入一个数字后,计算其除以5的余数。 ```python n = int(input()) print(n % 5) ``` ### 组合与排列问题 握手次数问题是典型的组合问题,它要求计算n个人两两握手一次的情况下总共有多少次握手。这个问题可以通过组合数公式C(n, 2)来解决,即n*(n-1)/2次握手。 ```python n = int(input()) print(n * (n - 1) // 2) ``` ### 字符串处理与分割 有时候题目会给出时间或日期等字符串形式的数据,需要将其拆分成小时、分钟、秒等部分进行处理。这需要用到split函数配合map函数来进行类型转换。 ```python time_str = input() hours, minutes, seconds = map(int, time_str.split(':')) # 进一步处理... ``` ### 列表与循环的应用 对于更复杂的问题,可能涉及到对列表的操作,比如遍历列表中的元素或者使用range函数生成序列。此外,还需要掌握if...else条件语句来实现分支逻辑。 ```python numbers = list(map(int, input().split())) for number in numbers: if number > 0: print(number) ``` ### 分析三位数各位之和 给定一个三位整数,计算其百位、十位和个位上的数字之和,并求平均值。 ```python n = int(input()) a = n % 10 b = (n // 10) % 10 c = (n // 100) % 10 sum_digits = a + b + c average = sum_digits / 3 print(sum_digits, average) ``` 这些示例展示了如何利用Python基础语法解决实际问题。通过练习这些类型的题目,可以有效提高编程技巧和解决问题的能力。在准备比赛时,建议多做历年真题,并尝试理解每道题目的背后逻辑和技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值