Python 打印给定范围的浮点数列表
Python printing list of floats given the range
我正在尝试模拟一个非常简单的赌博游戏版本 "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% 的时间崩溃的机会,因为显然玩家不能总是赢。
你能帮我吗?
我不清楚崩溃的故事,但如果您希望以 .01 的增量打印浮动列表,那么您可以做的一件事就是像这样更改这两行:
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]
对于模拟,您通常会使用一次执行一个步骤的循环。我建议在随机条件下使用无限循环和 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')
我正在尝试模拟一个非常简单的赌博游戏版本 "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% 的时间崩溃的机会,因为显然玩家不能总是赢。 你能帮我吗?
我不清楚崩溃的故事,但如果您希望以 .01 的增量打印浮动列表,那么您可以做的一件事就是像这样更改这两行:
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]
对于模拟,您通常会使用一次执行一个步骤的循环。我建议在随机条件下使用无限循环和 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')