• Ну и что вы думаете? Мы взяли и создали свой собственный чат, с блекджеком и шлюхами, теперь все легенды в одном месте: даже те 1000 человек, которых мы забанили в старом чате 🫡 Будем публиковать там очень интересные подробности нового дизайна форума, oh yeah

    Вступай и становись легендой, пока это не стало поздно: жмякай на меня, ток не сильно(

Вопрос Как сделать этот код чище?

Пользователь
Статус
Оффлайн
Регистрация
26 Фев 2020
Сообщения
329
Реакции[?]
31
Поинты[?]
0
недавно начал изучать питон, смотреть уроки, книги и так далее.
ну и во время обучения практикуюсь делая всякую хуйню
так вот, как сделать этот код проще, чище, правильнее...
Python:
import platform,socket,uuid
from colorama import init
from colorama import Fore, Back, Style
init()

def GetPlatform():
    print(Fore.WHITE + 'Platform:' + Fore.RED, platform.system())
    print(Fore.WHITE + 'Platform realese:' + Fore.RED, platform.release())
    print(Fore.WHITE + 'Platform version:' + Fore.RED, platform.version())
    print(Fore.WHITE + 'Platform architecture:' + Fore.RED, platform.architecture())
def GetIpStats():
    print(Fore.WHITE + 'Hostname:' + Fore.GREEN, socket.gethostname())
    print(Fore.WHITE + 'IP:' + Fore.GREEN, socket.gethostbyname(socket.gethostname()))
    print(Fore.WHITE + 'MAC:' + Fore.GREEN, uuid.getnode())
def GetSpecs():
    print(Fore.WHITE + 'CPU:' + Fore.BLUE, platform.processor())

Style.BRIGHT
print(Back.CYAN + Fore.BLACK + 'PC stats checker.')
while True:
    print(Back.RESET + Fore.WHITE)
    print('''1. Получение информации о системе.
2. Получение инфрмации об айпи.
3. Получение информации о процессоре. \n''')
    answer = int(input('Введите цифру пункта:'))
    if answer == 1:
        print(GetPlatform())
        print("") # типа отступ между строками
        continue
    elif answer == 2:
        print(GetIpStats())
        print("")
        continue
    elif answer == 3:
        print(GetSpecs())
        print("")
        continue
    else:
        print('Вы ввели неверное значение.')
    break
input()
также есть проблема, например после ввода цифры 1 пишется информация о системе, а после всей информации, на строчку ниже, пишется None
 
Забаненный
Статус
Оффлайн
Регистрация
11 Ноя 2021
Сообщения
19
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Принты вырежи и вставь лоригоном
 
Эксперт
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
1,760
Реакции[?]
559
Поинты[?]
4K
Web developer / designer
Пользователь
Статус
Оффлайн
Регистрация
15 Ноя 2020
Сообщения
411
Реакции[?]
124
Поинты[?]
2K
Как уже сказали выше, попробуй использовать switch case, которые завезли в ласт апдейте питона

Код:
test = "word"

match test:
    case "word":
        print("OK")
        do_something_good()
    case "no_test":
        print("Not Found")
        do_something_bad()
    case "something":
        print("Something")
    case _: # тот же else/default из c#
        print("Code not found")
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,448
Реакции[?]
1,092
Поинты[?]
10K
Как уже сказали выше, попробуй использовать switch case, которые завезли в ласт апдейте питона

Код:
test = "word"

match test:
    case "word":
        print("OK")
        do_something_good()
    case "no_test":
        print("Not Found")
        do_something_bad()
    case "something":
        print("Something")
    case _: # тот же else/default из c#
        print("Code not found")
*паттерн матчинг
это немного не то, что можно лицезреть в тех же плюсах

Во первых, изучи PEP-8:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Во вторых:
Код:
Style.BRIGHT <-- useless code (не влияет никак)
print(Back.CYAN + Fore.BLACK + 'PC stats checker.')
В третьих, используй конструкцию if __name__ == '__main__', тогда и код будет разборчивее, да и с точки зрения программирования будет правильнее

В четвёртых:
1638685864639.png

Вместо двух принтов, делай так:
print(GetPlatform(), end='\n\n')

Ну, и наконец, последняя строчка никогда не сработает:
1638685972473.png
 
Участник
Статус
Оффлайн
Регистрация
12 Мар 2019
Сообщения
757
Реакции[?]
247
Поинты[?]
1K
Вот моя вариация твоего кода:

Код:
from colorama import Fore, Back, Style, init
from socket import gethostname, gethostbyname
from uuid import getnode
from platform import system, release, version, architecture, processor
init()


def GetPlatform():
    return f'''
{Fore.WHITE}Platform: {Fore.RED}{system()}
{Fore.WHITE}Platform realese: {Fore.RED}{release()}
{Fore.WHITE}Platform version: {Fore.RED}{version()}
{Fore.WHITE}Platform architecture: {Fore.RED}{architecture()}'''


def GetIpStats():
    return f'''
{Fore.WHITE}Hostname: {Fore.GREEN}{gethostname()}
{Fore.WHITE}IP: {Fore.GREEN}{gethostbyname(gethostname())}
{Fore.WHITE}MAC: {Fore.GREEN}{getnode()}'''


def GetSpecs():
    return f'{Fore.WHITE}CPU: {Fore.BLUE}{processor()}'


print(f'{Back.CYAN + Fore.BLACK}PC stats checker.')


while True:
    print(f'''{Back.RESET + Fore.WHITE}
1. Получение информации о системе.
2. Получение инфрмации об айпи.
3. Получение информации о процессоре.\n''')

    answer: int = int(input('Введите цифру пункта:'))

    answer_info = {
        1: GetPlatform(),
        2: GetIpStats(),
        3: GetSpecs()
    }
    print(f'{answer_info.get(answer, "Вы ввели неверное значение.")}\n')
    continue
 
Последнее редактирование:
Web developer / designer
Пользователь
Статус
Оффлайн
Регистрация
15 Ноя 2020
Сообщения
411
Реакции[?]
124
Поинты[?]
2K
Вот моя вариация твоего кода:

Код:
from colorama import Fore, Back, Style, init
from socket import gethostname, gethostbyname
from uuid import getnode
from platform import system, release, version, architecture, processor
init()


def GetPlatform():
    return f'''
{Fore.WHITE}Platform: {Fore.RED}{system()}
{Fore.WHITE}Platform realese: {Fore.RED}{release()}
{Fore.WHITE}Platform version: {Fore.RED}{version()}
{Fore.WHITE}Platform architecture: {Fore.RED}{architecture()}'''


def GetIpStats():
    return f'''
{Fore.WHITE}Hostname: {Fore.GREEN}{gethostname()}
{Fore.WHITE}IP: {Fore.GREEN}{gethostbyname(gethostname())}
{Fore.WHITE}MAC: {Fore.GREEN}{getnode()}'''


def GetSpecs():
    return f'{Fore.WHITE}CPU: {Fore.BLUE}{processor()}'


print(f'{Back.CYAN + Fore.BLACK}PC stats checker.')


while True:
    print(f'''{Back.RESET + Fore.WHITE}
1. Получение информации о системе.
2. Получение инфрмации об айпи.
3. Получение информации о процессоре.\n''')

    answer: int = int(input('Введите цифру пункта:'))

    answer_info = {
        1: GetPlatform(),
        2: GetIpStats(),
        3: GetSpecs()
    }
    print(f'{answer_info.get(answer, "Вы ввели неверное значение.")}\n')
    continue
1638885730415.png
 
Участник
Статус
Оффлайн
Регистрация
12 Мар 2019
Сообщения
757
Реакции[?]
247
Поинты[?]
1K
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,448
Реакции[?]
1,092
Поинты[?]
10K
Так тут нету не одного нормального пайтан кодера лол, тут челы продают паблик за 100 рублей :/
Ааа, вот почему ты тайпхинт делаешь в явных переменных, ну правильно, чтоб точно иДэЕ не ошиблась

 
Web developer / designer
Пользователь
Статус
Оффлайн
Регистрация
15 Ноя 2020
Сообщения
411
Реакции[?]
124
Поинты[?]
2K
Эксперт
Статус
Оффлайн
Регистрация
13 Сен 2020
Сообщения
1,446
Реакции[?]
714
Поинты[?]
11K
недавно начал изучать питон, смотреть уроки, книги и так далее.
ну и во время обучения практикуюсь делая всякую хуйню
так вот, как сделать этот код проще, чище, правильнее...
Python:
import platform,socket,uuid
from colorama import init
from colorama import Fore, Back, Style
init()

def GetPlatform():
    print(Fore.WHITE + 'Platform:' + Fore.RED, platform.system())
    print(Fore.WHITE + 'Platform realese:' + Fore.RED, platform.release())
    print(Fore.WHITE + 'Platform version:' + Fore.RED, platform.version())
    print(Fore.WHITE + 'Platform architecture:' + Fore.RED, platform.architecture())
def GetIpStats():
    print(Fore.WHITE + 'Hostname:' + Fore.GREEN, socket.gethostname())
    print(Fore.WHITE + 'IP:' + Fore.GREEN, socket.gethostbyname(socket.gethostname()))
    print(Fore.WHITE + 'MAC:' + Fore.GREEN, uuid.getnode())
def GetSpecs():
    print(Fore.WHITE + 'CPU:' + Fore.BLUE, platform.processor())

Style.BRIGHT
print(Back.CYAN + Fore.BLACK + 'PC stats checker.')
while True:
    print(Back.RESET + Fore.WHITE)
    print('''1. Получение информации о системе.
2. Получение инфрмации об айпи.
3. Получение информации о процессоре. \n''')
    answer = int(input('Введите цифру пункта:'))
    if answer == 1:
        print(GetPlatform())
        print("") # типа отступ между строками
        continue
    elif answer == 2:
        print(GetIpStats())
        print("")
        continue
    elif answer == 3:
        print(GetSpecs())
        print("")
        continue
    else:
        print('Вы ввели неверное значение.')
    break
input()
также есть проблема, например после ввода цифры 1 пишется информация о системе, а после всей информации, на строчку ниже, пишется None
юзай switch case
 
Сверху Снизу