2016-08-22 4 views
0

Я пытаюсь взять список, share_list, а затем циклически перебирать список по одному и создавать выходные данные, адаптированные к результату. У меня есть две проблемы: я не знаю, как в цикл по списку, используя for петлю, и я получаю эту ошибку:ТипError: unorderable types: str() <= int()

Traceback (most recent call last): 
    File "C:\Users\Andrew\Documents\Python Projects\DataAnalytics\algorithm.py", line 9, in <module> 
    if check_pb_ratio.get_price_book() <= 1: 
TypeError: unorderable types: str() <= int() 
from yahoo_finance import Share 

share_list = ['AAPL', 'GEVO', 'PTX'] 


for ticker in share_list: 
    check_pb_ratio = Share(share_list[0]) 

    if check_pb_ratio.get_price_book() <= 1: 
     print(str(check_pb_ratio.get_price_book())) 
    else: 
     print("P/B Ratio is too high.") 
+0

кажется, что 'check_pb_ratio.get_price_book()' является строкой. попробуйте распечатать его перед 'if'. – xmcp

+1

'share_list [0]' -> 'ticker',' check_pb_ratio.get_price_book() '->' float (check_pb_ratio.get_price_book()) '. Подумайте о том, как использовать google и/или учебник python. –

ответ

0

Причиной этого является то, что функция возвращает check_pb_ratio.get_price_book() строка, а не int. Python не хочет знать сходство между «1» и 1.
Таким образом, способ исправить это: добавить int() или float() вокруг check_pb_ratio.get_price_book()

0

Благодаря @Rawing

Этот код теперь работает, я просто нужно исправить проблему NoneType. Благодаря!

from yahoo_finance import Share 

share_list = ['AAPL', 'GEVO', 'PTX'] 


for ticker in share_list: 
    check_pb_ratio = Share(ticker) 

    if float(check_pb_ratio.get_price_book()) <= 1: 
     print(str(check_pb_ratio.get_price_book())) 
    else: 
     print("P/B Ratio is too high.") 
Смежные вопросы