python基础练习
在本文中,我将详细解答和解释Python基础练习题,帮助初学者更好地理解和掌握Python编程语言。以下是几个简单的游戏:猜数字、猜词语和谁是卧底。
1. 猜数字游戏
以下数字游戏来自袁袁袁袁满,发布于华为云社区。
需求描述
随机生成一个100以内的整数,共有10次机会开始游戏,输入猜测的数字
如果猜小了,提示猜小了
如果猜大了,提示猜大了
猜对了,提示猜对了,并且结束游戏
10次机会用完还没猜对,提示游戏结束,没有猜到。
算法思路
1. 使用random库的randint函数生成一个100以内的随机数。
2. 使用 for 循环进行循环10次,每次提示输入要猜测的数字,猜大或猜小都做下相应的提示,并输出还剩下几次机会。
3. 当在10次机会内猜对数字,提示猜对了,你真棒,只用了几次机会。
4. 10次机会用完还没猜对,提示游戏结束,猜不出来吧。
实现代码
""" Python每日一练 猜数字小游戏 random库 randint的使用方式 random.randint(a,b) 生成一个[a,b]之间的整数 (包含a、b) """ import random # 随机生成一个1-100之间的整数 number = random.randint(0, 100) # 循环十次结束 for i in range(10): # input函数从键盘输入要猜的数字,并转换为int类型 choice = int(input("请输入你要猜测的数字:")) # 大于目标数字 if choice > number: print("你猜大了") # 小于目标数字 elif choice < number: print("你猜小了") # 等于目标数字 else: print("你猜对了,真棒!") print(f"你一共用了{i + 1}次机会") break print(f"还剩{9 - i}次机会") else: print("游戏结束你还没有猜到。")
猜数字游戏是一个经典的游戏,它可以帮助我们理解Python中的条件语句和循环语句。游戏规则很简单:计算机随机生成一个1到100之间的数字,玩家需要猜出这个数字是多少。根据玩家猜测的数字,计算机会给出提示,告诉玩家猜的数字是太大还是太小,直到玩家猜中为止。
2. 猜词语游戏
需求
- 程序随机选择一个词语作为答案,参与者需要猜测这个词语。
- 参与者有限定的猜测次数。
- 每次猜测后,程序给出反馈,显示猜测的词语中哪些字母在答案中,位置正确,哪些字母在答案中但位置不正确。
- 游戏结束后,显示答案和参与者的猜测历史。
思路
- 创建一个包含多个词语的列表,程序从中随机选择一个作为答案。
- 设置猜测次数的限制,使用循环进行多次猜测。
- 获取参与者的猜测,比较与答案的相似度,给出反馈。
- 根据猜测的结果,判断游戏是否结束。
- 显示游戏结果,包括答案和猜测历史。
代码示例
import random def choose_word(): words = ["python", "programming", "challenge", "game", "coding"] return random.choice(words) def display_word(word, guessed_letters): display = "" for letter in word: if letter in guessed_letters: display += letter else: display += "_" return display def main(): print("欢迎参加猜词游戏!") answer = choose_word() guessed_letters = [] max_attempts = 6 attempts = 0 while attempts < max_attempts: guess = input(f"\n当前词语状态: {display_word(answer, guessed_letters)}\n请输入猜测的字母: ").lower() if guess.isalpha() and len(guess) == 1: if guess in guessed_letters: print("你已经猜过这个字母了,请重新猜测。") continue guessed_letters.append(guess) if set(guessed_letters) == set(answer): print(f"恭喜你,你猜对了!答案是:{answer}") break correct_positions = [i for i in range(len(answer)) if answer[i] == guess] if correct_positions: print(f"好的,字母'{guess}'在答案中的位置是:{correct_positions}") else: print(f"很遗憾,字母'{guess}'不在答案中。") attempts += 1 else: print("请输入一个有效的字母。") print(f"\n游戏结束,答案是:{answer}") print("猜测历史:", guessed_letters) if __name__ == "__main__": main()
猜词语游戏是另一个有趣的游戏,它可以帮助我们学习Python中的字符串处理和随机数生成。游戏规则如下:计算机从一个预定义的词语列表中随机选择一个词语,玩家需要猜出这个词语是什么。玩家每次可以猜一个字母,如果猜对了,那么该字母会显示在正确的位置上,如果猜错了,计算机会记录错误次数并绘制一个人物的部分轮廓,当错误次数达到一定限制时,游戏结束。
3. 谁是卧底游戏
需求
- 程序随机选择一个词语作为“卧底”,其他词语作为普通身份。
- 参与者需要在规定的时间内询问问题,试图找出谁是“卧底”。
- “卧底”需要在回答问题时隐瞒身份,普通身份则需真实回答问题。
- 游戏结束后,显示答案和参与者的提问历史。
思路
- 创建一个包含多个词语的列表,程序从中随机选择一个作为“卧底”,其他作为普通身份。
- 设置询问问题的轮数和每轮问题的时间限制。
- 参与者在每轮中提问,程序回答问题,并根据回答判断身份。
- 根据规则判断游戏是否结束。
- 显示游戏结果,包括答案和提问历史。
代码示例
import random import time def choose_roles(): words = ["doctor", "engineer", "teacher", "artist", "spy"] undercover = random.choice(words) words.remove(undercover) return undercover, words def main(): print("欢迎参加谁是卧底游戏!") undercover, normal_roles = choose_roles() roles = normal_roles + [undercover] random.shuffle(roles) print("游戏开始,请注意保持秘密。") num_rounds = 3 time_per_round = 60 # 每轮时间限制(秒) for round_num in range(1, num_rounds + 1): print(f"\n第{round_num}轮开始,你有{time_per_round}秒的时间提问。") time.sleep(1) start_time = time.time() questions = [] while time.time() - start_time < time_per_round: question = input("\n请输入你的问题: ") questions.append(question) print("\n提问结束,现在轮到回答。") for i, question in enumerate(questions): print(f"\n问题{i + 1}: {question}") answer = input("回答: ") if roles[i] == undercover: print("卧底回答:", answer) else: print("普通身份回答:", answer) guess = input("\n请猜测谁是卧底: ") if guess == undercover: print(f"恭喜你,你猜对了!卧底是:{undercover}") break else: print(f"很遗憾,猜错了。卧底是:{undercover}") print("\n游戏结束,答案是:", undercover) print("提问历史:", questions) if __name__ == "__main__": main()
谁是卧底游戏是一种推理和判断能力的游戏,它可以帮助我们学习Python中的列表和随机数生成。游戏规则如下:玩家分为两个身份,卧底和平民。每个玩家会收到一个词语,卧底和平民的词语不同。玩家需要通过提问其他玩家来判断谁是卧底,并投票淘汰一个玩家。游戏会根据投票结果揭示被淘汰玩家的身份,直到卧底被找出为止。
总结
通过以上三个游戏,我们可以学习和练习Python的基本语法、条件语句、循环语句、字符串处理、随机数生成和列表操作等知识点。这些基础练习不仅有助于巩固所学知识,还能提高我们的编程能力和解决问题的能力。
希望本文对初学者们有所帮助,如果你对Python基础练习还有其他疑问,可以随时留言向我提问。祝愿大家在学习Python的过程中取得更好的成果!