2013-04-29 2 views
1

예상 판매 가격 (esv)에 대한 코드는 가장 최근에 입력 된 주식 만 읽습니다. 즉, 첫 번째 주식으로 gm을 입력하면 ge는 둘째로, gm에 대한 데이터를 덮어 쓰기 때문에 ge 만 읽습니다. 나는 현재 입력 된 첫 번째 주식에 대해서만 계산하기 때문에 입력 된 각 주식에 대해 esv 계산을하는 방법을 모르겠습니다. 내 생각은 실제로 각 주식을 입력 한 후에 발생해야하며 주식 기호를 키로, 새 값으로 esv를 포함하는 새 사전에 저장해야합니다. 그러나 할당은이 프로세스가 GetSale 함수 내에서 발생한다고 가정합니다. 그렇게 코딩하는 것은 나에게별로 의미가 없다. 어쨌든, 여기 GetSale 코드가 있습니다.과제 : Python 3.3 : 사용자 입력을 통해 클래스에서 인스턴스를 호출하는 방법

def getsale(): 
global names 
global prices 
global exposure 
for key in names: 
    symbol = key 
    for key in exposure: 
     risk_number = exposure[key][0] 
     shares_held = exposure[key][1] 
    for key in prices: 
     purchase_price = prices[symbol][0] 
     current_price = prices[symbol][1] 
    esv = [-((current_price - purchase_price) - risk_number * current_price) * shares_held] 
print("The estimated sale value of ", symbol, "is ", sorted(esv(),reverse = True)) 

편집 : 좋아, 내가 다른 소스에서 이것에 대한 대답을 얻었다. 새로운 빈 목록을 만들어야했습니다. 또한 여러 개의 for 루프를 가질 필요가 없었습니다. 모두 for 루프로 작동했기 때문입니다. 그런 다음, esv 및 주식 기호를 내 목록에 추가하고 정렬/인쇄해야합니다 (가장 큰 숫자가 인쇄되도록 되돌릴 수 있습니다). 나는 내 자신의 질문에 답을 게시 할 것이지만, 나는 몇 시간을 기다려야한다. 그래서 대신 여기에 수정 된 코드가 있습니다.

def getsale(): 
global names 
global prices 
global exposure 
sellGuide=[] 
for key in names: 
    symbol = key 
    risk_number = exposure[symbol][0] 
    shares_held = exposure[symbol][1] 
    purchase_price = prices[symbol][0] 
    current_price = prices[symbol][1] 
    esv = (float(((current_price - purchase_price) - risk_number * current_price) * shares_held)) 
    sellGuide.append([esv, symbol]) 
print(sorted(sellGuide, reverse = True)) 

그러나 목록의 맨 처음 인쇄하는 방법 만 말해 줄 수 있습니까? 당신이 첫 번째 요소가 있어요

File "D:\Python\Python Modules\stock_portfolio.py", line 43, in getsale 
print(sorted(sellGuide[0], reverse = True)) 
TypeError: unorderable types: float() < str() 
+0

제발 나를 부탁하고 전역 변수를 사용하지 마십시오. –

+0

오류 .... 왜 안 되니? 다른 함수에는 getsale 함수로 가져와야하는 변수가 있습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? –

+0

완전히 매개 변수로 변수를 전달하십시오. 예 : def getsale (이름, 가격, 노출). –

답변

2

귀하의 코드가 예에서

print(sorted(sellGuide, reverse = True)[0]) 

을해야한다 :

print(sorted(sellGuide[0], reverse = True)) 

그러나 나는 다음과 같은 오류를 얻을 :이 코드가 작동 것이라고 생각 그것을 sellGuide에서 정렬합니다. 따라서 int/float에 대해 일종의 작업을 수행하고 있습니다. 이는 작동하지 않습니다.

+0

아하! 정말 고맙습니다. 나는 그것이 단순한 것이라고 생각했다. 색인을 잘못된 위치에 두었습니다. 당신이 int/float에 정렬하려고 함을 의미하는 것을 봅니다. –

관련 문제