Skip to content
课程资料归档 · 2024 / 2025 秋季学期。历史安排与截止日期仅供查阅。

题集链接

OpenJudge/计算概论C(py)/2025-计算概论C-py作业1

01:两整数求和

题目描述

输入两个整数,求这两个整数之和

输入
两行,每行一个整数

输出
两个整数的和

题解

思路
较简单,需要注意的是,input() 函数接收进来的输入是字符串形式,如果想要参与数据运算,需要将其转换为对应的类型,最常见的为整型 int 和浮点型 float

python
x = input() # 这时候我们如果输入一个数字进去,把它赋值给x,x的类型是字符串(str)
x = int(x) # 转为整型
x = float(x) # 转为浮点数

所以通常需要做类似

python
a = int(input())
b = float(input())

的操作。 如果忘记转换,变量就会作为字符串参与运算,比如本题中,如果你的代码是

python
a = input()
b = input()
c = a + b
print(c)

那么你将会得到

text
36

而不是

text
9

原因是ab 都被当作字符串处理了,a + b 就是字符串拼接,所以输出结果为 36

此外,课上应该讲过 eval()函数,本题其实也可以用

python
a = input()
b = input()
c = eval(f"{a}+{b}")
print(c)

等方式来写。

知识点

输入函数与输出函数第1章程序设计与Python导引
数字类型-整型第2章基本数据类型

代码

01:两整数求和

python
a = int(input())
b = int(input())
c = a + b
print(c)

02:简单的A*B问题

题目描述

输入两个数A和B,求A*B。

输入
两行,第一行输入一个数A,第二行输入一个数B。A和B均为浮点数。

输出
一个浮点数,即A*B的值。要求结果保留两位小数。

其中,商保留两位小数。

题解

思路
类似于第1题,区别为本题需要将输入的字符串转换为浮点型 float

如果输入是整型,比如

text
1

float 进行转换也是可以的,比如用

python
a = float(input())

进行转换,结果也是 1.0,但是输入是浮点型,比如

text
1.0

int 进行转换就会报错RuntimeError,所以需要根据输入的类型选择合适的转换函数。

知识点

输入函数与输出函数第1章程序设计与Python导引
数字类型-浮点型第2章基本数据类型
字符串格式化第2章基本数据类型

代码

02:简单的A*B问题

python
a = float(input())
b = float(input())
c = a * b
print(f'{c:.2f}')

03:计算三角形的周长和面积(基础版)

题目描述

输入三条边长,算出三角形的周长和面积,结果均保留两位小数。

说明:本题系统测试用的输入数据均可以构成三角形。

输入
三行,每行一个整数,表示边长。

输出
输出二行:
第一行为周长;
第二行为面积。

题解

思路
本题需要注意的是 f{:.xf}round() 保留小数时的区别,详情请参考课程PPT。

知识点

数字类型-数据运算-算数运算符第2章基本数据类型
字符串格式化第2章基本数据类型

代码

03:计算三角形的周长和面积(基础版)

python
a = int(input())
b = int(input())
c = int(input())
x = float(a + b + c)
print(f'{x:.2f}')
p = x / 2
y = (p * (p - a) * (p - b) * (p - c)) ** 0.5
print(round(y))

04:计算两点之间距离

题目描述

从键盘输入两点的坐标(x1,y1)(x2,y2),计算两点之间的距离(结果保留两位小数)

输入
4行,每行1个数(可以是小数),分别是x1,y1,x2,y2

输出
两点之间的距离(结果保留两位小数)

题解

思路
题目思路类似于第3题,主要是让大家熟悉幂运算,一般来说,幂运算都可以通过 **来实现。除此之外,也可以通过 pow() 函数和 math.pow() 函数来实现,比如:

python
import math
a = 2 ** 3
b = pow(2, 3)
c = math.pow(2, 3)

上述三个表达式都是在计算 23
如果要开根号,也可以使用 math.sqrt() 函数,比如 math.sqrt(4) 就是计算 4
此外,本题需要注意输入顺序是 x1,y1,x2,y2,有的同学按照 x1,x2,y1,y2 的顺序读入,就会导致结果错误。

知识点

数字类型-数据运算-算数运算符第2章基本数据类型
字符串格式化第2章基本数据类型

代码

04:计算两点之间距离

python
x1 = float(input())
x2 = float(input())
y1 = float(input())
y2 = float(input())
d = ((x1 - y1) ** 2 + (x2 - y2) ** 2) ** 0.5
print(f'{d:.2f}')

05:字符菱形

题目描述

给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。

输入
输入只有一行, 包含一个字符。

输出
该字符构成的菱形。

题解

思路
本题主要考察字符串的用法。由于要将特定字符按照特定格式输出,我们首先就可以想到使用字符串的格式化输出,比如

python
c = "*"
print(f" {c}{c}{c} ")

这样就会输出题目中样例输出的第二行/第四行。
此外,我们也可以直接使用字符串的操作,比如仍然对于这一行,我们注意到它由1个空格、3个字符和1个空格构成,所以我们可以直接用 + 来把空格和字符连起来:

python
c = "*"
print(" " + c + c + c + " ")

这样也可以得到同样的输出。
或者我们在 print() 函数部分也学到过 sepend 两个参数,我们可以直接进行输出,只需要把默认的空格分隔换成空字符即可:

python
c = "*"
print(" ", c, c, c, " ", sep="")

知识点

字符串类型第2章基本数据类型
字符串格式化第2章基本数据类型

代码

05:字符菱形 Solution 1

python
# Solution 1
  c = input()
  print(f"  {c}  ")
  print(f" {c}{c}{c} ")
  print(f"{c}{c}{c}{c}{c}")
  print(f" {c}{c}{c} ")
  print(f"  {c}  ")

05:字符菱形 Solution 2

python
# Solution 2
c = input()
print("  " + c + "  ")
print(" " + c + c + c + " ")
print(c + c + c + c + c)
print(" " + c + c + c + " ")
print("  " + c + "  ")

05:字符菱形 Solution 3

python
# Solution 3
c = input()
print(" ", c, " ", sep="")
print(" " + c + c + c + " ")
print(c + c + c + c + c)
print(" " + c + c + c + " ")
print(" ", c, " ", sep="")

贡献者:陈旭峥 徐志衡
上次修改:2025/10/09


课程资料由授课教师、助教与同学共同积累。