Измените несколько переменных со значением "None", например, на "n / a" внутри цикла for. - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в программировании и создаю бота Discord с Discord.py. У меня есть команда, которая показывает мне информацию о предоставляемом мною IP-адресе. Проблема в. Некоторые результаты не всегда содержат информацию, например, город, и там просто написано «Нет». Я попытался создать для l oop, который изменяет каждое значение с «None» на «n / a», но он все равно возвращает «None» за пределами l oop.

Я пробовал поискать в Google, но не нашел ни одного работающего решения. Это может быть потому, что я тупой или слепой. Переменная имеет новое значение внутри l oop, но не снаружи. Можно ли изменить значение в a для l oop, чтобы использовать его вне его, или это невозможно? Я знаю, что могу вручную исправить это для каждой переменной, но было бы намного лучше сделать это с одного l oop.

Код:

@bot.command()
async def ip(msg, ctx):
    host = shodan.host(ctx)
    city = host.get('city')
    country = host.get('country_name')
    ipp = host['ip_str']
    org = host.get('org')
    os = host.get('os')
    hostname = str(host.get('hostnames')).strip("['']")
    ports = str(host.get('ports')).strip('[]')
    services = host.get('services')
    variables = [host, city, country, ipp, org, os, hostname, ports, services]
    for v in variables:
        if v == None:
            v = "n/a"
        await msg.channel.send(f"**City:** {city}\n**Country:** {country}\n**IP:** {ipp}\n**Organization:** {org}\n**Operating System:** {os}\n**Hostnames:** {hostname}\n**Ports:** {ports}\n**Services:** {services}")

Пример вывода:

Город: Нет
Страна: Норвегия
IP: 195.88.54.16
Организация: Globalconnect
Операционная система: Нет
Имена хостов: www.vg.no
Порты: 80, 443
Услуги: Нет

Все это всего лишь небольшая деталь и не очень важна, но я был бы очень рад, если бы у кого-нибудь был решение или любые советы, которые могут помочь мне улучшить его.

...