石头剪刀布是一种经典的猜拳游戏,双方同时出拳,规则如下:
使用input()函数获取用户输入,并使用lower()方法将输入转换为小写,确保程序能处理不同大小写的输入。
使用random.choice()函数从列表中随机选择一个元素,模拟计算机的随机选择。
使用if/elif/else语句和逻辑运算符来判断游戏胜负。
以下是一个基础的石头剪刀布游戏实现:
# 石头剪刀布游戏 - 基础版本
import random
# 定义可选择的选项
options = ['rock', 'paper', 'scissors']
# 获取用户输入并转换为小写
user = input('请输入你的选择(rock/paper/scissors):').lower()
# 计算机随机选择
computer = random.choice(options)
# 显示双方选择
print(f'你出的是:{user}')
print(f'计算机出的是:{computer}')
# 判断胜负
if user == computer:
print('平局!')
elif (user == 'rock' and computer == 'scissors') or \
(user == 'scissors' and computer == 'paper') or \
(user == 'paper' and computer == 'rock'):
print('你赢了!')
else:
print('你输了!')
让我们改进游戏,添加输入验证、多轮游戏和统计功能:
# 石头剪刀布游戏 - 进阶版本
import random
def get_user_choice():
"""获取并验证用户输入"""
while True:
choice = input('请选择:1.石头 2.剪刀 3.布 (输入数字或名称):').lower()
# 支持多种输入方式
if choice in ['1', 'rock', '石头', 'r']:
return 'rock'
elif choice in ['2', 'scissors', '剪刀', 's']:
return 'scissors'
elif choice in ['3', 'paper', '布', 'p']:
return 'paper'
else:
print('无效输入!请输入 1/2/3 或对应的名称。')
def determine_winner(user, computer):
"""判断胜负"""
if user == computer:
return 'tie'
winning_combinations = [
('rock', 'scissors'),
('scissors', 'paper'),
('paper', 'rock')
]
if (user, computer) in winning_combinations:
return 'user'
else:
return 'computer'
def display_result(user, computer, result):
"""显示游戏结果"""
choice_names = {'rock': '石头', 'scissors': '剪刀', 'paper': '布'}
print(f'\n你出:{choice_names[user]}')
print(f'电脑出:{choice_names[computer]}')
if result == 'tie':
print('结果:平局!')
elif result == 'user':
print('结果:你赢了!')
else:
print('结果:你输了!')
def main():
"""主游戏循环"""
print('欢迎来到石头剪刀布游戏!')
print('输入 q 退出游戏\n')
wins = 0
losses = 0
ties = 0
while True:
user_choice = get_user_choice()
if user_choice == 'quit':
break
computer_choice = random.choice(['rock', 'scissors', 'paper'])
result = determine_winner(user_choice, computer_choice)
display_result(user_choice, computer_choice, result)
# 更新统计
if result == 'user':
wins += 1
elif result == 'computer':
losses += 1
else:
ties += 1
print(f'\n当前战绩:胜 {wins} 负 {losses} 平 {ties}')
# 询问是否继续
continue_game = input('\n继续游戏?(y/n): ').lower()
if continue_game not in ['y', 'yes', '是', '继续']:
break
# 显示最终统计
total = wins + losses + ties
if total > 0:
win_rate = (wins / total) * 100
print(f'\n游戏结束!')
print(f'总游戏次数:{total}')
print(f'胜率:{win_rate:.1f}%')
if __name__ == '__main__':
main()
修改游戏,添加更严格的输入验证,确保用户只能输入有效的选择。
实现一个计分系统,记录玩家的最高连胜次数和最佳胜率。
添加一个功能,分析玩家的出拳模式,并给出策略建议。
基础要求:
进阶要求:
提交要求:
了解更多关于游戏编程和Python应用开发的知识:
提示:这个项目是学习Python编程的绝佳实践。通过实现游戏逻辑、处理用户输入、管理游戏状态,你将掌握许多重要的编程概念。记得多测试、多调试,享受编程的乐趣!