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!
如果你乘以列表的长度,那么他们玩的时间越长,奖金就会越大,这与你想要的正好相反。
我正在尝试创建一个类似于我编写的混乱代码块的方程式,以根据玩家在猜谜游戏中的猜测次数来计算分数。
玩家有 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!
如果你乘以列表的长度,那么他们玩的时间越长,奖金就会越大,这与你想要的正好相反。