Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пишу Бывалым программистам на Python . Отцените код, подскажите что изменить и как улучшить код. Код писал на телефоне

Alexjug Ученик (95), открыт 4 часа назад
import random
import math
game = str(input("Это симулятор сражений, хотите начать?"))
if game == 'да' :
# \n переносит слово на другую строку
print("Выберите сторону: \n 1.Северогерманский союз ??\n 2.Франция ?? \n Чтобы выбрать страну напишите её номер!")
else:
print("Выход из игры ...")
country = input("")

#Играем за Северогерманский союз
if country == "1" :
print(" Отличный выбор\n Прусская пехота славится своей выучкой и отвагой.\n +10% бонус организации\n\n Ваши войска встретились с армией Франции у фр.города 'S' ")
pruss_army =random.randint(8000,9000)
fra_army =random.randint(9000,10500)
print(f" Ваша армия:{pruss_army}?\n Вражеская армия:{fra_army}?")
#Бонусы армий
pruss_bonus =pruss_army + (pruss_army * 0.1)
fra_bonus = fra_army - (fra_army * 0.1)
#Потери при отступлении
dead_pruss = pruss_bonus -(pruss_bonus*0.3)
dead_fra = fra_bonus -(fra_bonus*0.3)

battle = input(" Начать бой? ⚔️ ")
if battle == "да":
if pruss_bonus > fra_bonus:
print("Наша армия победила!")
else:
print("Мы проиграли, французы взяли Берлин \n Игра окончена...")
else:
print ("Наша армия отступила")
# math.trunc округляет до целого числа
print (f"Наши потери: {math.trunc(dead_pruss)} ?")
if dead_pruss > 4000:
print ("Мы проиграли, французы взяли Берлин \n Игра окончена...")

#Играем за Францию
elif country == "2" :
print ("Отличный выбор\n Отсутствие хорошо проработанного плана,\n нежелание народа служить в армии.\n -10% бонус организации\n\n Ваши войска встретились с армией Пруссии у прусс.города 'B' ")
fra_army =random.randint(9000,10500)
pruss_army =random.randint(8000,9000)
print(f" Ваша армия:{fra_army} ?\n Вражеская армия:{pruss_army} ?")
#Бонусы армий
pruss_bonus =pruss_army + (pruss_army * 0.1)
fra_bonus = fra_army - (fra_army * 0.1)
#Потери при отступлении
dead_fra = fra_bonus -(fra_bonus*0.4)

battle = input(" Начать бой? ⚔️ ")
if battle == "да":
if fra_bonus > pruss_bonus:
print("Наша армия победила!")
else:
print("Мы проиграли, немцы взяли Париж \n Игра окончена...")
else:
print ("Наша армия отступила")
# math.trunc округляет до целого числа
print (f"Наши потери: {math.trunc(dead_fra)} ?")
if dead_fra > 4000:
print ("Мы проиграли, немцы взяли Париж \n Игра окончена...")
1 ответ
Flight RB Ученик (108) 4 часа назад
Вот улучшенный

import random
import math

def simulate_battle(country):
"""Симулирует битву между Северогерманским союзом и Францией."""

if country == "1":
print("Отличный выбор\nПрусская пехота славится своей выучкой и отвагой.\n+10% бонус организации\n\nВаши войска встретились с армией Франции у фр.города 'S'")
pruss_bonus = get_army_strength("Северогерманский союз", 8000, 9000, 0.1)
fra_bonus = get_army_strength("Франция", 9000, 10500, -0.1) # Отрицательный бонус
loss_threshold = 4000
elif country == "2":
print("Отличный выбор\nОтсутствие хорошо проработанного плана, нежелание народа служить в армии.\n-10% бонус организации\n\nВаши войска встретились с армией Пруссии у прусс.города 'B'")
fra_bonus = get_army_strength("Франция", 9000, 10500, -0.1) # Отрицательный бонус
pruss_bonus = get_army_strength("Северогерманский союз", 8000, 9000, 0.1)
loss_threshold = 4000
else:
print("Некорректный выбор страны. Игра окончена.")
return

print(f"Ваша армия: {int(pruss_bonus if country == '1' else fra_bonus)} ?\nВражеская армия: {int(fra_bonus if country == '1' else pruss_bonus)} ?")

battle = input("Начать бой? ⚔️ ").lower()
if battle == "да":
if pruss_bonus > fra_bonus if country == '1' else fra_bonus > pruss_bonus:
print("Наша армия победила!")
else:
print(f"Мы проиграли, {'французы взяли Берлин' if country == '1' else 'немцы взяли Париж'}\nИгра окончена...")
else:
print("Наша армия отступила")
losses = calculate_retreat_losses(pruss_bonus if country == '1' else fra_bonus, 0.3 if country == '1' else 0.4) #Разные потери в зависимости от страны
print(f"Наши потери: {int(losses)} ?")
if losses > loss_threshold:
print(f"Мы проиграли, {'французы взяли Берлин' if country == '1' else 'немцы взяли Париж'}\nИгра окончена...")

def get_army_strength(country_name, min_army_size, max_army_size, bonus_percentage):
"""Генерирует численность армии с учетом бонуса."""
army_size = random.randint(min_army_size, max_army_size)
bonus = army_size * bonus_percentage
return army_size + bonus

def calculate_retreat_losses(army_strength, loss_percentage):
"""Вычисляет потери при отступлении."""
return army_strength - (army_strength * loss_percentage)

game = input("Это симулятор сражений, хотите начать? ").lower()
if game == 'да':
print("Выберите сторону:\n1. Северогерманский союз ??\n2. Франция ??\nЧтобы выбрать страну напишите её номер!")
country = input("").lower()
simulate_battle(country)
else:
print("Выход из игры...")
AlexjugУченик (95) 4 часа назад
А почему это блок :

game = input("Это симулятор сражений, хотите начать? ").lower()
if game == 'да':
print("Выберите сторону:\n1. Северогерманский союз ??\n2. Франция ??\nЧтобы выбрать страну напишите её номер!")
country = input("").lower()
simulate_battle(country)
else:
print("Выход из игры...")
Находится в коде в самом конце, но при запуске отображается в начале?
AlexjugУченик (95) 4 часа назад
Почему этот блок находится в самом конце кода, а при запуске отображается в начале?

game = input("Это симулятор сражений, хотите начать? ").lower()
if game == 'да':
print("Выберите сторону:\n1. Северогерманский союз ??\n2. Франция ??\nЧтобы выбрать страну напишите её номер!")
country = input("").lower()
simulate_battle(country)
else:
print("Выход из игры...")
Alexjug, потому что это писала нейросеть, а бот, опубликовавший её говнокод, сам не в курсе ни о чём.
Твой ПрофессорМастер (1982) 3 часа назад
Прикольный, конечно, ответ. Но лучше сделать все лаконично.
Стырю немного его строк, воткну что да как и отвечу
Похожие вопросы