不定时更新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 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:猜单词游戏 要求:
使用一个包含多个单词的列表作为单词库。
在游戏开始时,随机选择一个单词作为目标单词。
显示一个由下划线组成的部分单词,初始时下划线的位置与目标单词相对应。
允许玩家猜测字母,显示已经猜对的字母,并更新部分单词的显示。
显示玩家已经猜过的字母列表。
如果玩家在规定次数内猜对了整个单词,显示祝贺消息。如果猜错了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 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 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 程序,实现以下功能:
使用 Requests 库向某个新闻网站发起请求,获取网页的 HTML 内容。
使用 BeautifulSoup 库解析 HTML 内容,提取新闻标题。
将提取到的新闻标题打印输出或保存到文件中。
解答: 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)))