Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 24, 2016 09:25:36

brainrtp
Зарегистрирован: 2016-06-24
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить.

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 (Июнь 24, 2016 09:27:36)

Офлайн

#2 Июнь 24, 2016 09:36:17

brainrtp
Зарегистрирован: 2016-06-24
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить.

Хмм… Мне кажется, или я понял где ошибка?

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()

Отредактировано brainrtp (Июнь 24, 2016 09:39:42)

Офлайн

#3 Июнь 24, 2016 10:03:14

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите исправить.

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
Делай ошибки информативнее, дабы не попадать в такие ситуации

Отредактировано Firik (Июнь 24, 2016 10:30:55)

Офлайн

#4 Июнь 24, 2016 10:13:58

brainrtp
Зарегистрирован: 2016-06-24
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить.

Firik
brainrtp добавь в конец break
  File "test", line 20
    break
    ^
SyntaxError: 'break' outside loop
Повторил как у тебя.

Отредактировано brainrtp (Июнь 24, 2016 10:14:18)

Офлайн

#5 Июнь 24, 2016 10:31:23

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите исправить.

brainrtp
Не надо как у меня, надо как надо. Поправил предыдущее сообщение

Офлайн

#6 Июнь 24, 2016 10:37:58

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите исправить.

Короче смысл проблемы:
В функции first ты в переменную what вносишь свой выбор ОДИН раз. Затем в цикле ты постоянно проверяешь, чему она равна, а равна она у тебя всегда одному и тому же числу. Соответственно постоянно запускается одна и таже функция. Функция friend отрабатывает нормально, но из условий выше, после ввода ‘нет’ она прерывается, управление передается обратно в функцию first, а та заново запускает friend.

Офлайн

#7 Июнь 24, 2016 10:53:09

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Помогите исправить.

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()

Офлайн

#8 Июнь 24, 2016 11:23:33

brainrtp
Зарегистрирован: 2016-06-24
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить.

Методом тыка выявил какую-то ошибку)

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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version