Python распечатывает список поплавков с учетом диапазона - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь эмулировать действительно простую версию азартной игры «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 голосов
/ 26 апреля 2018

Для симуляции вы обычно используете цикл, который делает один шаг за раз. Я предлагаю использовать бесконечный цикл и оператор 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')
0 голосов
/ 26 апреля 2018

Мне не совсем понятна история сбоев, но если вы хотите, чтобы список с плавающей точкой печатался с шагом в 0,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]
...