新手村Ⅱ

一定要先点击左上角的“参与作业”按钮,再开始做练习题哦~

“参与作业”按钮

目录

  • 前言

  • 题目列表

  • 注意事项

  • 提示

    1. T739783 验证子串
    2. T739786 Tenet
    3. T581151 双螺旋的秘密
    4. T672314 宏宇的编程作业
    5. T322483 魔法鱼的航程
    6. T739788 通讯费用汇算
    7. T323904 精灵之跃
    8. T322571 图书馆管理员思雨
    9. T322574 魔法卷轴的单词统计
    10. T322575 魔法蛇形阵
  • Python 3.10 官方文档相关章节

前言

There's more than one way to do it.

——Perl 俗语

在编程的世界中,条条大路通罗马。

如果某些题目让你感到没有头绪,可以看看「提示」章节,也许会找到一些灵感。

题目列表

序号题目知识点
0T739783 验证子串open in new window字符串
1T739786 Tenetopen in new window字符串
2T581151 双螺旋的秘密open in new window字典
3T672314 宏宇的编程作业open in new window字典
4T322483 魔法鱼的航程open in new window基本运算(取模)
5T739788 通讯费用汇算open in new window基本运算(整除)
6T323904 精灵之跃open in new window数组
7T322571 图书馆管理员思雨open in new window循环结构 & 数组
8T322574 魔法卷轴的单词统计open in new window模拟
9T322575 魔法蛇形阵open in new window模拟

注意事项

  • 提交答案时,一定要将语言设置为“Python 3”(默认是 C++);
  • 耐心读题,确保已经理解了题意、数据类型、输入输出要求后再作答;
  • 计算机没有玄学,如果 WA (Wrong Answer) 了,仔细分析原因,思考为什么出错,带着理由修改代码,而不是盲目修改代码;
  • 建议不要打印多余的空格和空行。

提示

0. T739783 验证子串

  • 使用 in 判断一个字符串是否在另一个字符串当中。
  • 挑战:能否尝试不适用 in ,而使用循环的方式解决这个问题?

1. T739786 Tenet

  • 首先,你需要读取并处理好输入的句子,可以使用 str.split() 方法切开每一个单词。
  • 之后,你可以使用 reversed() 函数来倒转单词。
  • 挑战:不使用Python内置函数,你能否自己实现 reversed() 函数?

2. T581151 双螺旋的秘密

  • 使用字典即可。

3. T672314 宏宇的编程作业

  • 可使用字典来解决此问题,注意临界条件的判断。
  • 想了解进阶解法,可学习和了解这一数据结构,Python中可以用list来模拟栈。

4. T322483 魔法鱼的航程

  • 魔法鱼可以游很多天,但是一周只有七天。如何将游泳的天数转换到一个区间内?
  • 这是求模运算 % 的一个妙用!

5. T739788 通讯费用汇算

  • 当费用超过70的时候,如何计算需要的费用?
  • 可以尝试使用取整 \\ 运算

6. T323904 精灵之跃

  • 计算差值序列,然后比对即可。
  • 或者可以使用 set 中的方法来解决

7. T322571 图书馆管理员思雨

可以考虑利用 dictset 解决问题。

8. T322574 魔法卷轴的单词统计

使用 a.count(b) 统计字符串 ab 的出现次数时,如果两个 b 之间有重叠,只会计算一个。

例如:

print('abbabbabba'.count('abba'))

输出结果是 2 而不是 3

如果你想使用字符串的 count 方法,一定要注意这一个细节。如果要查找的子字符串「可能重叠」的话,需要考虑在当前场景下是否适合用这个方法。

9. T322575 魔法蛇形阵

  • 创建一个大小为 n * n 的二维列表:
grid = [[0] * n for _ in range(n)]
  • 初中物理告诉我们,物体运动时,坐标 $(x, y)$ 与速度 $v$ 和时间 $t$ 的关系为:

$$ \begin{cases} x' = x + v_xt \ y' = y + v_yt \end{cases} $$

  • 即经过时间 $t$ 后,物体新坐标 $(x', y')$ 为:

$$ \begin{cases} x' = x + \Delta x \ y' = y + \Delta y \end{cases} $$

  • 这是典型的 模拟 题。不要尝试一口气就输出答案,Let's think step by step!
  • 你可以手动模拟一下填充的过程,就可以发现蛇形阵的规律,然后再让计算机来模拟你的做法!

Python 3.10 官方文档相关章节

官方文档中的一些内容可能对初学者而言过于晦涩,难以理解,所以也不必强迫自己一开始就理解其中的全部内容——等用到时回头再看,自然就会有所感悟。

  1. Python 教程open in new window
  2. input()open in new window
  3. print()open in new window
  4. 数字类型 --- int, float, complexopen in new window
  5. 文本序列类型 --- stropen in new window
  6. 序列类型 --- list, tuple, rangeopen in new window
  7. 映射类型 --- dictopen in new window
  8. 集合类型 --- setopen in new window
  9. 列表推导式open in new window
  10. 序列解包open in new window
  11. math --- 数学函数open in new window
  12. 格式化字符串字面值 (f-string)open in new window
  13. 格式规格迷你语言open in new window
  14. chr() - 内置函数open in new window
  15. ord() - 内置函数open in new window