Extra2 added (Ex1 only)
This commit is contained in:
parent
baf21db117
commit
5e23c94c71
|
@ -0,0 +1,117 @@
|
|||
15/08/14,Porto,Maritimo,2,0
|
||||
16/08/14,Academica,Sp Lisbon,1,1
|
||||
16/08/14,Gil Vicente,Guimaraes,1,3
|
||||
17/08/14,Benfica,Pacos Ferreira,2,0
|
||||
17/08/14,Nacional,Moreirense,0,1
|
||||
17/08/14,Penafiel,Belenenses,1,3
|
||||
17/08/14,Rio Ave,Setubal,2,0
|
||||
17/08/14,Sp Braga,Boavista,3,0
|
||||
18/08/14,Arouca,Estoril,1,1
|
||||
22/08/14,Guimaraes,Penafiel,3,0
|
||||
23/08/14,Maritimo,Academica,2,1
|
||||
23/08/14,Pacos Ferreira,Porto,0,1
|
||||
23/08/14,Sp Lisbon,Arouca,1,0
|
||||
24/08/14,Belenenses,Nacional,3,1
|
||||
24/08/14,Boavista,Benfica,0,1
|
||||
24/08/14,Estoril,Rio Ave,1,5
|
||||
24/08/14,Setubal,Gil Vicente,2,0
|
||||
25/08/14,Moreirense,Sp Braga,0,0
|
||||
29/08/14,Academica,Setubal,1,1
|
||||
30/08/14,Belenenses,Guimaraes,0,3
|
||||
30/08/14,Sp Braga,Estoril,2,1
|
||||
31/08/14,Benfica,Sp Lisbon,1,1
|
||||
31/08/14,Gil Vicente,Maritimo,1,2
|
||||
31/08/14,Nacional,Arouca,2,0
|
||||
31/08/14,Penafiel,Pacos Ferreira,0,1
|
||||
31/08/14,Porto,Moreirense,3,0
|
||||
01/09/14,Rio Ave,Boavista,4,0
|
||||
12/09/14,Setubal,Benfica,0,5
|
||||
13/09/14,Arouca,Sp Braga,1,0
|
||||
13/09/14,Moreirense,Rio Ave,1,1
|
||||
13/09/14,Sp Lisbon,Belenenses,1,1
|
||||
14/09/14,Boavista,Academica,1,0
|
||||
14/09/14,Estoril,Nacional,2,1
|
||||
14/09/14,Guimaraes,Porto,1,1
|
||||
14/09/14,Maritimo,Penafiel,2,0
|
||||
14/09/14,Pacos Ferreira,Gil Vicente,1,1
|
||||
19/09/14,Guimaraes,Pacos Ferreira,1,1
|
||||
20/09/14,Nacional,Sp Braga,1,1
|
||||
20/09/14,Penafiel,Setubal,2,0
|
||||
21/09/14,Belenenses,Maritimo,1,0
|
||||
21/09/14,Benfica,Moreirense,3,1
|
||||
21/09/14,Gil Vicente,Sp Lisbon,0,4
|
||||
21/09/14,Porto,Boavista,0,0
|
||||
21/09/14,Rio Ave,Arouca,1,2
|
||||
22/09/14,Academica,Estoril,2,2
|
||||
26/09/14,Sp Lisbon,Porto,1,1
|
||||
27/09/14,Estoril,Benfica,2,3
|
||||
27/09/14,Sp Braga,Rio Ave,3,0
|
||||
28/09/14,Arouca,Academica,0,1
|
||||
28/09/14,Boavista,Gil Vicente,3,2
|
||||
28/09/14,Maritimo,Guimaraes,4,0
|
||||
28/09/14,Moreirense,Penafiel,0,0
|
||||
28/09/14,Setubal,Nacional,2,0
|
||||
29/09/14,Pacos Ferreira,Belenenses,2,0
|
||||
03/10/14,Guimaraes,Boavista,3,0
|
||||
04/10/14,Penafiel,Sp Lisbon,0,4
|
||||
05/10/14,Academica,Moreirense,0,0
|
||||
05/10/14,Belenenses,Setubal,1,1
|
||||
05/10/14,Benfica,Arouca,4,0
|
||||
05/10/14,Gil Vicente,Estoril,1,1
|
||||
05/10/14,Nacional,Rio Ave,0,0
|
||||
05/10/14,Pacos Ferreira,Maritimo,3,2
|
||||
05/10/14,Porto,Sp Braga,2,1
|
||||
24/10/14,Setubal,Guimaraes,0,1
|
||||
25/10/14,Arouca,Porto,0,5
|
||||
25/10/14,Boavista,Pacos Ferreira,1,2
|
||||
25/10/14,Moreirense,Gil Vicente,2,0
|
||||
26/10/14,Estoril,Belenenses,1,2
|
||||
26/10/14,Nacional,Academica,1,0
|
||||
26/10/14,Sp Braga,Benfica,2,1
|
||||
26/10/14,Sp Lisbon,Maritimo,4,2
|
||||
27/10/14,Rio Ave,Penafiel,3,2
|
||||
31/10/14,Benfica,Rio Ave,1,0
|
||||
01/11/14,Guimaraes,Sp Lisbon,3,0
|
||||
01/11/14,Penafiel,Estoril,1,2
|
||||
01/11/14,Porto,Nacional,2,0
|
||||
02/11/14,Academica,Sp Braga,1,1
|
||||
02/11/14,Gil Vicente,Arouca,1,1
|
||||
02/11/14,Maritimo,Moreirense,1,2
|
||||
02/11/14,Pacos Ferreira,Setubal,4,1
|
||||
03/11/14,Belenenses,Boavista,3,1
|
||||
07/11/14,Arouca,Guimaraes,1,2
|
||||
08/11/14,Sp Braga,Gil Vicente,2,0
|
||||
09/11/14,Boavista,Penafiel,1,0
|
||||
09/11/14,Estoril,Porto,2,2
|
||||
09/11/14,Moreirense,Belenenses,0,1
|
||||
09/11/14,Nacional,Benfica,1,2
|
||||
09/11/14,Setubal,Maritimo,1,0
|
||||
09/11/14,Sp Lisbon,Pacos Ferreira,1,1
|
||||
10/11/14,Rio Ave,Academica,3,0
|
||||
28/11/14,Guimaraes,Moreirense,2,1
|
||||
29/11/14,Belenenses,Arouca,0,0
|
||||
29/11/14,Penafiel,Sp Braga,1,6
|
||||
29/11/14,Sp Lisbon,Setubal,3,0
|
||||
30/11/14,Academica,Benfica,0,2
|
||||
30/11/14,Gil Vicente,Nacional,0,0
|
||||
30/11/14,Maritimo,Boavista,4,0
|
||||
30/11/14,Porto,Rio Ave,5,0
|
||||
01/12/14,Pacos Ferreira,Estoril,1,1
|
||||
05/12/14,Boavista,Sp Lisbon,1,3
|
||||
06/12/14,Academica,Porto,0,3
|
||||
06/12/14,Benfica,Belenenses,3,0
|
||||
06/12/14,Estoril,Setubal,1,0
|
||||
06/12/14,Rio Ave,Gil Vicente,0,0
|
||||
07/12/14,Arouca,Penafiel,0,1
|
||||
07/12/14,Moreirense,Pacos Ferreira,2,0
|
||||
07/12/14,Sp Braga,Guimaraes,0,0
|
||||
08/12/14,Nacional,Maritimo,3,0
|
||||
12/12/14,Setubal,Boavista,0,1
|
||||
13/12/14,Belenenses,Sp Braga,0,1
|
||||
13/12/14,Gil Vicente,Academica,1,1
|
||||
13/12/14,Pacos Ferreira,Arouca,2,1
|
||||
13/12/14,Penafiel,Nacional,2,1
|
||||
14/12/14,Guimaraes,Rio Ave,0,0
|
||||
14/12/14,Maritimo,Estoril,0,0
|
||||
14/12/14,Porto,Benfica,0,2
|
||||
14/12/14,Sp Lisbon,Moreirense,1,1
|
|
|
@ -0,0 +1,117 @@
|
|||
1,Academica,Sp Lisbon
|
||||
1,Arouca,Estoril
|
||||
1,Benfica,Pacos Ferreira
|
||||
1,Gil Vicente,Guimaraes
|
||||
1,Nacional,Moreirense
|
||||
1,Penafiel,Belenenses
|
||||
1,Porto,Maritimo
|
||||
1,Rio Ave,Setubal
|
||||
1,Sp Braga,Boavista
|
||||
2,Belenenses,Nacional
|
||||
2,Boavista,Benfica
|
||||
2,Estoril,Rio Ave
|
||||
2,Guimaraes,Penafiel
|
||||
2,Maritimo,Academica
|
||||
2,Moreirense,Sp Braga
|
||||
2,Pacos Ferreira,Porto
|
||||
2,Setubal,Gil Vicente
|
||||
2,Sp Lisbon,Arouca
|
||||
3,Academica,Setubal
|
||||
3,Belenenses,Guimaraes
|
||||
3,Benfica,Sp Lisbon
|
||||
3,Gil Vicente,Maritimo
|
||||
3,Nacional,Arouca
|
||||
3,Penafiel,Pacos Ferreira
|
||||
3,Porto,Moreirense
|
||||
3,Rio Ave,Boavista
|
||||
3,Sp Braga,Estoril
|
||||
4,Arouca,Sp Braga
|
||||
4,Boavista,Academica
|
||||
4,Estoril,Nacional
|
||||
4,Guimaraes,Porto
|
||||
4,Maritimo,Penafiel
|
||||
4,Moreirense,Rio Ave
|
||||
4,Pacos Ferreira,Gil Vicente
|
||||
4,Setubal,Benfica
|
||||
4,Sp Lisbon,Belenenses
|
||||
5,Academica,Estoril
|
||||
5,Belenenses,Maritimo
|
||||
5,Benfica,Moreirense
|
||||
5,Gil Vicente,Sp Lisbon
|
||||
5,Guimaraes,Pacos Ferreira
|
||||
5,Nacional,Sp Braga
|
||||
5,Penafiel,Setubal
|
||||
5,Porto,Boavista
|
||||
5,Rio Ave,Arouca
|
||||
6,Arouca,Academica
|
||||
6,Boavista,Gil Vicente
|
||||
6,Estoril,Benfica
|
||||
6,Maritimo,Guimaraes
|
||||
6,Moreirense,Penafiel
|
||||
6,Pacos Ferreira,Belenenses
|
||||
6,Setubal,Nacional
|
||||
6,Sp Braga,Rio Ave
|
||||
6,Sp Lisbon,Porto
|
||||
7,Academica,Moreirense
|
||||
7,Belenenses,Setubal
|
||||
7,Benfica,Arouca
|
||||
7,Gil Vicente,Estoril
|
||||
7,Guimaraes,Boavista
|
||||
7,Nacional,Rio Ave
|
||||
7,Pacos Ferreira,Maritimo
|
||||
7,Penafiel,Sp Lisbon
|
||||
7,Porto,Sp Braga
|
||||
8,Arouca,Porto
|
||||
8,Boavista,Pacos Ferreira
|
||||
8,Estoril,Belenenses
|
||||
8,Moreirense,Gil Vicente
|
||||
8,Nacional,Academica
|
||||
8,Rio Ave,Penafiel
|
||||
8,Setubal,Guimaraes
|
||||
8,Sp Braga,Benfica
|
||||
8,Sp Lisbon,Maritimo
|
||||
9,Academica,Sp Braga
|
||||
9,Belenenses,Boavista
|
||||
9,Benfica,Rio Ave
|
||||
9,Gil Vicente,Arouca
|
||||
9,Guimaraes,Sp Lisbon
|
||||
9,Maritimo,Moreirense
|
||||
9,Pacos Ferreira,Setubal
|
||||
9,Penafiel,Estoril
|
||||
9,Porto,Nacional
|
||||
10,Arouca,Guimaraes
|
||||
10,Boavista,Penafiel
|
||||
10,Estoril,Porto
|
||||
10,Moreirense,Belenenses
|
||||
10,Nacional,Benfica
|
||||
10,Rio Ave,Academica
|
||||
10,Setubal,Maritimo
|
||||
10,Sp Braga,Gil Vicente
|
||||
10,Sp Lisbon,Pacos Ferreira
|
||||
11,Academica,Benfica
|
||||
11,Belenenses,Arouca
|
||||
11,Gil Vicente,Nacional
|
||||
11,Guimaraes,Moreirense
|
||||
11,Maritimo,Boavista
|
||||
11,Pacos Ferreira,Estoril
|
||||
11,Penafiel,Sp Braga
|
||||
11,Porto,Rio Ave
|
||||
11,Sp Lisbon,Setubal
|
||||
12,Academica,Porto
|
||||
12,Arouca,Penafiel
|
||||
12,Benfica,Belenenses
|
||||
12,Boavista,Sp Lisbon
|
||||
12,Estoril,Setubal
|
||||
12,Moreirense,Pacos Ferreira
|
||||
12,Nacional,Maritimo
|
||||
12,Rio Ave,Gil Vicente
|
||||
12,Sp Braga,Guimaraes
|
||||
13,Belenenses,Sp Braga
|
||||
13,Gil Vicente,Academica
|
||||
13,Guimaraes,Rio Ave
|
||||
13,Maritimo,Estoril
|
||||
13,Pacos Ferreira,Arouca
|
||||
13,Penafiel,Nacional
|
||||
13,Porto,Benfica
|
||||
13,Setubal,Boavista
|
||||
13,Sp Lisbon,Moreirense
|
|
|
@ -0,0 +1,100 @@
|
|||
960373347 +31765214531 60
|
||||
960373347 960703223 90
|
||||
930930597 919021596 360
|
||||
960373347 +81728423983 30
|
||||
939999868 271055066 234
|
||||
930930597 960703223 603
|
||||
934863725 962402153 518
|
||||
930930597 967705618 163
|
||||
914293467 934877413 537
|
||||
934863725 938078294 532
|
||||
961393096 919021596 129
|
||||
963970864 228628637 162
|
||||
930930597 939460329 458
|
||||
934863725 939747620 445
|
||||
934863725 934192590 427
|
||||
914293467 932935286 580
|
||||
960373347 271055066 330
|
||||
919274650 939460329 37
|
||||
961393096 237395357 318
|
||||
919274650 934877413 470
|
||||
963970864 934877413 245
|
||||
962613058 939460329 106
|
||||
939999868 916747594 401
|
||||
914293467 +351234872325 52
|
||||
913862602 934877413 130
|
||||
914293467 +351234872325 26
|
||||
939999868 932506907 570
|
||||
939999868 228628637 460
|
||||
960373347 919530258 263
|
||||
939999868 960703223 470
|
||||
914293467 932106163 525
|
||||
961393096 938078294 418
|
||||
913862602 916747594 152
|
||||
963970864 914917941 302
|
||||
939999868 963865883 422
|
||||
963970864 +31765214531 437
|
||||
919274650 231233053 269
|
||||
914293467 934877413 188
|
||||
963970864 228628637 415
|
||||
934863725 231233053 501
|
||||
913862602 913297593 221
|
||||
963970864 910898341 36
|
||||
962613058 +1555234812 241
|
||||
960373347 919530258 488
|
||||
934863725 969614202 529
|
||||
913862602 919169253 509
|
||||
961393096 960703223 379
|
||||
914293467 938078294 165
|
||||
939999868 962402153 91
|
||||
914293467 939747620 553
|
||||
963970864 965411417 146
|
||||
934863725 932935286 436
|
||||
934863725 939460329 423
|
||||
961393096 +351234872325 49
|
||||
930930597 934877413 163
|
||||
939999868 969565271 467
|
||||
919274650 962456381 548
|
||||
961393096 910898341 302
|
||||
962613058 914917941 378
|
||||
913862602 938078294 499
|
||||
930930597 939460329 393
|
||||
934863725 271055066 527
|
||||
962613058 910898341 592
|
||||
930930597 913297593 91
|
||||
934863725 969565271 367
|
||||
914293467 967705618 516
|
||||
919274650 +81728423983 88
|
||||
963970864 969565271 372
|
||||
939999868 969614202 13
|
||||
913862602 910898341 415
|
||||
963970864 919530258 186
|
||||
930930597 969565271 81
|
||||
939999868 960703223 360
|
||||
934863725 960191430 556
|
||||
930930597 939747620 24
|
||||
913862602 916747594 125
|
||||
963970864 +31765214531 87
|
||||
913862602 913297593 153
|
||||
962613058 969614202 279
|
||||
962613058 938078294 562
|
||||
934863725 +1555234812 198
|
||||
962613058 +81728423983 266
|
||||
961393096 939747620 341
|
||||
934863725 919169253 366
|
||||
919274650 914917941 216
|
||||
919274650 +351234872325 422
|
||||
939999868 962456381 388
|
||||
930930597 932506907 588
|
||||
960373347 237395357 112
|
||||
919274650 228628637 530
|
||||
914293467 939460329 528
|
||||
930930597 934877413 489
|
||||
963970864 271055066 331
|
||||
939999868 934192590 34
|
||||
913862602 965411417 280
|
||||
939999868 +351234872325 224
|
||||
914293467 939747620 372
|
||||
961393096 939747620 203
|
||||
961393096 +1555234812 77
|
||||
919274650 934877413 598
|
|
@ -0,0 +1,200 @@
|
|||
960373347 934877413 598
|
||||
961393096 962456381 370
|
||||
930930597 967705618 167
|
||||
934863725 919169253 61
|
||||
963970864 914917941 400
|
||||
963970864 +351234872325 530
|
||||
939999868 932506907 465
|
||||
961393096 965411417 319
|
||||
934863725 919530258 170
|
||||
962613058 910898341 159
|
||||
960373347 939747620 557
|
||||
961393096 228628637 115
|
||||
934863725 228628637 221
|
||||
962613058 938078294 529
|
||||
961393096 962402153 172
|
||||
934863725 919530258 105
|
||||
919274650 969614202 532
|
||||
913862602 919530258 66
|
||||
930930597 967705618 285
|
||||
961393096 962456381 565
|
||||
913862602 910898341 408
|
||||
963970864 934877413 335
|
||||
914293467 919021596 261
|
||||
939999868 919169253 66
|
||||
934863725 939460329 71
|
||||
962613058 914917941 299
|
||||
961393096 960191430 420
|
||||
962613058 910898341 46
|
||||
961393096 919530258 139
|
||||
914293467 934192590 292
|
||||
914293467 962402153 571
|
||||
961393096 916747594 364
|
||||
934863725 228628637 31
|
||||
961393096 939747620 327
|
||||
960373347 910898341 104
|
||||
963970864 910898341 349
|
||||
934863725 939460329 384
|
||||
913862602 934877413 62
|
||||
914293467 231233053 292
|
||||
934863725 919530258 32
|
||||
960373347 228628637 32
|
||||
961393096 960191430 240
|
||||
934863725 939747620 158
|
||||
934863725 228628637 599
|
||||
963970864 969565271 280
|
||||
913862602 914917941 563
|
||||
962613058 969614202 342
|
||||
919274650 938078294 141
|
||||
934863725 965411417 13
|
||||
960373347 +1555234812 235
|
||||
960373347 969614202 159
|
||||
960373347 919530258 183
|
||||
919274650 969565271 32
|
||||
930930597 +351234872325 556
|
||||
939999868 969614202 11
|
||||
963970864 934877413 257
|
||||
960373347 938078294 383
|
||||
939999868 916747594 197
|
||||
962613058 963865883 335
|
||||
962613058 918114879 325
|
||||
913862602 932106163 449
|
||||
919274650 237395357 67
|
||||
930930597 919021596 133
|
||||
930930597 916747594 67
|
||||
939999868 962456381 185
|
||||
939999868 932935286 581
|
||||
960373347 271055066 393
|
||||
930930597 934877413 595
|
||||
960373347 934877413 39
|
||||
934863725 938078294 206
|
||||
960373347 969565271 516
|
||||
962613058 939747620 394
|
||||
961393096 938078294 66
|
||||
963970864 934877413 282
|
||||
913862602 932106163 429
|
||||
934863725 914917941 176
|
||||
919274650 932506907 76
|
||||
960373347 939460329 460
|
||||
960373347 228628637 259
|
||||
963970864 939460329 76
|
||||
919274650 +81728423983 133
|
||||
913862602 +81728423983 580
|
||||
961393096 960191430 389
|
||||
960373347 919530258 182
|
||||
919274650 231233053 504
|
||||
963970864 919169253 156
|
||||
919274650 960703223 585
|
||||
934863725 919021596 363
|
||||
914293467 932506907 276
|
||||
930930597 960191430 49
|
||||
962613058 938078294 596
|
||||
960373347 967705618 556
|
||||
961393096 918114879 585
|
||||
939999868 919169253 207
|
||||
962613058 967705618 78
|
||||
930930597 932106163 372
|
||||
961393096 967705618 461
|
||||
961393096 +81728423983 128
|
||||
934863725 919021596 556
|
||||
961393096 916747594 575
|
||||
960373347 919530258 379
|
||||
961393096 932935286 475
|
||||
962613058 231233053 46
|
||||
962613058 932935286 348
|
||||
963970864 938078294 451
|
||||
913862602 932935286 173
|
||||
962613058 939747620 281
|
||||
939999868 228628637 238
|
||||
962613058 932935286 497
|
||||
930930597 932506907 104
|
||||
939999868 +81728423983 325
|
||||
914293467 960703223 84
|
||||
960373347 965411417 550
|
||||
963970864 918114879 300
|
||||
930930597 934877413 108
|
||||
919274650 960703223 466
|
||||
930930597 962456381 320
|
||||
963970864 969565271 244
|
||||
934863725 960703223 592
|
||||
914293467 963865883 427
|
||||
934863725 +1555234812 390
|
||||
960373347 910898341 466
|
||||
963970864 231233053 599
|
||||
960373347 969565271 165
|
||||
934863725 962402153 559
|
||||
939999868 934877413 48
|
||||
919274650 934192590 195
|
||||
961393096 +351234872325 249
|
||||
914293467 934877413 329
|
||||
914293467 969614202 380
|
||||
960373347 +351234872325 366
|
||||
939999868 960703223 56
|
||||
919274650 910898341 514
|
||||
914293467 932506907 577
|
||||
939999868 910898341 581
|
||||
934863725 916747594 368
|
||||
939999868 962402153 99
|
||||
961393096 967705618 44
|
||||
914293467 939747620 431
|
||||
962613058 962456381 547
|
||||
919274650 919169253 485
|
||||
960373347 916747594 560
|
||||
963970864 +31765214531 246
|
||||
961393096 934192590 81
|
||||
961393096 914917941 355
|
||||
962613058 969614202 566
|
||||
919274650 962402153 571
|
||||
939999868 967705618 78
|
||||
939999868 938078294 521
|
||||
914293467 231233053 83
|
||||
913862602 919021596 379
|
||||
960373347 932506907 589
|
||||
961393096 963865883 570
|
||||
914293467 962456381 309
|
||||
919274650 914917941 562
|
||||
960373347 910898341 75
|
||||
961393096 967705618 87
|
||||
961393096 +1555234812 181
|
||||
960373347 228628637 597
|
||||
962613058 910898341 453
|
||||
960373347 +31765214531 118
|
||||
939999868 965411417 550
|
||||
934863725 914917941 592
|
||||
934863725 +1555234812 149
|
||||
960373347 938078294 386
|
||||
961393096 +31765214531 76
|
||||
960373347 960703223 175
|
||||
963970864 918114879 171
|
||||
919274650 932106163 97
|
||||
919274650 939460329 375
|
||||
963970864 271055066 341
|
||||
914293467 934877413 469
|
||||
913862602 919021596 111
|
||||
913862602 967705618 100
|
||||
919274650 914917941 507
|
||||
960373347 932106163 477
|
||||
963970864 237395357 565
|
||||
919274650 967705618 130
|
||||
930930597 271055066 441
|
||||
962613058 910898341 209
|
||||
919274650 271055066 106
|
||||
960373347 919530258 499
|
||||
930930597 271055066 168
|
||||
961393096 962456381 272
|
||||
963970864 +81728423983 511
|
||||
961393096 969614202 234
|
||||
963970864 965411417 57
|
||||
914293467 938078294 465
|
||||
913862602 932106163 585
|
||||
960373347 919021596 214
|
||||
963970864 939747620 392
|
||||
939999868 932106163 305
|
||||
960373347 938078294 498
|
||||
962613058 939460329 33
|
||||
963970864 932106163 209
|
||||
914293467 932106163 583
|
||||
913862602 932935286 211
|
||||
960373347 939747620 111
|
||||
934863725 962456381 561
|
||||
939999868 932935286 56
|
Binary file not shown.
|
@ -0,0 +1,105 @@
|
|||
def main() -> None:
|
||||
calls = {}
|
||||
|
||||
while True:
|
||||
print("""1) Registar chamada
|
||||
2) Ler ficheiro
|
||||
3) Listar clientes
|
||||
4) Fatura
|
||||
5) Terminar""")
|
||||
op = input("Opção? ")
|
||||
if op == "1":
|
||||
registar_chamada(calls)
|
||||
elif op == "2":
|
||||
fname = input("Ficheiro? ")
|
||||
ler_ficheiro(calls, fname)
|
||||
elif op == "3":
|
||||
listar_clientes(calls)
|
||||
elif op == "4":
|
||||
phone_number = input("Telefone? ")
|
||||
fatura(calls, phone_number)
|
||||
elif op == "5":
|
||||
exit(0)
|
||||
else:
|
||||
print("Opção inválida\n")
|
||||
|
||||
|
||||
def registar_chamada(calls: dict) -> None:
|
||||
caller_phone_number = input("Telefone origem? ")
|
||||
while not validate_phone_number(caller_phone_number):
|
||||
caller_phone_number = input("Telefone origem? ")
|
||||
|
||||
destination_phone_number = input("Telefone destino? ")
|
||||
while not validate_phone_number(destination_phone_number):
|
||||
destination_phone_number = input("Telefone destino? ")
|
||||
|
||||
duration = input("Duração (s)? ")
|
||||
while not duration.isdigit():
|
||||
duration = input("Duração (s)? ")
|
||||
duration = int(duration)
|
||||
|
||||
if caller_phone_number not in calls:
|
||||
calls[caller_phone_number] = {}
|
||||
if destination_phone_number not in calls[caller_phone_number]:
|
||||
calls[caller_phone_number][destination_phone_number] = []
|
||||
calls[caller_phone_number][destination_phone_number] += [int(duration)]
|
||||
|
||||
|
||||
def ler_ficheiro(calls: dict, fname: str) -> None:
|
||||
try:
|
||||
with open(fname, 'r') as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if line:
|
||||
caller_phone_number, destination_phone_number, duration = line.split('\t')
|
||||
|
||||
if caller_phone_number not in calls:
|
||||
calls[caller_phone_number] = {}
|
||||
if destination_phone_number not in calls[caller_phone_number]:
|
||||
calls[caller_phone_number][destination_phone_number] = []
|
||||
calls[caller_phone_number][destination_phone_number] += [int(duration)]
|
||||
|
||||
except FileNotFoundError:
|
||||
print("Ficheiro não encontrado\n")
|
||||
|
||||
|
||||
def listar_clientes(calls: dict) -> None:
|
||||
print("Clientes:", end='\t')
|
||||
for caller_phone_number in calls:
|
||||
print(caller_phone_number, end='\t')
|
||||
print()
|
||||
|
||||
|
||||
def fatura(calls: dict, phone_number: str) -> None:
|
||||
if phone_number not in calls:
|
||||
print("Cliente não existe\n")
|
||||
return
|
||||
|
||||
total = 0
|
||||
|
||||
print("Fatura do cliente", phone_number)
|
||||
print(f"{'Destino':<15}{'Duração':>10}{'Custo':>10}")
|
||||
|
||||
for destination_phone_number in calls[phone_number]:
|
||||
for duration in calls[phone_number][destination_phone_number]:
|
||||
if destination_phone_number.startswith("+"):
|
||||
call_cost = duration * 0.8 / 60
|
||||
elif destination_phone_number.startswith("2"):
|
||||
call_cost = duration * 0.02 / 60
|
||||
elif phone_number[:2] == destination_phone_number[:2]:
|
||||
call_cost = duration * 0.04 / 60
|
||||
else:
|
||||
call_cost = duration * 0.1 / 60
|
||||
|
||||
total += call_cost
|
||||
print(f"{destination_phone_number:<20}{duration:>10}{call_cost:>12.2f}")
|
||||
|
||||
print(f"{'Total':>30}{total:>12.2f}")
|
||||
|
||||
|
||||
def validate_phone_number(phone_number: str) -> bool:
|
||||
return phone_number.isdigit() and len(phone_number) >= 3 if phone_number[0] != "+" else phone_number[1:].isdigit() and len(phone_number[1:]) >= 3
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,25 @@
|
|||
# Este programa demonstra a leitura e utilização de dados de um ficheiro JSON
|
||||
# com mensagens do Twitter.
|
||||
# Modifique-o para resolver o problema proposto.
|
||||
|
||||
|
||||
# O módulo json permite descodificar ficheiros no formato JSON.
|
||||
# São ficheiros de texto que armazenam objetos compostos que podem incluir
|
||||
# números, strings, listas e/ou dicionários.
|
||||
import json
|
||||
|
||||
# Abre o ficheiro e descodifica-o criando o objeto twits.
|
||||
with open("twitter.json", encoding="utf8") as f:
|
||||
twits = json.load(f)
|
||||
|
||||
# Analise os resultados impressos para perceber a estrutura dos dados.
|
||||
print(type(twits)) # deve indicar que é uma lista!
|
||||
print(type(twits[0])) # cada elemento da lista é um dicionário.
|
||||
print(twits[0].keys()) # mostra as chaves no primeiro elemento.
|
||||
|
||||
# Cada elemento contém uma mensagem associada à chave "text":
|
||||
print(twits[0]["text"])
|
||||
|
||||
# Algumas mensagens contêm hashtags:
|
||||
print(twits[880]["text"])
|
||||
|
Loading…
Reference in New Issue