✧ Цикл while и управление циклами ✧

🔄 Теория: Цикл while

Цикл while как процесс круток - продолжаем, пока не получим желаемый результат!

Базовый while:

# Восстановление смолы
resin = 0
while resin < 160:
    resin += 8  # +8 каждые 6 минут
    print(f"Смола: {resin}/160")

# Цикл с составным условием
artifacts = 0
resin = 160
while resin >= 20 and artifacts < 5:
    resin -= 20
    artifacts += 1  # Получаем артефакт

break - досрочный выход:

# Крутим баннер до 5★
wishes = 0
pity = 0
while True:  # Бесконечный цикл
    wishes += 1
    pity += 1
    
    if pity == 90:  # Гарантированный 5★
        print("Получен 5★ персонаж!")
        break
    
    if random() < 0.006:  # Шанс 0.6% на 5★
        print("Ранний 5★!")
        break

continue - пропуск итерации:

# Ищем 5★ артефакты
resin = 160
five_star = 0

while resin > 0:
    resin -= 20
    rarity = get_artifact_rarity()
    
    if rarity < 5:  # Пропускаем 4★ и ниже
        continue
    
    five_star += 1
    print(f"5★ артефакт! Всего: {five_star}")

while-else:

# Пытаемся получить артефакт с крит уроном
attempts = 5
while attempts > 0:
    stats = roll_artifact_stats()
    if "CRIT DMG" in stats:
        print("Есть крит урон!")
        break
    attempts -= 1
else:  # Выполнится если не было break
    print("Не повезло с кританами...")

🎲 Задача: Симулятор круток

Создайте симулятор баннера с системой пити (гарантированного получения персонажа).

Правила гача-системы:

  • Базовый шанс на 5★ - 0.6%
  • После 73 крутки шанс начинает расти
  • 90 круток - гарантированный 5★
  • Первый 5★ - 50/50 на баннерного персонажа
  • Если проиграли 50/50, следующий 5★ - гарантированно баннерный

Реализуйте:

💡 Подсказка:

def wish_simulator(primogems):
    wishes = primogems // 160
    pity_5 = 0
    guaranteed = False
    
    while wishes > 0:
        pity_5 += 1
        # Увеличиваем шанс после 73 крутки
        chance = 0.006 + max(0, (pity_5 - 73) * 0.06)
        # ...
⟵ Цикл for Комбинирование циклов ⟶