BloodyJava Δημοσ. 26 Μαρτίου 2021 Share Δημοσ. 26 Μαρτίου 2021 Καλησπερα ! Σε ασκηση python μου ζητειται να παραξω αρχειο κατοπιν αναγνωσης αλλου txt file με διαφορες τιμες, που θα περιλαμβανει υπολογισμο μεσου ορου και τυπικης αποκλισης με ακριβεια 3 δεκαδικου ψηφιου. Με τον παρακατω κωδικα που εχω γραψει, διαρκως στρογγυλοποιει στο 3ο δεκαδικο. Υπαρχει τροπος να αποφεχθει η στρογγυλοποιηση και απλα να τυπωθει το 3ο δεκαδικο ? import statistics with open("inputdata.txt",'r') as data: myfile=data.readlines() for i in range (0,len(myfile),1): n =len(myfile[i])-1 num=myfile[i] num = num[0:n] myfile[i] = float(num) mesos_oros=statistics.mean(myfile) apoklisi=statistics.stdev(myfile) with open("outputdata.txt",'w') as out: out.write ("Μέσος όρος = " + '{0:0.3f}'.format(mesos_oros) +"\n") out.write ("Τυπική απόκλιση = " + '{0:0.3f}'.format(apoklisi) + "\n") Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
bilakos26 Δημοσ. 27 Μαρτίου 2021 Share Δημοσ. 27 Μαρτίου 2021 (επεξεργασμένο) Εγώ το έβγαλα έτσι. Δεν είναι και ο καλύτερος τρόπος. Λογικά υπάρχει και πιο γρήγορος. Αν το βρεις κάνε έναν κόπο και δώσε μια απάντηση εδώ. #3o δεκαδικό για τον Μέσο Όρο list_average = [str(mesos_oros)] index_list_avg = list_average[0].index(".") list_average = list_average[0][:index_list_avg + 4] #3ο δεκαδικό για την Τυπική Απόκλιση list_apoklisi = [str(apoklisi)] index_list_apoklisi = list_apoklisi[0].index(".") list_apoklisi = list_apoklisi[0][:index_list_apoklisi + 4] with open("outputdata.txt",'w') as out: out.write(f"Μέσος όρος = {list_average}" + "\n") out.write(f"Τυπική απόκλιση = {list_apoklisi}" + "\n") Επεξ/σία 27 Μαρτίου 2021 από bilakos26 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
archer100 Δημοσ. 27 Μαρτίου 2021 Share Δημοσ. 27 Μαρτίου 2021 Η καλυτερη μεθοδος ειναι η ακολουθη: import math math.floor(apoklisi* 10 ** 3) / 10 ** 3 30 λεπτά πριν, bilakos26 είπε Εγώ το έβγαλα έτσι. Δεν είναι και ο καλύτερος τρόπος. Λογικά υπάρχει και πιο γρήγορος. Αν το βρεις κάνε έναν κόπο και δώσε μια απάντηση εδώ. #3o δεκαδικό για τον Μέσο Όρο list_average = [str(mesos_oros)] index_list_avg = list_average[0].index(".") list_average = list_average[0][:index_list_avg + 4] #3ο δεκαδικό για την Τυπική Απόκλιση list_apoklisi = [str(apoklisi)] index_list_apoklisi = list_apoklisi[0].index(".") list_apoklisi = list_apoklisi[0][:index_list_apoklisi + 4] with open("outputdata.txt",'w') as out: out.write(f"Μέσος όρος = {list_average}" + "\n") out.write(f"Τυπική απόκλιση = {list_apoklisi}" + "\n") Ωραια λυση, αλλα δεν χρειαζεται να δουλευεις με το [str(apoklisi)] Μπορεις να δουλεψεις κατευθειαν με το str(apoklisi): list_apoklisi = str(apoklisi) index_list_apoklisi = list_apoklisi.index(".") list_apoklisi = list_apoklisi[:index_list_apoklisi + 4] 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
bilakos26 Δημοσ. 27 Μαρτίου 2021 Share Δημοσ. 27 Μαρτίου 2021 1 ώρα πριν, archer100 είπε Η καλυτερη μεθοδος ειναι η ακολουθη: import math math.floor(apoklisi* 10 ** 3) / 10 ** 3 Ωραια λυση, αλλα δεν χρειαζεται να δουλευεις με το [str(apoklisi)] Μπορεις να δουλεψεις κατευθειαν με το str(apoklisi): list_apoklisi = str(apoklisi) index_list_apoklisi = list_apoklisi.index(".") list_apoklisi = list_apoklisi[:index_list_apoklisi + 4] Πολύ έξυπνη λύση φίλε, θα ανατρέξω σε αυτήν ξανά στο μέλλον σίγουρα. Έχεις απόλυτο δίκιο. Δεν μου πέρασε καθόλου από το μυαλό ότι θα μπορούσα να χρησιμοποιήσω την index() και στις συμβολοσειρές παρόλο που τα έχω φρεσκομαθημένα. Σε ευχαριστώ πολύ τόσο για την απάντηση στο ερώτημα του φίλου, όσο και για την διόρθωση. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Ψιτ Δημοσ. 27 Μαρτίου 2021 Share Δημοσ. 27 Μαρτίου 2021 Νομίζω, πως «με ακρίβεια» σημαίνει πως η άσκηση απαιτεί στρογγυλοποίηση και όχι αποκοπή των επιπλέον ψηφίων. Αν αυτή η περίπτωση η λύση στο αρχικό μήνυμα είναι σωστή. 2 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
BloodyJava Δημοσ. 27 Μαρτίου 2021 Μέλος Share Δημοσ. 27 Μαρτίου 2021 Ευχαριστω άπαντες. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα