Найти - Пользователи
Полная версия: Помогите исправить.
Начало » Python для новичков » Помогите исправить.
1 2
brainrtp
ZerG
Запустите код, добейтесь что бы выскочила ошибка и скопируйте полностью ее сюда.
Во-первых, я не знаю как сделать так, что бы выбило ошибку.
Во-вторых, я бы не стал сюда писать, если бы знал в чем именно ошибка (в консоли бы показало ошибку)
В-третьих, исходя из логики действий у меня все правильно. Я думаю, что я не знаю каких-то нюансов в Python 3
Специально для удобного прочтения сократил код и убрал цветовые коды:
import os, vk_api, json, requests, time#импорт либки для роботы с дсон и импорт нттп либки
from datetime import datetime  #Импортируем библиотеку времени
now = datetime.now() 
login = 'Login'
password = 'Password'
http_obj = requests.get('https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+password) #собстна отправка запроса
rez_json = json.loads(http_obj.text) 
os.system("clear")
vk_session = vk_api.VkApi(login, password)
vk = vk_session.get_api()
print("➣ Вход выполнен успешно!")
print('Asses Token:',rez_json['access_token'])
print("Логин: "+login+"\nПароль: "+password[0:-4]+'****')
def first():
    try:
        what = int(input('Что нужно? \n1) Своя инфа\n2) Инфа друга'))
    except ValueError:
        print('➣ [ERROR] Вводить только цифры')
        time.sleep(0.7)
        first()
    while True:
        if what == 1:
            your()
        if what == 2:
            friend()
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            first()
def friend():
    print('-'*20)
    try:
        user_get = vk.users.get(user_ids=(input('Введите id друга в VK: ')), fields='sex')
    except vk_api.vk_api.ApiError:
        print('➣ [ERROR] id не найден. Попробуйте снова')
        friend()
    if user_get[0]['sex'] == 1:
        sex = 'Бабёна'
    if user_get[0]['sex'] == 2:
        sex = 'Мужской'
    if user_get[0]['sex'] == 0:
        sex = 'Не указан'
    print('Пол: '+sex)
    while True:
        more_info = input('Нужна инфа о другом поце? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            friend()
        elif more_info == 'Нет' or more_info == 'No' or more_info == 'N':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
        break
def your():
    try:
        vk_session.authorization()
    except vk_api.AuthorizationError as error_msg:
        print(error_msg)
        return
    f = vk.users.get(name_case='nom')
    name = f[0]['first_name']
    surname = f[0]['last_name']
    id_vk = f[0]['id']
    print('Имя: %s\nФамилия: %s\nID: %s' % (name, surname, id_vk))
    while True:
        more_info = input('Нужна дополнительная инфа? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            more_i()
        elif more_info == 'No' or more_info == 'N' or more_info == 'Нет':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
        break
def more_i():
    f = vk.users.get(name_case='gen', fields='sex,bdate,country,city,online,last_seen')
    name_gen = f[0]['first_name']
    surname_gen = f[0]['last_name']
    if f[0]['online'] == 1:
        global online
        online = 'В сети'
        last_seen = f[0]['last_seen']['time']
    if f[0]['online'] == 0:
        online = 'Не в сети'
        last_seen = f[0]['last_seen']['time']
    print(online)
    global sex
    if f[0]['sex'] == 1:
        sex = 'Бабёна'
    if f[0]['sex'] == 2:
        sex = 'Мужской'
    if f[0]['sex'] == 0:
        sex = 'Не указан'
    print('Пол: '+sex)
    print ('Родился: '+f[0]['bdate'])
    print ('Страна: '+f[0]['country']['title'])
    print ('Город: '+f[0]['city']['title'])
    while True:
        more_info = input('Нужна инфа о другом поце? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            friend()
        elif more_info == 'No' or more_info == 'N' or more_info == 'Нет':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
first()
brainrtp
Хмм… Мне кажется, или я понял где ошибка?
def first():
    try:
        what = int(input('Что нужно? \n1) Своя инфа\n2) Инфа друга'))
    except ValueError:
        print('➣ [ERROR] Вводить только цифры')
        time.sleep(0.7)
        first()
    while True:
        if what == 1:
            your()
        if what == 2:
            friend()
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            first()
def friend():
    print('-'*20)
    print('friend:')
    while True:
        more_info = input('Нужна инфа о другом поце? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            friend()
        elif more_info == 'Нет' or more_info == 'No' or more_info == 'N':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
        break
В def friend() при input == “No” ничего не происходит, а просто заново запускается эта же функция def friend()
Firik
brainrtp добавь в конец break
def first():
    try:
        what = int(input('Что нужно? \n1) Своя инфа\n2) Инфа друга'))
    except ValueError:
        print('➣ [ERROR] Вводить только цифры')
        time.sleep(0.7)
        first()
    while True:
        if what == 1:
            your()
        if what == 2:
            friend()
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            first()
    break
Делай ошибки информативнее, дабы не попадать в такие ситуации
brainrtp
Firik
brainrtp добавь в конец break
  File "test", line 20
    break
    ^
SyntaxError: 'break' outside loop
Повторил как у тебя.
Firik
brainrtp
Не надо как у меня, надо как надо. Поправил предыдущее сообщение
Firik
Короче смысл проблемы:
В функции first ты в переменную what вносишь свой выбор ОДИН раз. Затем в цикле ты постоянно проверяешь, чему она равна, а равна она у тебя всегда одному и тому же числу. Соответственно постоянно запускается одна и таже функция. Функция friend отрабатывает нормально, но из условий выше, после ввода ‘нет’ она прерывается, управление передается обратно в функцию first, а та заново запускает friend.
Firik
brainrtp
Я так думаю нужно что то вроде этого
def first():    
    while True:
        try: 
            what = int(input('Что нужно? \n1) Своя инфа\n2) Инфа друга')) 
        except ValueError: 
            print('➣ [ERROR] Вводить только цифры') 
            first()         
        if what == 1: 
            print('your')
        if what == 2: 
            friend() 
        else: 
            print('➣ [ERROR]') 
            first() 
def friend(): 
    print('-'*20) 
    print('friend:') 
    while True: 
        more_info = input('Нужна инфа о другом поце? ').capitalize() 
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': 
            friend() 
        elif more_info == 'Нет' or more_info == 'No' or more_info == 'N': 
            break 
        else: 
            print('➣ [ERROR]') 
            continue 
        break
first()
brainrtp
Методом тыка выявил какую-то ошибку)
import os, vk_api, json, requests, time#импорт либки для роботы с дсон и импорт нттп либки
from datetime import datetime  #Импортируем библиотеку времени
print("➣ Вход выполнен успешно!")
def first():
    try:
        what = int(input('Что нужно? \n1) Своя инфа\n2) Инфа друга'))
    except ValueError:
        print('➣ [ERROR] Вводить только цифры')
        time.sleep(0.7)
        first()
    if what == 1:
        your()
    if what == 2:
        friend()
    else:
        print('➣ [ERROR]')
        time.sleep(0.7)
        first()
def friend():
    print('-'*20)
    print('friend:')
    while True:
        more_info = input('Нужна инфа о другом поце? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            friend()
        elif more_info == 'Нет' or more_info == 'No' or more_info == 'N':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
        break
def your():
    print('your:')
    while True:
        more_info = input('Нужна дополнительная инфа? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            more_i()
        elif more_info == 'No' or more_info == 'N' or more_info == 'Нет':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
        break
def more_i():
    print ('more_i: ')
    while True:
        more_info = input('Нужна инфа о другом поце? ').capitalize()
        if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y':
            friend()
        elif more_info == 'No' or more_info == 'N' or more_info == 'Нет':
            break
        else:
            print('➣ [ERROR]')
            time.sleep(0.7)
            continue
first()
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