跳转至

专项练习 — 程序改错题

练习说明

  • 共 10 道程序改错题,难度与模拟考试相当
  • 每题包含 2~3 处错误,标记为 #**********begin**********#**********end**********
  • 建议每题用时 3~5 分钟

🔧 程序改错题

第1题:温度转换

题目: 将输入的摄氏温度转换为华氏温度并输出。转换公式:F = C * 9 / 5 + 32。

Python
1
2
3
4
5
6
7
8
9
#**********begin1**********
c = input("请输入摄氏温度:")
#**********end1**********
#**********begin2**********
f = c * 9 // 5 + 32
#**********end2**********
#**********begin3**********
print("华氏温度为:" + f)
#**********end3**********
第2题:列表最大值

题目: 遍历列表,找出并输出其中的最大值。

Python
nums = [23, 45, 12, 67, 34]
max_num = nums[0]
for num in nums:
    #**********begin1**********
    if num < max_num
    #**********end1**********
        #**********begin2**********
        max_num == num
        #**********end2**********
print(f"最大值:{max_num}")
第3题:文件写入

题目: 将文本内容写入文件 output.txt。

Python
#**********begin1**********
f = open("output.txt", "r")
#**********end1**********
#**********begin2**********
f.writeline("Hello, World!\n")
#**********end2**********
f.writelines(["Line 1\n", "Line 2\n"])
#**********begin3**********
f.close
#**********end3**********
第4题:素数判断

题目: 判断输入的正整数是否为素数,并输出结果。

Python
def is_prime(n):
    if n < 2:
        return False
    #**********begin1**********
    for i in range(1, n):
    #**********end1**********
        #**********begin2**********
        if n / i == 0:
        #**********end2**********
            return False
    return True

num = int(input("请输入一个正整数:"))
#**********begin3**********
if is_prime num:
#**********end3**********
    print(f"{num}是素数")
else:
    print(f"{num}不是素数")
第5题:字符统计

题目: 统计字符串中大写字母、小写字母和数字的个数。

Python
s = "Hello World 123!"
upper_count = 0
lower_count = 0
digit_count = 0
for ch in s:
    #**********begin1**********
    if ch.isupper
        upper_count += 1
    elif ch.islower():
        lower_count += 1
    elif ch.isdigit():
        digit_count += 1
    #**********end1**********
#**********begin2**********
print("大写字母:" + upper_count + "个,小写字母:" + lower_count + "个,数字:" + digit_count + "个")
#**********end2**********
第6题:斐波那契数列

题目: 生成前n个斐波那契数并存入列表返回。

Python
def fibonacci(n):
    if n <= 0:
        return []
    if n == 1:
        return [1]
    fib = [1, 1]
    #**********begin1**********
    for i in range(2, n - 1):
    #**********end1**********
        #**********begin2**********
        fib.add(fib[i-1] + fib[i-2])
        #**********end2**********
    return fib

#**********begin3**********
result = fibonacci 10
#**********end3**********
print(result)
第7题:学生信息类

题目: 定义学生类,按成绩从高到低排序后输出每位学生的信息。

Python
class Student:
    #**********begin1**********
    def _init_(self, name, score):
    #**********end1**********
        self.name = name
        self.score = score

    def info(self):
        #**********begin2**********
        return self.name + "的成绩为:" + self.score
        #**********end2**********

students = [
    Student("张三", 85),
    Student("李四", 92),
    Student("王五", 78)
]
#**********begin3**********
students.sort(key=lambda s: s.score)
#**********end3**********
for s in students:
    print(s.info())
第8题:最大公约数

题目: 使用辗转相除法求两个正整数的最大公约数。

Python
def gcd(a, b):
    #**********begin1**********
    while b != 0
    #**********end1**********
        #**********begin2**********
        a, b = b, a / b
        #**********end2**********
    return a

num1 = 48
num2 = 18
#**********begin3**********
print("最大公约数为:" + gcd(num1, num2))
#**********end3**********
第9题:列表过滤

题目: 从列表中筛选出所有偶数,返回新列表并输出。

Python
def filter_even(lst):
    result = []
    #**********begin1**********
    for num in lst
    #**********end1**********
        #**********begin2**********
        if num % 2 == 1:
            result.append(num)
        #**********end2**********
    #**********begin3**********
    return result.sort()
    #**********end3**********

nums = [1, 2, 3, 4, 5, 6, 7, 8]
even_nums = filter_even(nums)
print(f"偶数有{len(even_nums)}个:{even_nums}")
第10题:阶乘计算

题目: 计算并输出输入正整数的阶乘。

Python
def factorial(n):
    #**********begin1**********
    result = 0
    #**********end1**********
    #**********begin2**********
    for i in range(1, n):
    #**********end2**********
        result *= i
    return result

n = int(input("请输入一个正整数:"))
#**********begin3**********
print(str(n) + "的阶乘为:" + factorial(n))
#**********end3**********