Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Χρησιμοποιώ Python 2.7.10 .

Ο τελεστής διαίρεσης είναι ο ' / '΄.

Σύμφωνα με αυτά που έχω διαβάσει βγάζει το πηλίκο της διαίρεσης δύο αριθμών.

Όταν όμως πληκτρολογώ πχ print 7/3 βγάζει αποτέλεσμα 2 και όχι 2,33333.. που είναι το κανονικό.

Δηλ βγάζει μόνο το ακέραιο μέρος του πηλίκου.

Αν όμως πληκτρολογήσω 7.3 / 2 βγάζει κανονικά το αποτέλεσμα 3.65.

Πώς θα κάνω να βγάζει κανονικά το πηλίκο ανεξάρτητα αν ο διαιρετέος είναι ακέραιος ή όχι;

  • Απαντ. 32
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Δοκίμασε 7.0/3 ή 7/3.0 γνκ πρέπει το ένα από τα δύο να είναι float για να σου δώσει δεκαδικά. Ή python3 :P

Κατάλαβα μάλλον πάω σε έκδοση 3. Ευχαριστώ.
Δημοσ.

Διαφορετικά, μπορείς να πολλαπλασιάζεις είτε τον αριθμητή είτε τον παρονομαστή με 1.0 (βλ. και το link από SO που δόθηκε πιο πάνω).

Δημοσ.

Στην python υπάρχουν τα future imports για καλύτερο compatibility python2-python3. Η λογική είναι ότι φέρνεις χαρακτηριστικά της νεότερης python3 στην python2.

Οπότε για να έχεις τον division operator της python3 στην python2, όπως φαίνεται και στο link του Kercyn θα γράψεις στην αρχή, αρχή του αρχείου σου:

from __future__ import division

Προφανώς δεν "χρειάζεται" να πας σε python3 για τέτοιο λόγο. Αν όμως τώρα μαθαίνεις python δεν βλέπω κανένα λόγο να γράφεις σε python2.
 

Μάλλον πρέπει να κάνεις update την python.


Υπάρχει η python 2.x series και η python 3.x series οι οποίες αναπτύσσονται παράλληλα, οπότε τυπικά όταν κάνεις update την python2 πας σε νέα έκδοση της python2.x, όχι στην python3 η οποία μπορεί να είναι εγκατεστημένη παράλληλα. Πιθανόν να το γνωρίζεις, αλλά just saying.

  • Like 1
  • Moderators
Δημοσ.

Υπάρχει η python 2.x series και η python 3.x series οι οποίες αναπτύσσονται παράλληλα, οπότε τυπικά όταν κάνεις update την python2 πας σε νέα έκδοση της python2.x, όχι στην python3 η οποία μπορεί να είναι εγκατεστημένη παράλληλα. Πιθανόν να το γνωρίζεις, αλλά just saying.

 

Όχι, δεν το ήξερα αυτό. Υπέθεσα ότι ο OP απλώς έχει πολλή παλιά έκδοση :P

Δημοσ.

Δεν χρειάζεται να κάνεις κανένα update, Η python κάνει διαίρεση ανάλογα με το είδος των μεταβλιτών, αν είναι Intergers (ακέραιοι) τότε και το αποτέλεσμα θα είναι ακέραιο (καταλήγει δηλαδή να κάνει 'div'). Για να σου δώσει δεκαδικά πρέπει ένας απο τους 2 αριθμούς να είναι float(να έχει δηλαδή δεκαδικά). Οπότε, ή κάνεις 5.0/2 ή 5/2.0 ή αν έχεις μεταβλητές x / float(y).

  • Like 2
Δημοσ.

Δεν γνωρίζω, παρά ελάχιστα την python, το ερώτημα εδώ είναι αν μπορώ να ορίσω float ή double ή single τα Α και Β και να περιμένω Α/Β να δίνει πραγματικό;

Δημοσ.

Στην python δεν ορίζεις types  ( float ,int .. ).

 

Όπως ειπώθηκε και παραπάνω ή θα χρησιμοποιήσεις υποδιαστολή , ή την python3 ή from __future__ import division εφόσον χρησιμοποιείς python2.

Δημοσ.

Δεν γνωρίζω, παρά ελάχιστα την python, το ερώτημα εδώ είναι αν μπορώ να ορίσω float ή double ή single τα Α και Β και να περιμένω Α/Β να δίνει πραγματικό;

 

Ότι λέει ο από πάνω + να τα κάνεις casting σε float ή ότι άλλο θέλεις

a = 7
b = 3
a/b ---> 2
a/float( ---> 2.3333333333333335

Δημοσ.

Δηλαδή δεν ορίζουμε τύπο;

Και όμως αν δώσεις αρχική τιμή με δεκαδικό, ορίζεις τύπο...

Δημοσ.

Ναι δεν ορίζουμε είπαμε όχι δεν υπάρχουν. Φυσικά και η μεταβλητή παίρνει κάποιον τύπο αναλόγως με την τιμή που της θέτεις. 

Link.png Site: ρίξε εδώ μία ματιά αν θέλεις

Δημοσ.

οκ, το κατάλαβα!

Απλά βλέποντας ένα Α/Β δεν ξέρεις αφενός αν είναι διαίρεση ακεραίων ή πραγματικών και αφετέρου αν θα δώσει πραγματικό ή ακέραιο.

Η σταθερά που βάζουμε παίζει ρόλο στο τι θα βγάλει μια έκφραση. Και όταν ορίζουμε μεταβλητή ουσιαστικά έχουμε ανάθεση σε όνομα ενός αποτελέσματος έκφρασης!

Δεν συμπαθώ ιδιαίτερα τη γλώσσα Python (με εκνευρίζουν τα underscore και οι εσοχές που παίζουν ρόλο μπλοκ χωρίς να υπάρχει σημάδι τερματισμού του μπλοκ)

Δημοσ.

Απλά βλέποντας ένα Α/Β δεν ξέρεις αφενός αν είναι διαίρεση ακεραίων ή πραγματικών και αφετέρου αν θα δώσει πραγματικό ή ακέραιο.

 

Αυτό βέβαια σου δίνει πολύ μεγάλη ευελιξία. Δες πχ. ένα παράδειγμα με άλλον τελεστή:

 

 

In [1]: def add(a, :
   ...:     return a + b
   ...:

In [2]: add(1, 5)
Out[2]: 6

In [3]: add(2.4, 1.9)
Out[3]: 4.3

In [4]: add("abc", "def")
Out[4]: 'abcdef'

In [5]: add([1, 2, 3], [4, 5, 6])
Out[5]: [1, 2, 3, 4, 5, 6]

In [6]: add((1, 2), (3, 4))
Out[6]: (1, 2, 3, 4)

In [7]:

 

 

Ορίζεις μία add() και καθάρισες. Δεν χρειάζεσαι ούτε overloading, ούτε περίεργα macros, ούτε να ορίζεις 10 συναρτήσεις.

 

Ποια underscores σε εκνευρίζουν;

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...