本文将通过五道常见的编程题目,展示如何使用 Python 解决实际问题,涵盖基础语法、列表操作、字符串处理、字典使用等核心知识点。
题目一:六位数判断与各位数之和
题目描述
输入一个六位数,计算其各位数字之和。若该和在 36 和 45 之间(不包括 36 和 45),则判定为“幸运数字”。
代码实现
while True:
num_str = input("输入一个六位数:")
if len(num_str) != 6:
print("请重新输入")
continue
res = sum([int(i) for i in num_str])
if 36 < res < 45:
print(f"{num_str}是幸运数字")
else:
print(f"{num_str}不是幸运数字")
break
运行结果
输入一个六位数:234356
234356不是幸运数字
题目二:找出数组中最小的 k 个数
题目描述
给定一个可能包含重复值的数组,找出其中不去重的最小的 k 个数。例如,数组 [4,5,1,6,2,7,3,8] 的最小的 4 个数是 [1,2,3,4]。
代码实现
def num_k(nums, k):
if k <= 0:
return []
sort_nums = sorted(nums) # 升序排序
return sort_nums[:k]
# 测试用例
nums = [4,5,1,6,2,7,3,8]
print(num_k(nums, 4))
运行结果
[1, 2, 3, 4]
题目三:统计字符串中各类字符个数
题目描述
输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数。
代码实现
s = input("输入字符串:")
num1 = 0 # 英文
num2 = 0 # 空格
num3 = 0 # 数字
num4 = 0 # 其它字符
for char in s:
if char.isalpha(): # 英文字母
num1 += 1
elif char.isspace(): # 空格
num2 += 1
elif char.isdigit(): # 数字
num3 += 1
else:
num4 += 1
print(f"英文字母:{num1}个")
print(f"空格:{num2}个")
print(f"数字:{num3}个")
print(f"其它字符:{num4}个")
运行结果
输入字符串:23eee423/
英文字母:3个
空格:0个
数字:5个
其它字符:1个
题目四:寻找数组中出现次数超过一半的数字
题目描述
给定一个长度为 n 的数组,若存在某个数字出现次数超过数组长度的一半,则输出该数字,否则输出 -1。
代码实现
def fun(nums):
dc = {} # key:value 数字:次数
max_num = 0 # 记录最大出现次数 初始化为0
for num in nums:
if num not in dc.keys(): # 数字num第一次出现
dc[num] = 1
else:
dc[num] += 1
if dc[num] > max_num:
max_num = dc[num]
if max_num > len(nums) // 2:
return num
# 测试用例
nums = [1,2,3,2,2,2,5,4,2]
print(fun(nums))
运行结果
2
题目五:两数之和
题目描述
给定一个整数数组 nums 和一个目标值 target,在数组中找出和为目标值的两个整数,并返回它们的下标。
代码实现
def two_num(nums, target):
df = {} # 数字:下标
for i, num in enumerate(nums):
temp = target - num
if temp in df:
return [df[temp], i]
df[num] = i
return [] # 没有解
# 测试用例
nums = [2,7,11,15]
target = 9
print(two_num(nums, target))
运行结果
[0, 1]
总结
本文通过五道典型编程题目,展示了 Python 在以下方面的应用:
· 数字处理与条件判断 · 列表排序与切片 · 字符串遍历与字符分类统计 · 字典记录频率与快速查找 · 哈希表优化查找效率