rs16206 Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Γεια σας, Πρόσφατα έχω ξεκινήσει online μαθηματα Python...και αντιμετωπίζω ενα μικρό προβλημα σε μια άσκηση... Η άσκηση λοιπον μου δίνει τα εξής δεδομένα και με αυτή τη σειρά: 1.5 2 3.78 4.1 5.28 6.5 7.2 8.89 9.23 10.5 και θα πρέπει να φτιάξω ένα πρόγραμμα το οποίο να διαβάζει ένα αρχείο με τους παραπανω αριθμους (τυπου data.txt), στη συνέχεια να υπολογίζει τον Μ.Ο και την τυπική απόκλιση από αυτό το αρχείο και τέλος το πρόγραμμα να δημιουργεί ένα αρχείο τυπου outdata.txt και να αποθηκευει εκει τις τιμες του μεσου όρου και της τυπικης αποκλισης... Σαν επιλυση έχω γράψει τα εξής: #Χρήση της βιβλιοθήκης Statistics import statistics #Αναγνωση των δεδομένων εισοδου with open('inputdata.txt','r') as f: data=f.read() data=float() #ypologismos tou mesou orou kai ths typikhs apoklishs m=statistics.mean(data) st=statistics.stdev(data) #Δημιουργια του αρχειου outputdata για την αποθηκευση του Μ.Ο & Τυπικής απόκλισης with open('outputdata.txt','w') as f: f.writelines(['Μέσος όρος = ',str(m),'\n']) f.write(['Τυπικη απόκλιση = ',str(st)]) και οταν το τρεχω μου βγαζει το εξης TypeError: 'float' object is not iterable....εχω δοκιμάσει αρκετά πράγματα αλλα δεν μου εμφανιζει σωστα δεδομενα στο αρχειο outputdata... Όποιος γνωρίζει ας δώσει ενα χέρι βοηθειας ..ευχαριστω πολυ για το χρονο σας
dovecotDev Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 (επεξεργασμένο) Αν και δεν είναι σωστό να σου λύνουν τα μαθήματα, γιατί εσύ δεν θα μάθεις αυτά που πρέπει... Επισυνάπτω μια βρώμικη και γρήγορη λύση... δεν έχω ηδέα αν είναι σωστή parse.zip Επεξ/σία 6 Απριλίου 2020 από dovecotDev spelling mistake, oops 1
SOADNICK Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Στο βγάζει λόγο του float() που έχεις βάλει, βέβαια και να το βγάλεις με ένα print θα δεις ότι το data είναι της μορφής "1.5\n2\n3.78\n4.1\n" που δε βοηθάει. Κάνε manually προσπέλαση του αρχείου ανά γραμμή και splitαρε το newline απ' το τέλος. Για να αποφύγεις άλλα errors στο mean και το stdev κάνε και typecast σε float. Αυτά για αρχή 1 λεπτό πριν, dovecotDev είπε Αν και δεν είναι σωστό να σου λύνουν τα μαθήματα, γιατί εσύ δεν θα μάθεις αυτά που πρέπει... Επισυνάπτω μια βρόμικη και γρήγορη λύση... δεν έχω ηδέα αν είναι σωστή parse.zip 938 B · 0 downloads Μόλις μου ψόφησες τα hints 😛
dovecotDev Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 (επεξεργασμένο) Οοπςς συγνώμη 😷 . 5 λεπτά πριν, SOADNICK είπε Μόλις μου ψόφησες τα hints 😛 Επεξ/σία 6 Απριλίου 2020 από dovecotDev
rs16206 Δημοσ. 6 Απριλίου 2020 Μέλος Δημοσ. 6 Απριλίου 2020 12 λεπτά πριν, dovecotDev είπε Αν και δεν είναι σωστό να σου λύνουν τα μαθήματα, γιατί εσύ δεν θα μάθεις αυτά που πρέπει... Επισυνάπτω μια βρώμικη και γρήγορη λύση... δεν έχω ηδέα αν είναι σωστή parse.zip 938 B · 3 downloads Σε ευχαριστω πολυ...☺️☺️☺️ Ναι νμζ καταλαβα τι λαθος ειχα κανει στον κωδικα μου... 13 λεπτά πριν, SOADNICK είπε Στο βγάζει λόγο του float() που έχεις βάλει, βέβαια και να το βγάλεις με ένα print θα δεις ότι το data είναι της μορφής "1.5\n2\n3.78\n4.1\n" που δε βοηθάει. Κάνε manually προσπέλαση του αρχείου ανά γραμμή και splitαρε το newline απ' το τέλος. Για να αποφύγεις άλλα errors στο mean και το stdev κάνε και typecast σε float. Αυτά για αρχή Μόλις μου ψόφησες τα hints 😛 Σε ευχαριστωω πολλυυυυ 🙏🙏🙏
dovecotDev Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Κανένα πρόβλημα. Προσοχή: Σε πύθωνα 2 το map() επιστρέφει list ενώ σε πύθωνα 3 επιστρέφει iterator, άρα κάνω μετατροπή σε list. Ο πύθωνας 2 πιάστηκε στην φάκα, μαγειρεύτηκε και τον έδωσαν σε ιθαγενείς Αβορίγινους για βραδινό (μετάφραση: καταργήθηκε, άρα λειτουργούμε με έκδοση 3.x).
Lanike71 Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Η ίδια άσκηση σε 2 θέματα. Εντάξει, αυτό δεν το ξαναείδα στο insomnia. Τουλάχιστον εσύ την πάλεψες. 1
becoming_I Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 (επεξεργασμένο) Μιας και υπάρχει λύση βάζω μια ακόμη πιο βρώμικη και pythonic import statistics data=[] # Δημιουργία κενής λίστας για αποθήκευση των δεδομένων with open('inputdata.txt','r') as file: for i in file.readlines(): # Μετατροπή απευθείας του string data.append(float(i)) # σε float και ένταξη αυτού στη λίστα file = open('outputdata.txt', 'w') # άνοιγμα αρχείου για εγγραφή και χρήση της format για απεικόνιση των αποτελεσμάτων file.writelines("Μέσος όρος = {} \nTυπική απόκλιση = {}".format(statistics.mean(data),statistics.stdev(data))) Επεξ/σία 6 Απριλίου 2020 από becoming_I
pmav99 Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Βρωμιάρηδες όλοι.... Ούτε λίγο over-engineering... import functools import statistics from pathlib import Path from typing import Callable from typing import List from typing import Tuple from typing import TypeVar T = TypeVar("T") # pylint: disable=invalid-name OUTPUT = """ Μέσος όρος = {mean} Tυπική απόκλιση = {stdev} """.strip() def parse_file(path: Path, cast: Callable[[str], T]) -> List[T]: input_data = [cast(num) for num in path.read_text().splitlines()] return input_data # pylint: disable=invalid-name parse_booleans = functools.partial(parse_file, cast=bool) parse_floats = functools.partial(parse_file, cast=float) parse_integers = functools.partial(parse_file, cast=int) # pylint: enable=invalid-name def analyze(input_data: List[float]) -> Tuple[float, float]: mean = statistics.mean(input_data) stdev = statistics.stdev(input_data) return mean, stdev def write_output(path: Path, mean: float, stdev: float) -> None: contents = OUTPUT.format(mean=mean, stdev=stdev) path.write_text(contents) def get_user_input() -> Tuple[Path, Path]: # hardcoding for now input_path = Path("input_data.txt") output_path = Path("output_data.txt") return input_path, output_path def main() -> None: input_path, output_path = get_user_input() input_data = parse_floats(input_path) # ignoring mypy due to: https://github.com/python/mypy/issues/8341 mean, stdev = analyze(input_data) # type: ignore write_output(output_path, mean, stdev) if __name__ == "__main__": main() 2 1
MauroPaltoudias Δημοσ. 6 Απριλίου 2020 Δημοσ. 6 Απριλίου 2020 Να τον ακούτε τον pmav, είναι δάσκαλος μεγάλος. 2
dovecotDev Δημοσ. 7 Απριλίου 2020 Δημοσ. 7 Απριλίου 2020 Αποδεδειγμένα όχι και τόσο μεγάλος δάσκαλος, καθώς απέτυχε να ακολουθήσει τις προδιαγραφές της άσκησης, π.χ. τα ονόματα των txt αρχείων δεν είναι σωστά. Η άσκηση δεν βαθμολογείται σε αυτή την περίπτωση. Σε εταιρικό επίπεδο, είναι σημαντικό ο κώδικας να είναι κατανοητός από όλα τα τωρινά μέλη της ομάδας προγραμματιστών, αλλά και από προγραμματιστές που θα ασχοληθούν με το εν λόγο έργο στο μέλλον. Να αναφέρω πως “κόλπα” που κάνουν τον κώδικα αδιάβαστο ή γενικά δύσκολο στην κατανόηση (τύπου pythonic ή over engineering), είναι αφορμή για άμεση απόλυση. Ακατανόητος κώδικας δημιουργεί σοβαρά προβλήματα σε ένα μακροχρόνιο έργο. 1
MauroPaltoudias Δημοσ. 7 Απριλίου 2020 Δημοσ. 7 Απριλίου 2020 @pmav99 Ετοίμασε σε παρακαλώ αγόρι μου τα χαρτιά σου και πέρασε με την πρώτη ευκαιρία από ΟΑΕΔ. 1
Moderators Kercyn Δημοσ. 7 Απριλίου 2020 Moderators Δημοσ. 7 Απριλίου 2020 1 ώρα πριν, dovecotDev είπε Αποδεδειγμένα όχι και τόσο μεγάλος δάσκαλος, καθώς απέτυχε να ακολουθήσει τις προδιαγραφές της άσκησης, π.χ. τα ονόματα των txt αρχείων δεν είναι σωστά. Η άσκηση δεν βαθμολογείται σε αυτή την περίπτωση. Σε εταιρικό επίπεδο, είναι σημαντικό ο κώδικας να είναι κατανοητός από όλα τα τωρινά μέλη της ομάδας προγραμματιστών, αλλά και από προγραμματιστές που θα ασχοληθούν με το εν λόγο έργο στο μέλλον. Να αναφέρω πως “κόλπα” που κάνουν τον κώδικα αδιάβαστο ή γενικά δύσκολο στην κατανόηση (τύπου pythonic ή over engineering), είναι αφορμή για άμεση απόλυση. Ακατανόητος κώδικας δημιουργεί σοβαρά προβλήματα σε ένα μακροχρόνιο έργο. Επίτηδες είναι έτσι. 1 1
stefanos90_K Δημοσ. 7 Απριλίου 2020 Δημοσ. 7 Απριλίου 2020 Ο άλλος στην ίδια άσκηση απλά έκανε screenshot, ούτε μπήκε στον κόπο να την γράψει. @pmav99 Σαν πρώτο σχόλιο ξέχασες να βάλεις "I hate you all"
Lanike71 Δημοσ. 8 Απριλίου 2020 Δημοσ. 8 Απριλίου 2020 (επεξεργασμένο) 3 ώρες πριν, stefanos90_K είπε Ο άλλος στην ίδια άσκηση απλά έκανε screenshot, ούτε μπήκε στον κόπο να την γράψει. Νομίζω ότι ήρθε η στιγμή για νέα κατηγορία στο κλασικό πινακάκι... "Έχω αντισηπτικό στα χέρια και δε μπορώ να πληκτρολογήσω"...😃 Επεξ/σία 8 Απριλίου 2020 από Lanike71 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα