Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: IDLE vs Terminal

IDLE vs Terminal 3 Μήνες 1 Ημέρα πριν #4482

  • scally
  • Το Άβαταρ του/της scally
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 19
Καλησπέρα στη παρέα.
Προσπαθώ να φτιάξω ένα προγραμματάκι που βασίζεται κυρίως στις πιθανότητες. Δηλ το 90+% θα είναι με if. Να σας δώσω ένα μικρό παράδειγμα.

while True:
 
 
 
        c1 = input("first: ")
        c2 = input("second: ")
        d = input("d: ")
 
 
        if not c1.isdigit() or c2.isdigit() or d.isdigit():
            print("Again")
            continue
 
 
 
        def add(c1, c2):
                return int(c1) + int(c2)
        t = add(c1, c2)
 
 
 
        if t == 1:
                print ("Bravo!")
 
        elif t == 2 or t == 3 or t == 4 or t == 5:
                print ("N")
        elif t == 1:
                print ("S")
 
 
 
 
        elif t == 11 and d == 12:
            print ("D")
        elif t == 11 and d == 13:
            print ("F")
 
 


Το πρόβλημά μου είναι το εξής: Όταν το τρέχω στο IDLE από το τρίτο elif και μετά δεν μου βγάζει το print D για παράδειγμα. Αλλά ακριβώς το ίδιο μου τρέχει μια χαρά στον τερματικό. ΑΛΛΑ!! Στο IDLE όταν ο χρήστης δίνει οτιδήποτε άλλο εκτός από αριθμό εκτυπώνει AGAIN αλλά το θέμα είναι ότι το εκτυπώνει και στις επιλογές του δεύτερου κ τρίτου elif. Σε αντίθεση με το τερματικό που μόλις δώσω γράμμα κλείνει το πρόγραμμα. Δεν μπορώ να καταλάβω γιατί τέτοιες διαφορές, ποιο από τα δύο να εμπιστευθώ κ πως να λύσω τα προβλήματα αν εμπιστευθώ το οποιοδήποτε.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

IDLE vs Terminal 3 Μήνες 13 Ώρες πριν #4483

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 158
  • Ληφθείσες Ευχαριστίες 45
Scally

Τη σωστή συμπεριφορά του προγράμματος σου την βλέπεις όταν το εκτελείς.
python my_module.py
O indle αλλά και η consola πιστεύω εννοείς πάλι την εκτέλεση των εντολών στο περιβάλλον με τα (>>>) είναι για να δοκιμάζουμε μικρά κομάτια κώδικα και κυρίως για εκπαιδευτικούς λόγους.

Ο κώδικας σου τώρα είναι κατά βάση λάθος

Καταρχήν έχεις 1 loop που μπορεί να μην σπάσει πότε
πρέπει να έχεις ένα τρόπο να το σπάσεις.
Η συνθήκη if not c1.isdigit() or c2.isdigit() or d.isdigit(): τι σημαίνει
Αν θες να πεις "αν κάποια μεταβλητή δεν είναι αριθμός" είναι λάθος.
Και τα τρία isdigit τα θες True άρα c1.isdigit() and c2.isdigit() and d.isdigit()
και το not μπροστά αλλά έτσι
if not (c1.isdigit() and c2.isdigit() and d.isdigit()):
Η παρένθεση είναι απαραίτητη γιατί το not έχει μεγαλύτερη priority από το and

To if t==1 το έχεις 2 φόρες
κοίτα το intentation είναι λάθος.

Γενικά είναι καλύτερα να κάνεις εξάσκηση με προβλήματα και ασκήσεις έτοιμα που να καθορίζουν επακριβώς τι πρέπει να κάνεις στο πρόγραμμα. Κατά προτίμηση από ξένα sites ή βιβλία
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

IDLE vs Terminal 3 Μήνες 13 Ώρες πριν #4484

  • scally
  • Το Άβαταρ του/της scally
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 19
Το loop θέλω να σπάσει με μία επιλογή από τον χρήστη πχ "exit". Μα αν βάλω and και στα 3 νομίζω ότι χάνω την περίπτωση που ο χρήστης θα πληκτρολογήσει πχ γράμμα σε ένα από αυτά. Ενώ αν βάλω ή το ένα ή το άλλο θα βγάλει το "Again". Το δοκίμασα όμως αλλά τώρα μου βγάζει σφάλμα:


Traceback (most recent call last):
File "test.py", line 5, in <modu
c1 = input("first: ")
File "<string>", line 1, in <module>
NameError: name 'f' is not defined


Το f το πληκτρολόγησα εγώ για να το τεστάρω. Εκτός αν το βάζω σε λάθος σημείο.

Λέγοντας τερματικό δεν εννοώ πάλι το IDLE και εννοείται δεν γράφω το πρόγραμμα εκεί. Το γράφω σε ενα παράθυρό του και στη συνέχεια πατάω run module και τρέχει. Τερματικό εννοώ του υπολογιστή που γράφεις πχ cd desktop --> python test.py και τρέχεις το πρόγραμμα. Πως γίνεται το κάθε ένα να μου τρέχει διαφορετικά πράγματα;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

IDLE vs Terminal 3 Μήνες 7 Ώρες πριν #4485

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 158
  • Ληφθείσες Ευχαριστίες 45
scally έγραψε:
Το loop θέλω να σπάσει με μία επιλογή από τον χρήστη πχ "exit". Μα αν βάλω and και στα 3 νομίζω ότι χάνω την περίπτωση που ο χρήστης θα πληκτρολογήσει πχ γράμμα σε ένα από αυτά. Ενώ αν βάλω ή το ένα ή το άλλο θα βγάλει το "Again".
while True:
	c1 = input("first (-1 for exit): ")
        if c1=='-1':break
	c2 = input("second: ")
	d = input("d: ")
#Το if εναλλακτικά με αυτό που σου είπα παραπάνω αν δεν είναι εύκολα κατανοητό μπορείς να το κάνεις
	if not c1.isdigit() or not c2.isdigit() or not d.isdigit():
		print("Again")
		continue 
#σημαίνει αυτό με παρενθέσεις 
        if (not c1.isdigit()) or (not c2.isdigit()) or (not d.isdigit()):
		print("Again")
		continue  
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": scally

IDLE vs Terminal 3 Μήνες 7 Ώρες πριν #4486

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 158
  • Ληφθείσες Ευχαριστίες 45
scally έγραψε:
Λέγοντας τερματικό δεν εννοώ πάλι το IDLE και εννοείται δεν γράφω το πρόγραμμα εκεί. Το γράφω σε ενα παράθυρό του και στη συνέχεια πατάω run module και τρέχει. Τερματικό εννοώ του υπολογιστή που γράφεις πχ cd desktop --> python test.py και τρέχεις το πρόγραμμα. Πως γίνεται το κάθε ένα να μου τρέχει διαφορετικά πράγματα;
Προτιμότερο είναι να το τρέχεις σαν να το εκτελείς κανονικά δηλαδή python my_module.py στην consola σου εναλλακτικά με διπλό klik αν έχεις το python.exe προεπιλεγμένο πρόγραμμα να σου ανοίγει τα .py
Είχα και εγώ ένα πρόβλημα με τον indle και δεν βρήκα λύση βρήκα μόνο αυτό
IDLE redirects standard output and input in various odd ways. Therefore, it not uncommon for something not to work in IDLE.
Τελευταία διόρθωση: 3 Μήνες 7 Ώρες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": scally
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.285 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου