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

python αρχαριος

Ερώτηση

εφτιαξα τον  παρακατω κωδικα και  θα ηθελα να μου πειτε αν μπορειτε πως να τον εφτιαχνα καλυτερα για να μην κανω τοσες If  ωστε να ηταμ μικροτερος ο κωδικας και να εκανα τις συγκρισεις 

a = int(input(u"Δωσε α: ")) 
b = int(input(u"Δωσε β: "))
c = int(input(u"Δωσε γ: "))

if ( a == b ):
   print "Line 1 - a is equal to b"
else:
   print "Line 1 - a is not equal to b"
if ( a != b ):
   print "Line 2 - a is not equal to b"
else:
   print "Line 2 - a is equal to b"
if ( a <> b ):
   print "Line 3 - a is not equal to b"
else:
   print "Line 3 - a is equal to b"
if ( a < b ):
   print "Line 4 - a is less than b"
else:
   print "Line 4 - a is not less than b"
if ( a > b ):
   print "Line 5 - a is greater than b"
else:
   print "Line 5 - a is not greater than b"

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

  • 0

πιστεύω εφόσον έχεις τόσα μέτρα σύγκρισης είναι αναγκαίο να έχεις τα if,

μπορείς να αποφύγεις το print των υπολοίπων όμως βάζοντας το όλο σε μία while (?)

έτσι θα αποφύγεις τα else

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Μπορείς να τους ταξινομήσεις και μετά να πάρεις ποιος είναι μεγαλύτερος κλπ. Έτσι όπως το έχεις τώρα, αν πούμε ότι ο α είναι μεγαλύτερος του β, θα πάρεις αυτό στην κονσόλα:

Line 1 - a is not equal to b
Line 2 - a is not equal to b
Line 3 - a is not equal to b
Line 4 - a is not less than b
Line 5 - a is greater than b

Αυτό είναι που θες;

 

 

 

 

πιστεύω εφόσον έχεις τόσα μέτρα σύγκρισης είναι αναγκαίο να έχεις τα if,

μπορείς να αποφύγεις το print των υπολοίπων όμως βάζοντας το όλο σε μία while (?)

έτσι θα αποφύγεις τα else

 

Τι θα κάνει η while;

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

αυτο που θελω ειναι να  δωσει ο χρηστης 3 αριθμους και να τους συγκρινω ποιος ειναι μεγαλυτερος μεσαιος και μικροτερος


και ο γ;

πηγαδι;

τον ξεχασα μαλλον :P

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ωραία, διάβασε τρεις αριθμούς σ' έναν πίνακα, ταξινόμησε τον πίνακα και εκτύπωσε τα στοιχεία του.

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ο χρήστης θα τους δίνει και θα τους βάζεις σε πίνακα αντί σε τρεις ξεχωριστές μεταβλητές.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

εκανα αυτο μπορει να εχει μερικα συντακιτκα αλλα σαν σκεψη ειναι σωστο νομιζω.αυτο με τους πινακες δεν καταλαβαινα πως ηθελες να το κανεις μπορεις να  μοπυ δωσεις την λυση σου να δω τι εννοουσες?

a = int(input(u"Δωσε α: "))
b = int(input(u"Δωσε β: "))
c = int(input(u"Δωσε γ: "))
fisrt=a;
if (b>=fist ):
  first=b
  second=b
  else:
second=b;
if (c>=fist ):
  third=second
  second=first
  fisrt=c;
if (c>=second):
    third=second
    second=c
else:
  c=third
  print "first,second,third"

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Δημοσ. (επεξεργασμένο)

Με ταξινόμηση νομίζω και εγώ γίνεται πιο εύκολα

σε python 3

Όχι πίνακας αλλά dict

SORRY Ο κώδικας είναι λάθος το κοιτάω και επανέρχομαι 

def compare():
	a = int(input("Δωσε α: ")) 
	b = int(input("Δωσε β: "))
	c = int(input("Δωσε γ: "))
	lejiko={i:k for i,k in zip('αβγ',(a,b,c))}
  return '<='.join(n[1] for i in range(len(sorted(zip(lejiko.values(), lejiko.keys())))))

Σωστό

Επεξ/σία από k33theod

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

 

Με ταξινόμηση νομίζω και εγώ γίνεται πιο εύκολα

σε python 3

Όχι πίνακας αλλά dict

def compare():
	a = int(input("Δωσε α: ")) 
	b = int(input("Δωσε β: "))
	c = int(input("Δωσε γ: "))
	lejiko={i:k for i,k in zip((a,b,c),('αβγ'))}
	return '<='.join(lejiko[i] for i in sorted(lejiko.keys()))


μπορεις να μου εξηγησεις τι κανει το zip και το join?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Δημοσ. (επεξεργασμένο)

Ο παραπάνω κώδικας είναι λάθος 

εδώ είναι ο σωστός

def compare():
	a = int(input("Δωσε α: ")) 
	b = int(input("Δωσε β: "))
	c = int(input("Δωσε γ: "))
	lejiko={i:k for i,k in zip('αβγ',(a,b,c))}
        n=sorted(zip(lejiko.values(), lejiko.keys()))
        return '<='.join(n[i][1] for i in range(len(n)))
  

To zip δεν έχει σχέση με το ζιπάρισμα αλλά με το φερμουάρ δες καλύτερα μόνος σου τι κάνει.

Το λέω γιατί θα χάσω κάτι και δεν θα καλύψω το θέμα

Αν σου πω δηλαδή ότι επιστρέφει ένα iter από πολλά iter αφού εξαντλήσει το μικρότερο πιστέυω δεν θα καταλάβεις και πολλά.

 

με παράδειγμα

>>> list(zip((1,2,3),(4,5,6)))
[(1, 4), (2, 5), (3, 6)]
>>> n=zip((1,2,3),(4,5,6))
>>> n
<zip object at 0x00000250BB567E88>

το join δες το και αυτό

παράδειγμα

>>> ':'.join('καλημέρα')
'κ:α:λ:η:μ:έ:ρ:α'
Επεξ/σία από k33theod

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

@k33theod

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

 

@yolobot

Ο μοναδικός τρόπος με τον οποίο κάνεις sort στην python είναι η χρήση της standard-library (η οποία χρησιμοποιεί τον αλγόριθμο timsort). Προφανώς αυτό που εξετάζεται στην συγκεκριμένη περίπτωση είναι η χρήση if/else κτλ.

 

Αν έχεις μάθει συναρτήσεις, τότε καλό είναι να σπάσεις το πρόβλημα σε υπο-προβλήματα. Πχ

def get_input():
    """ Return 3 integers """
    a = int(input("Δωσε α: "))
    b = int(input("Δωσε β: "))
    c = int(input("Δωσε γ: "))
    return (a, b, c)
 
def sort3(a, b, c):
    """ Sort 3 numbers (ascendingly). """
    # add your own implementation
    return
 
def main():
    (a, b, c) = get_input()
    (a, b, c) = sort3(a, b, c)
    print("The numbers in ascending order are: (%d, %d, %d)" % (a, b, c))
 
if __name__ == "__main__":
    main()

Τώρα για να γράψεις την sort3, το πιο σωστό (και εύκολο) είναι να γράψεις κάποια test πρώτα. Δηλαδή μπορείς να κάνεις μια άλλη συνάρτηση η οποία θα ελέγχει την υλοποίηση της sort3. Αυτό που θα χρειαστεί να μάθεις και πιθανά δεν ξέρεις είναι τι κάνει η assert.

 

Πχ:

def test_sort3():
    # first test
    a, b, c = (1, 8, 4)
    assert sort3(a, b, c) == (1, 4, 8)
    # second test
    numbers = (8, 4, 1)
    assert sort3(a, b, c) == (1, 4, 8)
    # add more tests
    # ...
 
test_sort3()
  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

Συνδεθείτε τώρα
×
×
  • Δημιουργία νέου...

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.