• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

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

  • Автор темы Автор темы kesker
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
26 Фев 2020
Сообщения
329
Реакции
31
недавно начал изучать питон, смотреть уроки, книги и так далее.
ну и во время обучения практикуюсь делая всякую хуйню
так вот, как сделать этот код проще, чище, правильнее...
Python:
Expand Collapse Copy
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, которые завезли в ласт апдейте питона

Код:
Expand Collapse Copy
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")
 
Как уже сказали выше, попробуй использовать switch case, которые завезли в ласт апдейте питона

Код:
Expand Collapse Copy
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:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Во вторых:
Код:
Expand Collapse Copy
Style.BRIGHT <-- useless code (не влияет никак)
print(Back.CYAN + Fore.BLACK + 'PC stats checker.')

В третьих, используй конструкцию if __name__ == '__main__', тогда и код будет разборчивее, да и с точки зрения программирования будет правильнее

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

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

Ну, и наконец, последняя строчка никогда не сработает:
1638685972473.png
 
Вот моя вариация твоего кода:

Код:
Expand Collapse Copy
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
 
Последнее редактирование:
Вот моя вариация твоего кода:

Код:
Expand Collapse Copy
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
 
Pylinter в помощь хах
 
Так тут нету не одного нормального пайтан кодера лол, тут челы продают паблик за 100 рублей :/
Ааа, вот почему ты тайпхинт делаешь в явных переменных, ну правильно, чтоб точно иДэЕ не ошиблась

 
много принтов
 
недавно начал изучать питон, смотреть уроки, книги и так далее.
ну и во время обучения практикуюсь делая всякую хуйню
так вот, как сделать этот код проще, чище, правильнее...
Python:
Expand Collapse Copy
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
 
Назад
Сверху Снизу