Найти - Пользователи
Полная версия: Как улучшить код?
Начало » Python для новичков » Как улучшить код?
1
LoopyNiggle
 #Rock_Paper_Scissors
print("Welcome to Rock_Paper_Scissors! press 1 for Rock, 2 for Paper and 3 for Scissors" )
#dict
gg = {1:"rock", 2:"paper", 3:"scissors"}
#user_input
x = int(input())
print(f"you chose: {x}, {gg[x]}")
#bot_input
import random
y = int(random.randint(1,3))
print(f"bot chose: {y}, {gg[y]}")
#winning conditions
if y == x:
    print("its a tie!")
elif y == 1 and x == 2:
    print("you won!")
elif y == 1 and x == 3:
    print("you lost!")
elif y == 2 and x == 3:
    print("you won!")
elif y == 2 and x == 1:
    print("you lost!")
elif y == 3 and x == 1:
    print("you won!")
elif y == 1 and x == 2:
    print("you lost!")
Alex.Pro.
Такой вариант лучше?
  #Rock_Paper_Scissors
print("Welcome to Rock_Paper_Scissors! press 1 for Rock, 2 for Paper and 3 for Scissors" )
#dict
gg = {1:"rock", 2:"paper", 3:"scissors"}
#user_input
x = int(input())
print(f"you chose: {x}, {gg[x]}")
#bot_input
import random
y = int(random.randint(1,3))
print(f"bot chose: {y}, {gg[y]}")
#winning conditions
if y == x:
    print("its a tie!")
elif (x-y) == 1 or (x-y) == -2:
    print("you won!")
else:
    print("you lost!")
py.user.next
Код должен быть правильным, понятным и легко меняемым.

Правильным - работать без ошибок.

Понятным - быть без загадок и головоломок.

Легко меняемым - изменение кода в одном месте не должно приводить к необходимости изменения кода в других местах.


tags: code rules
py.user.next
Alex.Pro.
  
gg = {1:"rock", 2:"paper", 3:"scissors"}
И вот мы, например, добавили четвёртое значение во множество значений - какой-нибудь янтарь или велосипед - что происходит с кодом?

Вот как раз все слабые места в коде поплывут.

Вот эта головоломка
Alex.Pro.
  
elif (x-y) == 1 or (x-y) == -2:
сломается и начнёт неправильно работать, при этом по ней никак не скажешь, что она сломана, потому что чтобы её понять, её надо сначала всю разгадать в уме, прочитать её недостаточно.

Головоломки - это такие места, где легко прячутся ошибки. Вот она спряталась - и всё, ты её не видишь. Соответственно, если код состоит из головоломок, то и ошибок в нём миллион, и их не видно.
xam1816
 import random
 
def get_winner(player, computer):
    if player == computer:
        return "Ничья!"
 
    # Список выигрышных комбинаций (игрок побеждает компьютер)
    win_combinations = [
        ("камень", "ножницы"),
        ("ножницы", "бумага"),
        ("бумага", "камень")
    ]
    if (player, computer) in win_combinations:
        return "Вы выиграли!"
    return "Вы проиграли!"
 
def main():
    choices = ["камень", "ножницы", "бумага"]
    print("=== Камень, ножницы, бумага ===")
    print("Введите: камень, ножницы или бумага")
    print("Для выхода введите 'выход'")
    while True:
        player_choice = input("\nВаш выбор: ").lower().strip()
        if player_choice == "выход":
            print("Спасибо за игру!")
            break
        if player_choice not in choices:
            print("Ошибка! Введите: камень, ножницы или бумага")
            continue
        computer_choice = random.choice(choices)
        print(f"Компьютер выбрал: {computer_choice}")
        result = get_winner(player_choice, computer_choice)
        print(result)
 
if __name__ == "__main__":
    main()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB