问题描述:实现一个带有记分功能的24点游戏(简易版本,只使用1-13之间的数) 基本要求:程序随机自动生成四张牌(以1-13之间的数值代替),游戏者要求尽快给出表达式,只能使用 + - × % 运算。可以使用(),不涉及小数运算。比如机器给出四个数为3、3、6、2,游戏者输入表达式:(3+3-2)×6,程序检查运算成功。如果给出的四个数不能得出24,如:1、2、1、3,那么游戏者必须输入NO,要求计算机进入下一题,但此次如果是正确判断一样记分。如此玩3次,计算总分。任何一次在要求时间内不能给出表达式或NO,那么游戏此轮结束。 测试数据:任意输入4个1—13之间的数 运用python语言
时间: 2024-02-17 11:02:22 浏览: 59
下面是一个简单的 Python 代码实现 24 点游戏,包含了记分功能:
```
import random
import time
def calculate24(nums, expr):
ops = ['+', '-', '*', '%']
try:
result = eval(expr)
if abs(result - 24) < 1e-6:
return True
else:
return False
except:
return False
def generateCards():
return [random.randint(1, 13) for i in range(4)]
def playGame():
score = 0
for i in range(3):
print('Round %d:' % (i+1))
nums = generateCards()
print('Cards:', nums)
start_time = time.time()
expr = input('Please input your expression: ')
end_time = time.time()
if end_time - start_time > 10:
print('Time is up!')
elif expr == 'NO':
print('Correct answer does not exist')
score += 1
elif calculate24(nums, expr):
print('Congratulations! Correct answer!')
score += 2
else:
print('Sorry, incorrect answer')
print('Total score:', score)
playGame()
```
这个代码使用了 random 库来随机生成四张牌,使用 eval 函数计算表达式的值,并根据表达式是否正确和时间是否超时来计算得分。注意,由于 Python 中 % 表示求余运算,因此将题目中的 % 运算符替换为了 % 符号。
阅读全文