给出范围的Python打印浮动列表

时间:2018-04-26 17:56:56

标签: python gambling

我正在尝试模仿赌博游戏“Crash”的一个非常简单的版本,其中有一个数字每秒都在增加,它也是你的学分的乘数。因此,如果您输入50个积分并且乘数达到3.30,您将得到50 * 3.30 = 165个积分。这个数字会随机崩溃,如果你没有提取你的钱,就会失去它们。

from random import randrange, randint

crash_max_range = 50
crash_min_range = 0

multiplier_crash = list(range(crash_min_range, crash_max_range))
multiplier_crash = [float(i) for i in multiplier_crash]
print(*multiplier_crash, sep="\n")

我正在努力的主要事情是打印应该看起来像

的浮动列表
0
0.01
0.02
0.03

等..(新行上的每个号码) 我不知道如何在低范围内增加70%的时间崩溃的可能性,因为显然玩家不能总是赢。 你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

我不清楚这个崩溃的故事,但是如果你想让浮动列表以.01的增量打印到这样,你可以做的一件事就是改变这两行:< / p>

multiplier_crash = list(range(crash_min_range, crash_max_range * 100))
multiplier_crash = [float(i) / 100 for i in multiplier_crash]

这会将初始0打印为0.0,但是......如果你想要像0和1这样的数字打印,而不像你的例子那样打印.0,你可以做的一种方法是更换上面的第二行是这样的:

multiplier_crash = ["{:,g}".format(float(i) / 100) for i in multiplier_crash]

答案 1 :(得分:0)

对于模拟,您通常会使用一次执行一步的循环。我建议在随机条件下使用无限循环和break语句。

在此循环中,您只需要在每个打印中打印一个值。您应该对任何新代码使用str.format()方法。

代码可能如下所示:

import random

multiplier = 1.00
while True:
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
        break
    multiplier += 0.01
print('CRASH')

以上示例并不完美,因为浮点运算长时间运行会累积错误。使用整数并将其缩放为输出可能更好。

使用itertools你可以这样做。

import itertools
import random

for i in itertools.count(100):
    multiplier = float(i) / 100.0
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
       break
print('CRASH')

这可以使用生成器表达式进一步简化。但是,当您刚开始使用pyhton时,代码可能不太清楚。

import itertools
import random

for multiplier in (float(i) / 100.0 for i in itertools.count(100)):
    print('{:.2f}'.format(multiplier))
    if random.random() < 0.1:
       break
print('CRASH')