Python - 为简单的猜谜游戏分数计算优化数学方程式

Python - optimizing math equation for a simple guessing game score calc

我正在尝试创建一个类似于我编写的混乱代码块的方程式,以根据玩家在猜谜游戏中的猜测次数来计算分数。

玩家有 10 次尝试。对于每一次不成功的尝试,分数乘法都会减少 x。 所以尝试的次数越多,分数的影响因素就越少。

我已经尝试计算包含尝试次数的猜测列表的长度,但这与我想要的相反。玩家尝试次数越多,得分越高。

我试过使用 len(guesses[::-1]),但效果是一样的……显然它仍然很重要,例如 10 次尝试。

有什么办法吗?我怀疑是 for 循环,但我没能做出任何接近工作的东西。

基本上我要搜索的是方程式或数学表达式,而不是列表、字典等实现方式。

例如线性的东西:

Prize = bet * (reversedGuesses * 
1.25) 
# so that if it took 1 try = 12.5
# and if it took 10 tries = 1.25

我当前混乱的、未优化的代码块:

if tries == 10:
    prize = bet * 7
elif tries == 9:
    prize = bet * 6
elif tries == 8:
    prize = bet * 5
elif tries == 7:
    prize = bet * 3.5
elif tries == 6:
    prize = bet * 2.75
elif tries == 5:
    prize = bet * 2.50
elif tries == 4:
    prize = bet * 2.25
elif tries == 3:
    prize = bet * 2.0
elif tries == 2:
    prize = bet * 1.75
elif tries == 1: 
    prize = bet * 1.5

以上显然有效,但我相信它可以更有效地完成...

我是 python 的新手,所以解释也很棒!

谢谢!

I've tried using len(guesses[::-1]), but that does the same... obviously as it still counts e.g 10 tries.

这种方法的问题是,如果你颠倒列表,然后问它有多长,它就会和原来的列表一样长。

Basically what I'm searching for is an equation or mathematical expression, not so much a list, dict, etc way of doing it.

你可以除以他们使用的猜测次数。类似于:

Prize = bet / len(guesses)

每猜错一次,奖金减少10%:

Prize = bet * ((1 - 0.10) ** len(guesses))

您可以在猜错 10 次后将奖品降为 0,并且每次都降相同的数额:

guesses_left = max(0, 10 - len(guesses))
Prize = bet * guesses_left

I'm new to python, so an explanation would be awesome too!

如果你乘以列表的长度,那么他们玩的时间越长,奖金就会越大,这与你想要的正好相反。