Γράψτε κώδικα python, κατά προτίμηση συναρτήσεις, για τα παρακάτω θέματα
Φτιάξτε μία συνάρτηση που να παίρνει έναν αριθμό και να επιστρέφει αν είναι πρώτος ή όχι (True/False)
Φτιάξτe μία λίστα με όλους του 1000 πρώτους αριθμούς. (προσοχή: όχι όλους τους πρώτους αριθμούς από το 1 μέχρι το 1000)
Ποιο είναι το άθροισμα όλων των 1000 πρώτων αριθμών που τελειώνουν σε 3;
Πάρτε τους πρώτους 10.000 πρώτους αριθμούς. Πόσοι τελειώνουν σε "1", πόσοι σε "3", πόσοι σε "7" και πόσοι σε "9";
Πάρτε τους πρώτους 10.000 πρώτους αριθμούς. Πόσοι τελειώνουν σε "01", "02", "03", "07", "09", "11", "13", "17", "19", "21", .. "99"; Δηλαδή πάρτε όλα τα πιθανά τελευταία 2 ψηφία ενός πρώτου. Θεωρήστε ότι ο 1,2,5 και 7 τελειώνουν σε "01", "02", "05" και "07" αντίστοιχα. Φτιάξτε ένα dictionary. π.χ:
solution = {
'01': 132,
'03' : 76,
...
'99': 91,
}
Ποιός είναι ο μέσος όρος των τιμών του dictionary της άσκησης 5;
Από όλα τα counts της άσκησης 5, Ποιά κατάληξη έχει τους περισσότερους πρώτους αριθμούς;
Αν αρχίσουμε να αθροίζουμε όλους τους πρώτους αριθμούς ξεκινώντας από το 1, μετά από ποιον πρώτο αριθμό το άθροισμα θα ξεπεράσει το 1.000.000;
Δίνεται πως να φτιάξετε μία λίστα με 1000 τυχαίους αιρθμούς από το 0.0 μέχρι το 1.0:
import random
l = [random.random() for x in range(1000)]
Ποιος είναι ο δεύτερος μεγαλύτερος αριθμός της λίστας; Μη χρησιμοποιήσετε sort
ή max
. Πρέπει να χρησιμοποιήσετε ένα και μόνο 1 for
. Επίσης αν οι 2 (ή παραπάνω) μεγαλύτεροι αριθμοί είναι ίσοι θα πρέπει να επιστρέφει έναν από αυτούς. Δηλαδή ο δεύτερος μεγαλύτερος αριθμός της λίστας: [3,6,5,6]
είναι το 6 και όχι το 5.
Δίνεται το παρακάτω string:
a = '''
#CHROM POS ID REF ALT QUAL
chr19 617614 . G A 39.2648
chr19 617804 . G A 0.309945
chr19 617959 . A C 0.0608339
chr19 618159 . A G 193.704
chr19 618428 . T G 1.87498E-5
chr19 618851 . T C 74.4613
chr19 618854 . G A 74.4613
chr19 618911 . T G 2.88308E-4
chr19 619021 . G C 352.245
chr19 619139 . G A 137.482
chr19 619408 . A G 207.722
chr19 619574 . T G 594.095
chr19 619772 . G C 612.352
chr19 619913 . T C 276.649
chr19 620004 . T C 0.00524165
chr19 620045 . A T 15.5734
chr19 620201 . A C 5.61107E-5
chr19 620210 . A C 1.63995E-5
chr19 620214 . T C 3.42253E-5
chr19 620228 . A C 8.62681E-4
chr19 620299 . C A 6.06919
chr19 620315 . A C 3.3417E-4
chr19 620381 . T G 5.01393E-4
chr19 620414 . A C 6.37073E-6
chr19 620429 . T C 2.46975E-5
chr19 620454 . A C 4.25049E-5
chr19 620459 . T C 4.96425E-5
chr19 620728 . A G 0.0198511
chr19 620807 . G A 41.4442
'''
Όπως βλέπετε περιέχει πληροφορίες για διάφορες θέσεις στο χρωμόσωμα 19.
Πόσες γραμμές περιέχει;
Έστω το string της άσκηση 10. Φτιάξτε ένα dictionary του οποίου το key να είναι το POS και το value να είναι το QUAL. Δηλαδή:
q = {
617614 : 39.2648,
617804 : 0.309945,
...
}
- hint 1: Έστω το string:
a = '''
mitsos 452
kwstas 999
'''
Τότε:
b = a.split('\n')
print (b)
[' ', 'mitsos 452', 'kwstas 999', '']
- hint 2: Έστω η λίστα:
b = [' ', 'mitsos 452', 'kwstas 999', '']
Τότε:
c = [x.strip() for x in b]
print (c)
['', 'mitsos 452', 'kwstas 999', '']
- hint 3. Έστω η λίστα:
c = ['', 'mitsos 452', 'kwstas 999', '']
Τότε:
d = [x for x in c if x] # Θυμηθείτε ότι το '' είναι False
print (d)
['mitsos 452', 'kwstas 999']
- Hint 4. Έστω η λίστα:
d = ['mitsos 452', 'kwstas 999']
Τότε:
e = [x.split() for x in d]
print (e)
[['mitsos', '452'], ['kwstas', '999']]
- Hint 5. Έστω η λίστα:
e = [['mitsos', '452'], ['kwstas', '999']]
Τότε:
f = {x[0] : int(x[1]) for x in e}
print (f)
{'mitsos': 452, 'kwstas': 999}
- Hint 6. (Όλο μαζί). Έστω το string:
a = '''
mitsos 452
kwstas 999
'''
Τότε:
b = {y[0]:int(y[1]) for y in [x.split() for x in a.split('\n') if x.strip()]}
print (b)
{'mitsos': 452, 'kwstas': 999}
Έστω το string της άσκηση 10. Φτιάχτε ένα dictionay όπου το key θα είναι το POS και το value θα είναι ένα dictionary που θα περιέχει τα REF και ALT. Δηλαδή:
q = {
617614 : {'REF': 'G', 'ALT': 'A'},
617804 : {'REF': 'G', 'ALT': 'A'},
617959 : {'REF': 'A', 'ALT': 'C'},
...
}
Έστω το dictionary της άσκησης 13. Πόσες φορές βλέπουμε να έχουμε 'REF' = G και 'ALT' = A ;
Έστω το dictionary της άσκησης 13. Πόσες φορές εμφανίζονται όλοι οι διαφορετικoί συνδοιασμοί για REF = 'A', 'C', 'G', 'T' και ALT = 'A', 'C', 'G', 'T' (όπου το REF είναι διαφορετικό από το ALT); Δηλαδή φτιάξτε ένα dictionary όπως αυτό:
d = {
('A', 'C') : 4,
('A', 'G') : 2,
('A', 'T') : 0,
('C', 'A') : 1,
('C', 'G') : 2,
('C', 'T') : 3,
...
}
- Το πρώτο value του key είναι το REF και το δεύτερο το ALT
- Τα νούμερα που έχω βάλει εδώ είναι τυχαία.
Φτιάξτε το ίδιο dictionary με αυτό της άσκησης 13 αλλά τα keys είναι οι 4 διαφορετικές τιμές για το REF και τα values θα πρέπει να είναι και αυτά dictionaries όπου τα keys του θα είναι οι 4 διαφορετικές τιμές του ALT και τα values θα είναι τα counts. Δηλαδή:
d = {
'A' : {'C': 4, 'G': 2, 'T': 0},
'C' : {'A': 1, 'G': 2, 'T': 3),
...
}
Δηλαδή το REF=A και το ALT=C εμφανίζεται 4 φορές. Το REF=A και το ALT=G εμφανίζεται 2 φορές, κτλ..
- Hint 1
a = {}
if a:
print ('Not Empty')
else:
print ('Empty')
Empty
- Hint 2
a = {'A': {'C': 5}}
a['A']['T'] = 7
print (a)
{'A': {'C': 5, 'T': 7}}
Έστω το string της άσκησης 10, ποια μεταλλαγή (δηλαδή ζευγάρι REF,ALT) εμφανίζεται τις περισσότερες φορές;
Έστω το string της άσκησης 10. Κάντε sort των ζευγαριών REF,ALT με βάση το πόσες φορές εμφανίζονται (sort επιτρέπεται εννοείται)
Έστω το string της άσκησης 10. Σε ποια θέση (POS) έχουμε το μεγαλύτερο QUAL;
Έστω το string της άσκησης 10. Κάντε sort το POS ανάλογα με το QUAL. Η λίστα πρέπει να ξεκινάει από το μεγαλύτερο QUAL και να καταλήγει στο μικρότερο QUAL.
Έστω το string της άσκησης 10. Ποιο ζευγάρι από entries, έχει τη μικρότερη απόσταση μεταξύ τους; Απόσταση ορίζεται ως το απόλυτο της διαφοράς του POS.