Parte da aula07 adicionada
This commit is contained in:
parent
86f9dd3099
commit
90f49e9587
|
@ -0,0 +1,7 @@
|
|||
# Fundamentos de Programação
|
||||
## Aula 07 - [Slides](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/fp/slides/tp07-dictionaries.pdf)
|
||||
### Tópico principal da aula: Dictionaries
|
||||
#### Exercícios terminados: ex01, ex02, ex03
|
||||
|
||||
---
|
||||
*Pode conter erros, caso encontre algum, crie um* [*ticket*](https://github.com/TiagoRG/uaveiro-leci/issues/new)
|
Binary file not shown.
|
@ -0,0 +1,79 @@
|
|||
# A set of functions to deal with bags of money.
|
||||
#
|
||||
# JMR 2017
|
||||
|
||||
|
||||
# Face values of coins (in cents):
|
||||
COINS = [200, 100, 50, 20, 10, 5, 2, 1]
|
||||
|
||||
def value(bag):
|
||||
"""Return total amount in a bag."""
|
||||
...
|
||||
|
||||
|
||||
def transfer1coin(bag1, c, bag2):
|
||||
"""Try to transfer one coin of value c from bag1 to bag2.
|
||||
If possible, transfer coin and return True, otherwise return False."""
|
||||
...
|
||||
|
||||
|
||||
def transfer(bag1, amount, bag2):
|
||||
"""Try to transfer an amount from bag1 to bag2.
|
||||
If possible, transfer coins and return True,
|
||||
otherwise, return False and leave bags with same values."""
|
||||
if amount == 0:
|
||||
return True
|
||||
if value(bag1) < amount:
|
||||
return False
|
||||
...
|
||||
|
||||
|
||||
def strbag(bag):
|
||||
"""Return a string representing the contents of a bag."""
|
||||
# You may want to change this to produce a more user-friendly
|
||||
# representation such as "4x200+3x50+1x5+3x1=958".
|
||||
return str(bag)
|
||||
...
|
||||
|
||||
|
||||
def main():
|
||||
# A bag of coins is represented by a dict of {coin: number} items
|
||||
bag1 = {1: 4, 2: 0, 5:1, 10: 0, 20: 5, 50: 4, 100: 2, 200: 1}
|
||||
bag2 = {}
|
||||
|
||||
# Test the value function.
|
||||
assert value({}) == 0
|
||||
assert value({1:7, 5:2, 20:4, 100:1}) == 197
|
||||
|
||||
# Test the strbag function.
|
||||
print( strbag({1:7, 5:2, 20:4, 100:1}) ) # 1x100+4x20+2x5+7x1=197
|
||||
print( strbag({1:7, 5:2, 10:0, 20:4, 100:1}) ) # 1x100+4x20+2x5+7x1=197
|
||||
|
||||
print("bag1:", strbag(bag1)) # bag1: 1x200+2x100+4x50+5x20+1x5+4x1=709
|
||||
print("bag2:", strbag(bag2)) # bag2: =0
|
||||
|
||||
print(transfer1coin(bag1, 10, bag2)) # False!
|
||||
print("bag1:", strbag(bag1)) # bag1: 1x200+2x100+4x50+5x20+1x5+4x1=709
|
||||
print("bag2:", strbag(bag2)) # bag2: =0
|
||||
|
||||
print(transfer1coin(bag1, 20, bag2)) # True
|
||||
print("bag1:", strbag(bag1)) # bag1: 1x200+2x100+4x50+4x20+1x5+4x1=689
|
||||
print("bag2:", strbag(bag2)) # bag2: 1x20=20
|
||||
|
||||
print(transfer1coin(bag1, 20, bag2)) # True
|
||||
print("bag1:", strbag(bag1)) # bag1: 1x200+2x100+4x50+3x20+1x5+4x1=669
|
||||
print("bag2:", strbag(bag2)) # bag2: 2x20=40
|
||||
|
||||
print(transfer(bag1, 157, bag2)) # True (should be easy)
|
||||
print("bag1:", strbag(bag1)) # bag1: 1x200+1x100+3x50+3x20+2x1=512
|
||||
print("bag2:", strbag(bag2)) # bag2: 1x100+1x50+2x20+1x5+2x1=197
|
||||
|
||||
print(transfer(bag1, 60, bag2)) # not easy, but possible...
|
||||
print("bag1:", strbag(bag1))
|
||||
print("bag2:", strbag(bag2))
|
||||
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
# Read the file
|
||||
f = open(sys.argv[1], 'r')
|
||||
text = f.read()
|
||||
f.close()
|
||||
|
||||
# Count the letters
|
||||
letters = {}
|
||||
for c in text:
|
||||
if c.isalpha():
|
||||
c = c.lower()
|
||||
if c in letters:
|
||||
letters[c] += 1
|
||||
else:
|
||||
letters[c] = 1
|
||||
|
||||
# Print the results
|
||||
for c in sorted(letters.keys()):
|
||||
print(c, letters[c])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,220 @@
|
|||
CSCO 2020-10-01 39.1 39.31 38.57 38.8 20763541
|
||||
CSCO 2020-10-02 38.05 38.55 37.97 38.27 24492961
|
||||
CSCO 2020-10-05 38.48 38.79 38.28 38.57 26929054
|
||||
CSCO 2020-10-06 38.5 39.35 38.4 38.57 28430813
|
||||
CSCO 2020-10-07 38.98 39.58 38.78 39.4 20593711
|
||||
CSCO 2020-10-08 39.8 40.18 39.66 39.79 19031346
|
||||
CSCO 2020-10-09 40.15 40.23 39.72 39.85 16167474
|
||||
CSCO 2020-10-12 39.93 40.53 39.63 40.36 22757245
|
||||
CSCO 2020-10-13 40.54 40.61 39.71 39.81 23438266
|
||||
CSCO 2020-10-14 39.85 40.42 39.76 39.89 16444686
|
||||
CSCO 2020-10-15 39.47 40 39.35 39.97 15456971
|
||||
CSCO 2020-10-16 39.88 40.3 39.55 40.16 21295117
|
||||
CSCO 2020-10-19 40.15 40.38 39.16 39.3 19600466
|
||||
CSCO 2020-10-20 39.44 39.51 39.03 39.2 16564890
|
||||
CSCO 2020-10-21 39.31 39.57 38.98 39.06 17016266
|
||||
CSCO 2020-10-22 38.85 38.96 38.38 38.82 20399040
|
||||
CSCO 2020-10-23 38.93 38.97 38.65 38.82 15556084
|
||||
CSCO 2020-10-26 38.4 38.43 37.15 37.67 29146548
|
||||
CSCO 2020-10-27 37.38 37.5 36.59 36.87 37911471
|
||||
CSCO 2020-10-28 36.32 36.51 35.68 35.71 34561490
|
||||
CSCO 2020-10-29 35.51 36.07 35.28 35.69 35331966
|
||||
CSCO 2020-10-30 35.6 35.93 35.49 35.9 29159659
|
||||
NFLX 2020-10-01 506.03 529.55 503.6 527.51 8153710
|
||||
NFLX 2020-10-02 516.43 526.37 502.7 503.06 6071165
|
||||
NFLX 2020-10-05 506.8 520.99 501.7 520.65 4088069
|
||||
NFLX 2020-10-06 518.72 521.82 504.16 505.87 4199034
|
||||
NFLX 2020-10-07 518 536.49 515.82 534.66 7988683
|
||||
NFLX 2020-10-08 533.48 535 524.15 531.79 5386488
|
||||
NFLX 2020-10-09 537.83 544.28 535 539.44 4781259
|
||||
NFLX 2020-10-12 548.81 551.81 538.24 539.81 5391074
|
||||
NFLX 2020-10-13 540.56 557.65 537.2 554.09 5602498
|
||||
NFLX 2020-10-14 562.61 572.49 541 541.45 9510081
|
||||
NFLX 2020-10-15 545.52 551.22 535.1 541.94 5113126
|
||||
NFLX 2020-10-16 549.5 554.33 530.03 530.79 6347363
|
||||
NFLX 2020-10-19 537.07 541.8 525.38 530.72 7567506
|
||||
NFLX 2020-10-20 528.14 533.78 522.26 525.42 10047175
|
||||
NFLX 2020-10-21 501.03 506.85 488.25 489.05 17405708
|
||||
NFLX 2020-10-22 494.69 495.14 482 485.23 6997922
|
||||
NFLX 2020-10-23 488.11 490.06 481.35 488.28 4927862
|
||||
NFLX 2020-10-26 487.03 496.82 478.9 488.24 6186087
|
||||
NFLX 2020-10-27 490.01 490.49 482.93 488.93 3627175
|
||||
NFLX 2020-10-28 486.36 494 483.28 486.24 5992731
|
||||
NFLX 2020-10-29 488.5 513.9 479.34 504.21 11120689
|
||||
NFLX 2020-10-30 502.01 505.88 472.21 475.74 7813897
|
||||
INTC 2020-10-01 52.4 52.72 51.99 52.24 22127580
|
||||
INTC 2020-10-02 51.5 51.98 50.99 51.01 25811766
|
||||
INTC 2020-10-05 51.3 51.81 51.27 51.69 20883245
|
||||
INTC 2020-10-06 51.71 52.7 51.23 51.37 25642790
|
||||
INTC 2020-10-07 51.85 52.9 51.79 52.67 21978673
|
||||
INTC 2020-10-08 52.91 53.58 52.67 53.37 22369537
|
||||
INTC 2020-10-09 53.55 53.85 52.67 52.82 24343898
|
||||
INTC 2020-10-12 53.55 54.2 53.21 53.88 27303474
|
||||
INTC 2020-10-13 54.27 54.29 53.62 53.83 20005769
|
||||
INTC 2020-10-14 54.01 54.4 53.51 53.55 21885105
|
||||
INTC 2020-10-15 52.75 53.98 52.62 53.85 18272865
|
||||
INTC 2020-10-16 53.9 54.7 53.9 54.16 23421388
|
||||
INTC 2020-10-19 54.47 56.23 53.84 54.58 43537219
|
||||
INTC 2020-10-20 54.6 54.7 53.27 53.43 27224899
|
||||
INTC 2020-10-21 53.14 54.07 52.82 53.5 21866025
|
||||
INTC 2020-10-22 53.12 54.22 53.07 53.9 41522739
|
||||
INTC 2020-10-23 48.35 48.67 47.66 48.2 97322490
|
||||
INTC 2020-10-26 47.85 47.86 46.25 46.72 54161291
|
||||
INTC 2020-10-27 45.98 46.41 45.36 45.64 50130518
|
||||
INTC 2020-10-28 44.89 45.29 44.2 44.25 45066011
|
||||
INTC 2020-10-29 44.24 44.47 43.92 44.11 36796801
|
||||
INTC 2020-10-30 44.1 44.8 43.61 44.28 46794171
|
||||
QCOM 2020-10-01 119.93 120.21 117.7 119.52 5316766
|
||||
QCOM 2020-10-02 116.78 118.66 115.43 115.47 5834337
|
||||
QCOM 2020-10-05 116.9 120.65 116.73 120.52 5835936
|
||||
QCOM 2020-10-06 120.45 122.52 119.1 119.54 7636963
|
||||
QCOM 2020-10-07 121.24 123.36 120.65 123.03 7410347
|
||||
QCOM 2020-10-08 124 124.43 121.84 122.34 4757536
|
||||
QCOM 2020-10-09 123.93 125.89 122.79 124.87 11073412
|
||||
QCOM 2020-10-12 127.7 127.7 124.95 126.69 7893835
|
||||
QCOM 2020-10-13 127.47 128.18 125.4 127.46 7605706
|
||||
QCOM 2020-10-14 129.08 132.42 128.93 129.88 13183613
|
||||
QCOM 2020-10-15 127.3 129.14 126.65 128.58 7377948
|
||||
QCOM 2020-10-16 129.7 130.19 127.74 129.03 6626992
|
||||
QCOM 2020-10-19 130.13 131.96 127.7 128.42 5765840
|
||||
QCOM 2020-10-20 129.18 129.33 127.51 128.3 4413343
|
||||
QCOM 2020-10-21 128.04 130.42 126.37 128.55 4343992
|
||||
QCOM 2020-10-22 129.51 129.59 126.86 128.38 3897002
|
||||
QCOM 2020-10-23 128.59 129.1 127.1 128.88 3943056
|
||||
QCOM 2020-10-26 127.53 128.67 124.4 126.2 6065923
|
||||
QCOM 2020-10-27 126.51 126.96 125.19 125.91 5825518
|
||||
QCOM 2020-10-28 123.5 123.82 121.05 121.58 8234821
|
||||
QCOM 2020-10-29 122.06 127.69 121.89 126.44 7053259
|
||||
QCOM 2020-10-30 123.68 125.25 121.6 123.36 7814462
|
||||
EA 2020-10-01 132.07 134.06 131.46 132.78 1868992
|
||||
EA 2020-10-02 131.37 132.24 127.71 129.07 1751296
|
||||
EA 2020-10-05 130.09 132.95 129.07 130.72 1270110
|
||||
EA 2020-10-06 130.36 130.4 124.52 124.84 3753713
|
||||
EA 2020-10-07 126.41 126.5 123.97 125.01 3257483
|
||||
EA 2020-10-08 126.1 126.38 124.42 125.99 1959558
|
||||
EA 2020-10-09 126.86 128.44 125.92 127.45 1991745
|
||||
EA 2020-10-12 128.98 132.07 127.83 130.88 2106617
|
||||
EA 2020-10-13 131.87 133.54 130.16 132.94 2117365
|
||||
EA 2020-10-14 133.79 133.86 131.74 132.75 2520501
|
||||
EA 2020-10-15 131.07 132.41 129.88 131.34 1903434
|
||||
EA 2020-10-16 132.5 133.26 131.05 131.92 1925033
|
||||
EA 2020-10-19 133.14 133.89 129.51 129.87 1454331
|
||||
EA 2020-10-20 130.42 130.6 127.09 127.36 2249230
|
||||
EA 2020-10-21 127.98 129.45 127.3 127.65 2200937
|
||||
EA 2020-10-22 127.78 128.01 125.4 126.92 1792367
|
||||
EA 2020-10-23 127.24 127.65 125.53 126.77 1215209
|
||||
EA 2020-10-26 126.41 127.5 125.03 126.68 2166019
|
||||
EA 2020-10-27 127.36 127.58 126.1 126.62 1452780
|
||||
EA 2020-10-28 125.62 127.07 124.81 125.6 2079571
|
||||
EA 2020-10-29 125.79 126.17 122.77 123.9 2633669
|
||||
EA 2020-10-30 122.99 124.09 118.52 119.83 3313123
|
||||
PTI 2020-10-01 1.08 1.12 1.08 1.1 205885
|
||||
PTI 2020-10-02 1.08 1.13 1.05 1.07 291697
|
||||
PTI 2020-10-05 1.07 1.14 1.07 1.12 516326
|
||||
PTI 2020-10-06 1.12 1.17 1.09 1.09 377764
|
||||
PTI 2020-10-07 1.11 1.18 1.1 1.17 410158
|
||||
PTI 2020-10-08 1.18 1.2 1.15 1.17 211728
|
||||
PTI 2020-10-09 1.16 1.19 1.15 1.15 105444
|
||||
PTI 2020-10-12 1.15 1.18 1.12 1.14 209001
|
||||
PTI 2020-10-13 1.14 1.2 1.14 1.19 208808
|
||||
PTI 2020-10-14 1.18 1.35 1.15 1.17 2017692
|
||||
PTI 2020-10-15 1.16 1.23 1.11 1.19 408194
|
||||
PTI 2020-10-16 1.2 1.25 1.16 1.23 378098
|
||||
PTI 2020-10-19 1.24 1.25 1.16 1.17 320322
|
||||
PTI 2020-10-20 1.19 1.19 1.14 1.17 244802
|
||||
PTI 2020-10-21 1.17 1.17 1.12 1.13 181417
|
||||
PTI 2020-10-22 1.14 1.15 1.1 1.12 165814
|
||||
PTI 2020-10-23 1.14 1.14 1.1 1.11 134945
|
||||
PTI 2020-10-26 1.12 1.14 1.05 1.08 373833
|
||||
PTI 2020-10-27 1.11 1.11 1.05 1.06 253591
|
||||
PTI 2020-10-28 1.06 1.06 0.98 1.02 631401
|
||||
PTI 2020-10-29 1.01 1.05 1 1.01 305993
|
||||
PTI 2020-10-30 1.01 1.02 0.94 0.98 325320
|
||||
TSLA 2020-10-01 440.76 448.88 434.42 448.16 50741454
|
||||
TSLA 2020-10-02 421.39 439.13 415 415.09 71430025
|
||||
TSLA 2020-10-05 423.35 433.64 419.33 425.68 44722786
|
||||
TSLA 2020-10-06 423.79 428.78 406.05 413.98 49146259
|
||||
TSLA 2020-10-07 419.87 429.9 413.85 425.3 43127709
|
||||
TSLA 2020-10-08 438.44 439 425.3 425.92 40421116
|
||||
TSLA 2020-10-09 430.13 434.59 426.46 434 28925656
|
||||
TSLA 2020-10-12 442 448.74 438.58 442.3 38791133
|
||||
TSLA 2020-10-13 443.35 448.89 436.6 446.65 34463665
|
||||
TSLA 2020-10-14 449.78 465.9 447.35 461.3 48045394
|
||||
TSLA 2020-10-15 450.31 456.57 442.5 448.88 35672354
|
||||
TSLA 2020-10-16 454.44 455.95 438.85 439.67 32775879
|
||||
TSLA 2020-10-19 446.24 447 428.87 430.83 36287843
|
||||
TSLA 2020-10-20 431.75 431.75 419.05 421.94 31656289
|
||||
TSLA 2020-10-21 422.7 432.95 421.25 422.64 32370461
|
||||
TSLA 2020-10-22 441.92 445.23 424.51 425.79 39993191
|
||||
TSLA 2020-10-23 421.84 422.89 407.38 420.63 33716980
|
||||
TSLA 2020-10-26 411.63 425.76 410 420.28 28239161
|
||||
TSLA 2020-10-27 423.76 430.5 420.1 424.68 22686506
|
||||
TSLA 2020-10-28 416.48 418.6 406 406.02 25451409
|
||||
TSLA 2020-10-29 409.96 418.06 406.46 410.83 22655308
|
||||
TSLA 2020-10-30 406.9 407.59 379.11 388.04 42587639
|
||||
VOD 2020-10-01 13.27 13.32 13.14 13.25 3591182
|
||||
VOD 2020-10-02 13.16 13.52 13.15 13.46 2979065
|
||||
VOD 2020-10-05 14.04 14.2 13.95 14.19 6282375
|
||||
VOD 2020-10-06 14.49 14.51 14.2 14.23 4309491
|
||||
VOD 2020-10-07 14.3 14.36 14.12 14.22 2174561
|
||||
VOD 2020-10-08 14.51 14.63 14.44 14.57 3034816
|
||||
VOD 2020-10-09 14.6 14.68 14.44 14.63 2258206
|
||||
VOD 2020-10-12 14.73 14.83 14.66 14.77 2212874
|
||||
VOD 2020-10-13 14.67 14.69 14.55 14.6 2635563
|
||||
VOD 2020-10-14 14.43 14.5 14.33 14.37 1908486
|
||||
VOD 2020-10-15 14.15 14.33 14.12 14.32 3918735
|
||||
VOD 2020-10-16 14.11 14.34 14.1 14.28 4334682
|
||||
VOD 2020-10-19 14.35 14.42 14.19 14.21 4436631
|
||||
VOD 2020-10-20 14.41 14.59 14.39 14.46 3056450
|
||||
VOD 2020-10-21 14.13 14.42 14.04 14.33 8730294
|
||||
VOD 2020-10-22 14.25 14.58 14.25 14.55 6935782
|
||||
VOD 2020-10-23 14.8 14.93 14.72 14.84 6919188
|
||||
VOD 2020-10-26 14.62 14.62 14.41 14.52 4442371
|
||||
VOD 2020-10-27 14.2 14.25 13.91 13.98 4558518
|
||||
VOD 2020-10-28 13.45 13.56 13.28 13.43 6759000
|
||||
VOD 2020-10-29 13.29 13.64 13.2 13.55 5912464
|
||||
VOD 2020-10-30 13.49 13.53 13.33 13.51 3372568
|
||||
ERIC 2020-10-01 10.77 10.8 10.64 10.72 6537212
|
||||
ERIC 2020-10-02 10.52 10.66 10.5 10.61 5451639
|
||||
ERIC 2020-10-05 10.76 10.79 10.7 10.77 4362498
|
||||
ERIC 2020-10-06 10.84 10.86 10.62 10.67 4972198
|
||||
ERIC 2020-10-07 10.66 10.7 10.61 10.65 5990623
|
||||
ERIC 2020-10-08 10.8 10.8 10.71 10.79 5180376
|
||||
ERIC 2020-10-09 10.89 10.93 10.84 10.87 4633664
|
||||
ERIC 2020-10-12 10.91 10.93 10.82 10.86 7169230
|
||||
ERIC 2020-10-13 10.85 10.87 10.7 10.73 8288522
|
||||
ERIC 2020-10-14 10.75 10.84 10.73 10.82 7771599
|
||||
ERIC 2020-10-15 10.54 10.8 10.53 10.8 13022498
|
||||
ERIC 2020-10-16 10.74 10.81 10.7 10.7 9317609
|
||||
ERIC 2020-10-19 11.02 11.13 10.9 10.94 12575083
|
||||
ERIC 2020-10-20 11.13 11.33 11.1 11.13 15019952
|
||||
ERIC 2020-10-21 12.07 12.48 12.05 12.44 24980230
|
||||
ERIC 2020-10-22 12.49 12.52 12.22 12.44 11322692
|
||||
ERIC 2020-10-23 12.26 12.42 12.24 12.36 7844003
|
||||
ERIC 2020-10-26 12.33 12.38 11.97 12.08 7164321
|
||||
ERIC 2020-10-27 11.92 12.04 11.77 11.78 15622624
|
||||
ERIC 2020-10-28 11.39 11.46 11.32 11.38 7895540
|
||||
ERIC 2020-10-29 11.35 11.41 11.26 11.33 8549142
|
||||
ERIC 2020-10-30 11.24 11.3 11.12 11.21 4374440
|
||||
AMZN 2020-10-01 3208 3224 3172 3221.26 4971922
|
||||
AMZN 2020-10-02 3153.63 3195.8 3123 3125 5613098
|
||||
AMZN 2020-10-05 3145.84 3202.53 3140.85 3199.2 3775332
|
||||
AMZN 2020-10-06 3165 3182 3090 3099.96 5086857
|
||||
AMZN 2020-10-07 3135 3200 3132.39 3195.69 4309439
|
||||
AMZN 2020-10-08 3224.99 3233.29 3174.99 3190.55 3174114
|
||||
AMZN 2020-10-09 3210 3288.99 3197.83 3286.65 4907871
|
||||
AMZN 2020-10-12 3349.94 3496.24 3339.55 3442.93 8364198
|
||||
AMZN 2020-10-13 3467.99 3492.38 3424.22 3443.63 5744697
|
||||
AMZN 2020-10-14 3447 3464.88 3340 3363.71 5828916
|
||||
AMZN 2020-10-15 3292.01 3355.88 3280 3338.65 5223448
|
||||
AMZN 2020-10-16 3363.23 3399.66 3160 3272.71 6474353
|
||||
AMZN 2020-10-19 3299.61 3329 3192.74 3207.21 5223626
|
||||
AMZN 2020-10-20 3222.28 3266 3192.01 3217.01 4509678
|
||||
AMZN 2020-10-21 3212.5 3233.88 3160 3184.94 4592736
|
||||
AMZN 2020-10-22 3189.87 3198.75 3121.94 3176.4 4212005
|
||||
AMZN 2020-10-23 3191 3205.33 3140 3204.4 3466687
|
||||
AMZN 2020-10-26 3198.74 3282.98 3153.3 3207.04 5901151
|
||||
AMZN 2020-10-27 3224.94 3291.66 3211.3 3286.33 4291047
|
||||
AMZN 2020-10-28 3249.3 3264.02 3162.47 3162.78 5588330
|
||||
AMZN 2020-10-29 3201.27 3257.25 3164 3211.01 6596529
|
||||
AMZN 2020-10-30 3157.75 3167 3019 3036.15 8396081
|
|
|
@ -0,0 +1,61 @@
|
|||
|
||||
# Constantes para indexar os tuplos:
|
||||
NAME,DATE,OPEN,MAX,MIN,CLOSE,VOLUME = 0,1,2,3,4,5,6
|
||||
|
||||
def main():
|
||||
lst = loadStockFile("nasdaq.csv")
|
||||
# Show just first and last tuples:
|
||||
print("first:", lst[1])
|
||||
print("last:", lst[-1])
|
||||
|
||||
print("a) totVol=", totalVolume(lst))
|
||||
|
||||
print("b) maxVal=", maxValorization(lst))
|
||||
|
||||
stocksDic = stocksByDateByName(lst)
|
||||
print("c) CSCO@11:", stocksDic['2020-10-12']['CSCO'])
|
||||
print("c) AMZN@22:", stocksDic['2020-10-22']['AMZN'])
|
||||
|
||||
port = {'NFLX': 100, 'CSCO': 80}
|
||||
print("d) portfolio@01:", portfolioValue(stocksDic, port, "2020-10-01"))
|
||||
print("d) portfolio@30:", portfolioValue(stocksDic, port, "2020-10-30"))
|
||||
|
||||
def loadStockFile(filename):
|
||||
lst = []
|
||||
with open(filename) as f:
|
||||
for line in f:
|
||||
parts = line.strip().split('\t')
|
||||
name = parts[NAME]
|
||||
date = parts[DATE]
|
||||
tup = (name, date, float(parts[OPEN]), float(parts[MAX]),
|
||||
float(parts[MIN]), float(parts[CLOSE]), int(parts[VOLUME]))
|
||||
lst.append(tup)
|
||||
return lst
|
||||
|
||||
def totalVolume(lst):
|
||||
totVol = {}
|
||||
# Complete ...
|
||||
|
||||
return totVol
|
||||
|
||||
def maxValorization(lst):
|
||||
vMax = {}
|
||||
# Complete ...
|
||||
|
||||
return vMax
|
||||
|
||||
def stocksByDateByName(lst):
|
||||
dic = {}
|
||||
# Complete ...
|
||||
|
||||
return dic
|
||||
|
||||
def portfolioValue(stocks, portfolio, date):
|
||||
assert date in stocks
|
||||
val = 0.0
|
||||
# Complete ...
|
||||
|
||||
return val
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,89 @@
|
|||
# Complete este programa como pedido no guião da aula.
|
||||
|
||||
def listContacts(dic):
|
||||
"""Print the contents of the dictionary as a table, one item per row."""
|
||||
print("{:>12s} : {:^35s} : {:<12s}".format("Numero", "Nome", "Morada"))
|
||||
for num in dic:
|
||||
print("{:>12s} : {:^35s} : {:<12s}".format(num, dic[num][0], dic[num][1]))
|
||||
|
||||
|
||||
def addContact(dic):
|
||||
name = input("Nome: ")
|
||||
number = input("Número: ")
|
||||
address = input("Morada: ")
|
||||
dic[number] = (name, address)
|
||||
|
||||
|
||||
def removeContact(dic):
|
||||
number = input("Número: ")
|
||||
del dic[number]
|
||||
|
||||
|
||||
def searchContact(dic):
|
||||
number = input("Número: ")
|
||||
print(f"""Nome: {dic[number][0] if number in dic else number}
|
||||
Morada: {dic[number][1] if number in dic else '----'}""")
|
||||
|
||||
|
||||
def filterPartName(contacts, partName):
|
||||
"""Returns a new dict with the contacts whose names contain partName."""
|
||||
newDict = {}
|
||||
for num in contacts:
|
||||
if partName in contacts[num]:
|
||||
newDict[num] = contacts[num]
|
||||
return newDict
|
||||
|
||||
|
||||
def menu():
|
||||
"""Shows the menu and gets user option."""
|
||||
print()
|
||||
print("(L)istar contactos")
|
||||
print("(A)dicionar contacto")
|
||||
print("(R)emover contacto")
|
||||
print("Procurar (N)úmero")
|
||||
print("Procurar (P)arte do nome")
|
||||
print("(T)erminar")
|
||||
op = input("opção? ").upper() # converts to uppercase...
|
||||
return op
|
||||
|
||||
|
||||
def main():
|
||||
"""This is the main function containing the main loop."""
|
||||
|
||||
# The list of contacts (it's actually a dictionary!):
|
||||
contactos = {"234370200": ("Universidade de Aveiro", "Campus de Santiago"),
|
||||
"727392822": ("Cristiano Aveiro", "Casa"),
|
||||
"387719992": ("Maria Matos", "Rua da Matos, 123"),
|
||||
"887555987": ("Marta Maia", "Rua da Maia, 123"),
|
||||
"876111333": ("Carlos Martins", "Rua dos Martins, 123"),
|
||||
"433162999": ("Ana Bacalhau", "Rua do Bacalhau, 123"),
|
||||
}
|
||||
|
||||
op = ""
|
||||
while op != "T":
|
||||
op = menu()
|
||||
if op == "T":
|
||||
print("Fim")
|
||||
elif op == "L":
|
||||
print("Contactos:")
|
||||
listContacts(contactos)
|
||||
elif op == "A":
|
||||
print("Novo contacto:")
|
||||
addContact(contactos)
|
||||
elif op == "R":
|
||||
print("Remover contacto:")
|
||||
removeContact(contactos)
|
||||
elif op == "N":
|
||||
print("Procurar número:")
|
||||
searchContact(contactos)
|
||||
elif op == "P":
|
||||
print("Procurar parte do nome:")
|
||||
partName = input("Parte do nome: ")
|
||||
newDict = filterPartName(contactos, partName)
|
||||
listContacts(newDict)
|
||||
else:
|
||||
print("Não implementado!")
|
||||
|
||||
|
||||
# O programa começa aqui
|
||||
main()
|
|
@ -0,0 +1,22 @@
|
|||
# Ex01
|
||||
|
||||
### A próxima linha a ser executada é:
|
||||
|
||||
```python
|
||||
# Primeiras 5 vezes:
|
||||
value = input("Enter value: ")
|
||||
|
||||
# Última vez (quando aparecer 0 em Key:
|
||||
print(data[3])
|
||||
```
|
||||
<div style="text-align: center">
|
||||
|
||||
| Key | Value | Size | Output |
|
||||
|-----|-------|------|--------|
|
||||
| 3 | A | 1 | |
|
||||
| 12 | X | 2 | |
|
||||
| 9 | X | 3 | |
|
||||
| 3 | Y | 3 | |
|
||||
| 7 | Q | 4 | |
|
||||
| 0 | | | Y |
|
||||
</div>
|
|
@ -0,0 +1,18 @@
|
|||
# The periodic table of elements.
|
||||
periodicTable = {
|
||||
"H": "Hydrogen", "C": "Carbon", "O": "Oxygen",
|
||||
"Fe": "Iron", "Au": "Gold", "Na": "Sodium",
|
||||
"Ag": "Silver", "Pb": "Lead", "Pu": "Plutonimum"
|
||||
}
|
||||
|
||||
# Use the prompt "Enter symbol (or Q to quit): "
|
||||
# Print either "Invalid symbol." if an error occurs
|
||||
# or "element = element name" ("%s = %s")
|
||||
|
||||
element = input("Enter symbol (or Q to quit): ")
|
||||
while element != "Q":
|
||||
try:
|
||||
print(element, "=", periodicTable[element])
|
||||
except KeyError:
|
||||
print("Invalid symbol.")
|
||||
element = input("Enter symbol (or Q to quit): ")
|
Binary file not shown.
Loading…
Reference in New Issue