예상 판매 가격 (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()
제발 나를 부탁하고 전역 변수를 사용하지 마십시오. –
오류 .... 왜 안 되니? 다른 함수에는 getsale 함수로 가져와야하는 변수가 있습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? –
완전히 매개 변수로 변수를 전달하십시오. 예 : def getsale (이름, 가격, 노출). –