Python练习

Python练习

不定时更新Python的练习题

2023.11.1练习

问题1:

编写一个程序,要求用户输入一个正整数,然后计算该整数的阶乘并输出结果。阶乘是指将一个整数与小于它的所有正整数相乘的结果。例如,5的阶乘是5 * 4 * 3 * 2 * 1 = 120。

要求:

  • 提示用户输入一个正整数。
  • 检查用户输入是否是正整数,如果不是,显示错误消息并要求重新输入。
  • 计算输入整数的阶乘。
  • 输出计算结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#提示用户输入
num = input("请阁下输入一个正整数:")

#判断用户输入是否是正整数
if num.isdigit():
num = int(num)
if num > 0:
print(f"{num}是一个正整数")
else:
print(f"{num}不是正整数,请阁下重新输入")
else:
print(f"{num}不是正整数,请阁下重新输入")

#计算整数的阶乘
result = 1
for i in range(1, num+1):
result *= i
print(f"{num}的阶乘为:{result}")

问题2:

编写一个Python程序,要求用户输入一个字符串,然后判断这个字符串是否是回文字符串。回文字符串是指正着读和倒着读都一样的字符串,例如 “level”、”radar” 和 “madam” 都是回文字符串。

要求:

  • 提示用户输入一个字符串。
  • 忽略字符串中的空格,标点符号和大小写(将所有字符转换为小写)。
  • 判断输入的字符串是否是回文字符串。
  • 输出相应的结果,指出是否是回文字符串。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import re

#提示用户输入
user_input = input("请阁下输入一个字符串:")

#移除空格,标点和大小写
user_input = user_input.replace(" ", "") #移除空格
user_input = re.sub(r'[^\w\s]','',user_input) #移除符号标点
user_input = user_input.lower() #转换为小写

#判断输入的字符是否是回文字符串
fan_input = user_input[::-1] #创建反向字符串
if fan_input == user_input: #判断是否是回文字符串
print(f"恭喜阁下,{user_input}是回文字符串!")
else:
print(f"很抱歉,{user_input}并不是回文字符串")

2023.11.5练习

问题1:

写一个Python程序,找出一个列表中的所有奇数,并将它们存储在一个新的列表中。

要求:

  • 创建一个函数,该函数接受一个整数列表作为参数。
  • 函数应该返回一个新的列表,其中包含原列表中的所有奇数。
  • 不要使用内置的filter函数或列表解析来完成任务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def find_odd_numbers(input_list): #定义奇数函数
odd_numbers = [] #形成一个列表
input_list = input_list.split(",") #对列表进行切片
input_list = [int(num.strip()) for num in input_list] #检查奇数
input_list = [int(num_str.strip()) for num_str in input_list] # 更改变量名

for num in input_list: #遍历列表
if num % 2 != 0:
odd_numbers.append(num)

return odd_numbers

user_input = input("请阁下输入一串列表(用,隔开): ")
result = find_odd_numbers(user_input)
print("奇数列表:", result)

问题2:

编写一个Python程序,计算斐波那契数列的第n个数字,其中n是非负整数。
斐波那契数列的定义如下:
1.第0个和第1个数字分别为0和1。
2.从第2个数字开始,每个数字都是前两个数字之和

要求:

  • 创建一个函数,接受一个非负整数n作为参数。
  • 函数应该返回斐波那契数列的第n个数字。
  • 请使用递归方式来解决这个问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#定义斐波那契数列的函数
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)

#提示用户输入
user_input = input("请阁下输入一个非负整数")

#测试用户输入的是否是一个非负整数
try:
user_input = int(user_input)
if user_input < 0:
print("让你打非负整数你不听,你XX!")
else:
result = fibonacci(user_input)
except ValueError:
print("输入什么玩意儿,让你输入一个非负整数")

2023.11.6练习

问题1:

猜数字游戏

要求:

编写一个Python程序,实现一个简单的猜数字游戏。程序随机生成一个1到100之间的整数,然后要求玩家猜这个数字,直到玩家猜中为止。程序需要提供反馈,告诉玩家他们的猜测是太高还是太低。最后,当玩家猜中数字时,显示猜测次数和祝贺消息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import random
def guess_num():
real_num = random.randint(1,100)
attempts = 0

while True:
user_num = int(input("请猜测一下目标数字为(在1-100间选择):"))
attempts += 1

if user_num < real_num:
print("结果与猜测不符,有点小,请再试一次")
elif user_num > real_num:
print("结果与猜测不符,有点大,请再试一次")
else:
print(f"恭喜阁下猜中了!目标数字为{real_num},与阁下猜测的{user_num}完全一致!您真是一个小天才!")
break

guess_num()

问题2:

查找最大元素

要求

编写一个Python函数,接受一个包含整数的列表作为参数,然后找到列表中的最大元素,并返回该最大元素的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def find_max_element(lst): # 初始化最大元素为列表的第一个元素
max_element = lst[0]

# 使用循环遍历列表中的每个元素
for num in lst:
# 如果当前元素比最大元素大,更新最大元素的值
if num > max_element:
max_element = num

# 返回最大元素的值
return max_element

# 示例使用
numbers = [12, 45, 62, 88, 34, 98, 75]
result = find_max_element(numbers)
print(f"列表中的最大元素是 {result}")

2023.11.12练习

问题1:简单的购物清单

要求:

  1. 初始化一个空的购物清单。
  2. 提示用户选择操作:添加商品、显示购物清单或退出。
  3. 如果用户选择添加商品,程序应该提示用户输入商品名称和价格,然后将商品添加到购物清单。
  4. 如果用户选择显示购物清单,程序应该输出当前购物清单中的所有商品及其总价格。
  5. 如果用户选择退出,程序应该结束运行。
  6. 在每次循环后,再次显示操作选项。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import random

def menu():
print("欢迎使用购物清单程序!\n操作选项:\n1. 添加商品\n2. 显示购物清单\n3. 退出")

def add(shopping_list):
name = input("请输入商品的名称:")
price = input("请输入商品的价格:")
shopping_list[name] = price
print(f"{name}已添加至购物车 \n ")

def display(shopping_list):
if not shopping_list:
print("购物车竟然是空的!再忙,也记得买点什么犒劳下自己")
else:
print("当前购物清单:")
for name, price in shopping_list.items():
print(f" {name}: {price}")
total = sum(shopping_list.values())
print(f"总价格为:{total} \n")

def main():
shopping_list = {}
while True:
menu()
choice = input("请选择操作 (1/2/3): ")

if choice == '1':
add(shopping_list)
elif choice == '2':
display(shopping_list)
elif choice == '3':
print("退出也没有,摇一摇等下又见面了")
break
else:
print("你在说什么? \n")

if __name__ == "__main__":
main()

2023.12.20练习

问题1:猜单词游戏

要求:

  1. 使用一个包含多个单词的列表作为单词库。
  2. 在游戏开始时,随机选择一个单词作为目标单词。
  3. 显示一个由下划线组成的部分单词,初始时下划线的位置与目标单词相对应。
  4. 允许玩家猜测字母,显示已经猜对的字母,并更新部分单词的显示。
  5. 显示玩家已经猜过的字母列表。
  6. 如果玩家在规定次数内猜对了整个单词,显示祝贺消息。如果猜错了6次,显示失败消息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import random

# 创建词库
def choose_word():
word_list = ["python", "programming", "challenge", "coding", "computer"]
return random.choice(word_list)

# 显示部分单词
def display_partial_word(word, guessed_letters):
partial_word = "" # 初始化字符串为空
for letter in word: # 遍历目标单词的每个字符
if letter in guessed_letters: # 如果字母已经在已猜过的字母列表中
partial_word += letter # 将字母添加到部分单词中
else:
partial_word += "_" # 否则,用下划线代替未猜对的字母
return partial_word

# 游戏主循环
def main():
target_word = choose_word()
guessed_letters = []
max_attempts = 6 #最大猜测次数
attempts = 0 #初始值

print("欢迎来到猜字母游戏!")
print(display_partial_word(target_word, guessed_letters))

while True:
guess = input("猜一个字母: ").lower()

if len(guess) != 1 or not guess.isalpha():
print("请输入一个有效的字母。")
continue

if guess in guessed_letters:
print("你已经猜过这个字母了。")
continue

guessed_letters.append(guess)

if guess not in target_word:
attempts += 1
print(f"猜错了!还剩余 {max_attempts - attempts} 次机会。")

partial_word = display_partial_word(target_word, guessed_letters)
print(partial_word)

if "_" not in partial_word:
print("恭喜你,你猜对了!")
break

if attempts == max_attempts:
print(f"很遗憾,你没有在规定次数内猜对。正确答案是: {target_word}")
break

if __name__ == "__main__":
main()

2024.1.8练习

问题1:学生成绩管理系统

要求:

你需要设计一个简单的学生成绩管理系统。系统应该包括以下功能:

  1. 添加学生:添加学生的姓名和成绩。
  2. 显示学生列表:显示所有学生的姓名和成绩。
  3. 搜索学生:通过学生姓名查找并显示其成绩。
  4. 计算平均成绩:计算并显示所有学生的平均成绩。

你可以选择使用列表、字典或其他数据结构来存储学生信息。为了简化问题,你可以假设每个学生的姓名都是唯一的。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 学生列表创建
students_list = []

# 添加学生名字及成绩
while True:
name = input("请输入学生名字:")
grade = float(input("请输入学生成绩:")) # 将输入转换为浮点数

# 学生信息存储
students_info = (name, grade)
students_list.append(students_info)

# 询问用户是否继续添加学生信息
add_another = input("是否要添加另一个学生信息?(y/n): ").lower()
if add_another != 'y':
break

# 显示学生列表
print("学生列表:")
for student in students_list:
print(f"姓名: {student[0]}, 成绩: {student[1]}")

# 计算平均成绩
total_grade = sum(student[1] for student in students_list)
average_grade = total_grade / len(students_list)
print(f"平均成绩:{average_grade}")

# 搜索学生
search_name = input("请输入要搜索的学生名字:")
found = False

for student in students_list:
if student[0] == search_name:
print(f"{search_name}的成绩是:{student[1]}")
found = True
break

if not found:
print(f"找不到{search_name}学生")

2024.1.24练习

题目:电影评分统计

要求:

你需要设计一个电影评分统计系统。系统应该包括以下功能:

  1. 添加电影: 用户可以添加电影的名称和评分。
  2. 显示电影列表: 显示所有电影的名称和评分。
  3. 搜索电影: 通过电影名称查找并显示其评分。
  4. 计算平均评分: 计算并显示所有电影的平均评分。
  5. 推荐电影: 根据电影的平均评分,推荐一部用户可能喜欢的电影。推荐可以简单地选择平均评分较高的电影之一。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 电影列表建立
movies_list = []

# 添加电影名字
while True:
movies_name = input("请输入电影名字:")
movies_evaluate = float(input("请阁下为电影评分:"))

# 存储电影
movies = (movies_name, movies_evaluate)
movies_list.append(movies)

# 询问用户是否继续添加信息
add_another = input("阁下是否还需要添加其他电影?(y/n): ").lower()
if add_another != 'y':
break

# 显示电影列表
print("电影列表:")
for movies in movies_list:
print(f"电影名:{movies[0]}, 评分:{movies[1]}")

# 搜索电影
search_movies = input("请阁下输入要搜索的电影名字:")
found = False

for movies in movies_list:
if movies[0] == search_movies:
print(f"{search_movies}的评分是:{movies[1]}")
found = True
break

if not found:
print(f"很抱歉,没有找到{search_movies}的相关信息")

# 计算平均分
total_grade = sum(movies[1] for movies in movies_list)
average_grade = total_grade / len(movies_list)
print(f"所有电影的平均评分为:")

# 推荐电影:
recommend_movies = None
hight_rating = 0

for movies in movies_list:
if movies[1] > hight_rating:
hight_rating = movies[1]
recommend_movies = movies[0]

if recommend_movies:
print(f"这是我根据平均分为阁下推荐的电影:{recommend_movies},{hight_rating}")
else:
print("很抱歉,暂无可推荐的电影")

2024.1.25

题目:简单爬虫 - 获取新闻标题

要求:

编写一个 Python 程序,实现以下功能:

  1. 使用 Requests 库向某个新闻网站发起请求,获取网页的 HTML 内容。
  2. 使用 BeautifulSoup 库解析 HTML 内容,提取新闻标题。
  3. 将提取到的新闻标题打印输出或保存到文件中。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests
from bs4 import BeautifulSoup

# 替换成你选择的新闻网站的URL
url = "https://www.bbc.com/news"

# 发起请求获取网页内容
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
html_content = response.text

# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_content, 'html.parser')

# 使用选择器提取新闻标题
# 根据实际HTML结构修改选择器
titles = soup.select('h3')

# 打印或保存新闻标题
if titles:
for title in titles:
print(title.text.strip())
else:
print("未找到符合选择器的标题元素。")
else:
print(f"请求失败,状态码:{response.status_code}")

2024.5.6

题目:计算字符串中的元音字母数量

请编写一个Python程序,输入一个字符串,然后计算并输出该字符串中元音字母(a, e, i, o, u)的数量。要求程序对大小写字母均能正确处理。

例如:
输入: “Hello World”
输出: 3

提示:
可以使用input()函数获取用户输入的字符串。
为了简化问题,只需考虑英文字母a, e, i, o, u作为元音。
可以使用字符串的.lower()或.upper()方法来统一处理大小写问题。
利用循环遍历字符串中的每个字符,并检查是否是元音字母。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#用户输入
user_input = input("请阁下输入一个字符串:")

#统一大小写
input_string = user_input.lower()

#定义元音字母
zimu = 'aeiou'

#初始化元音数
zimu_count = 0

#遍历字符串
for char in input_string:
if char in zimu:
zimu_count += 1

#输出
print("元音字母的数量是:", zimu_count)

2024.5.7

题目:统计列表中各元素的出现次数并输出结果

编写一个Python程序,要求用户输入一系列整数(可以是空格分隔的一行输入),然后程序会统计每个数字出现的次数,并以字典形式输出。每个键值对中的键是数字,值是该数字出现的次数。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
input_string = input("请输入一系列整数,用空格分隔:")

# 切割
try:
numbers = [int(num) for num in input_string.split()]
except ValueError:
print("输入包含非整数,请确保所有输入都是整数。")
exit()

# 初始化
numlist = {}

# 遍历
for num in numbers:
if num in numlist:
numlist[num] += 1
else:
numlist[num] = 1

print(numlist)

2024.5.28

题目:寻找列表中的最大和最小元素

编写一个Python程序,要求用户输入一系列整数(用空格分隔)。然后程序会找到并输出这些整数中的最大值和最小值。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 输入内容并判断输入是否合法
while True:
# 用户输入
usr_input = input("请阁下输入一系列整数,并用空格隔开:")
try:
# 分割成列表,并转换为整数列表
num_list = [int(num) for num in usr_input.split()]
break
except ValueError:
print("错误!请阁下重新输入正确的整数并用空格隔开")

# 寻找max和min
max_num = max(num_list)
min_num = min(num_list)

#输入max和min
print("最大值:", max_num)
print("最小值:", min_num)

2024.5.30

判断字符串是否是回文

编写一个Python程序,要求用户输入一个字符串,然后判断该字符串是否是回文。如果是回文,输出“是回文”;否则,输出“不是回文”。

回文是指正读和反读都相同的字符串,例如“madam”或“racecar”。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 说明
print("阁下您好,感谢阁下使用此代码判断字符串是否是回文,请根据系统提示,帮助您解决问题。")
print("提示:回文是指正读和反读都相同的字符串,例如“madam”或“racecar”。")

#body
while True:
# 输入字符串
usr_input = input("请输入您需要判断是否为回文的字符串(或按q退出):")

# 判断用户是否选择退出
if usr_input.lower() == 'q':
print("感谢使用,程序已退出。")
break
# 切片反转操作
reversed_string = usr_input[::-1]

# 判断是否是回文
if usr_input == reversed_string:
print("这是回文字符串")
else:
print("这不是回文字符串")

计算一个列表中的平均值

编写一个Python程序,要求用户输入一系列整数(用空格分隔),然后计算并输出这些整数的平均值。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 说明
print("感谢您的使用,这是用于计算列表中的平均值的代码,请根据系统提示进行操作")

# 用户输入并判断输入的正确性
while True:
# 用户输入
usr_input = input("请阁下输入一系列整数并用空格分隔(或按'q'退出):")

# 判断用户是否选择退出
if usr_input.lower() == 'q':
print("感谢使用,程序已退出")
break

# 判断输入是否正确
try:
# 分割列表,并转换为整数列表
num_list = [int(num) for num in usr_input.split()]

# 检查列表是否为空
if not num_list:
print("错误!列表为空,请重新输入整数。")
continue

# 计算平均值
total = 0 # 初始化
for num in num_list: # 计算总和
total += num

# 计算平均值
num_count = len(num_list) # 列出个数

# 算平均值
average_num = total / num_count

# 输出结果
print("平均值为:", average_num)

except ValueError:
print("错误!请阁下重新输入正确的整数并用空格隔开!")

2024.6.1

题目:学生成绩管理系统

编写一个Python程序,实现一个简单的学生成绩管理系统。该系统可以让用户输入多个学生的姓名和成绩,并计算每个学生的平均成绩。最终,输出所有学生的平均成绩。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 存储学生成绩的空字典
student_scores = {}

# 判断用户输入及正确性
while True:
# 用户输入
usr_input = input("要求用户输入学生姓名和成绩,格式为 姓名: 成绩1, 成绩2, 成绩3(或按'q'退出):")

# 判断是否选择退出
if usr_input.lower() == 'q':
print("感谢使用,已退出")
break

# 分割输入数据为姓名和成绩部分
try:
name, scores_str = usr_input.split(':')
except ValueError:
print("输入格式错误,请按照格式:姓名: 成绩1, 成绩2, 成绩3")
continue

# 分割成绩字符串,并转换为整数列表
try:
scores = [int(score.strip()) for score in scores_str.split(',')]
except ValueError:
print("成绩应为整数,请重新输入。")
continue

# 将姓名和成绩存储到字典中
student_scores[name] = scores

# 计算并输出每个学生的平均成绩
for name, scores in student_scores.items():
average_score = sum(scores) / len(scores)
print(f"{name} 的平均成绩为 {average_score:.2f}")

2024.6.7

题目:统计字符串中各字符的出现次数

编写一个Python程序,要求用户输入一个字符串,统计并输出该字符串中每个字符的出现次数。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 用户输入
usr_input = input("请输入一个字符串:")

# 初始化字典
char_count = {}

# 遍历输入
for char in usr_input:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1

# 输出
for char, count in char_count.items():
print(f"{char}:{char_count}")

2024.6.8

题目:筛选出列表中的素数

编写一个Python程序,要求用户输入一系列整数(用空格分隔),然后从这些整数中筛选出所有的素数,并输出这些素数。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 用户输入
usr_input = input("请输入一系列整数(用空格分隔):")

# 定义素数的函数
def Prime_num(n):
if n > 1:
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
else:
return False

# 切片
numbers = [int(num) for num in usr_input.split()]

# 初始化列表
primes = []

# 遍历整数列表,筛选出所有的素数
for num in numbers:
if Prime_num(num):
primes.append(num)

# 输出筛选出的素数
print("素数有:", ' '.join(map(str, primes)))

作者

Hau uhang

发布于

2023-11-01

更新于

2025-04-06

许可协议

评论