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

while loop Python 3


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

Δημοσ.
from random import randint

x=int(input(''))

if x==1:

    print('You selected to play vs the CPU,A RANDOM CODE HAS BEEN ADDED PLEASE MAKE YOUR FIRST ATTEMPT' )

    print('NOTE!1 blue , 2  green , 3  yellow , 4  white , 5 pink ,6 black')

    k = randint (1,6)

    l = randint (1,6)

    m = randint (1,6)

    n = randint (1,6)

    cod=[]

    cod.append(k)

    cod.append(l)

    cod.append(m)

    cod.append(n)

    for o in range (1,9):

        print('ATTEMPT' , o , )

        egw = str(input(''))

        while len(egw) != 4 :

            print('ENTER ONLY 4 DIGITS ')

            print('ATTEMPT' , o , )

            egw=str(input(''))

            continue

        while  int(egw[0]) > 6 or int(egw[1])> 6 or int(egw[2])>6 or int(egw[3])>6:

            print('PLEASE ENTER DIGITS RAGNING FROM 1-6')

            print('ATTEMPT', o ,)

            egw=str(input(''))

            continue

 

 

 

ειναι ενας τυχαιος κωδικος καιτ το προγραμμα προσπαθει να τον σπασει - δεν ειναι οκοκληρωμενο - σε καθε προσπαθεια -ελεγχει αν ειναι 4 ψηφιο ή αν εχει μονο 1  2 3 4 5 6 (θα ηθελα να βλεπει αν εχει και γραμματα αλλα δεν περιαζει ) το θεμα μ ειναι οτι αφου μπει στο 2ο while δεν ελεγχει παλι αν το len=4 το πρωτο while...

attempt 1 

1238

attempt 1

please enter digits...

123132 και προχωραει χωρις να δει το απο πανω στο

attempt2

Δημοσ.

Βάλε τον κώδικα σου code tags (ειδικά στην python είναι πολύ σημαντικό) και διατύπωσε με περισσότερη σαφήνεια την ερώτηση σου.

 

Γιατί έχεις input στην αρχή και μετά κάνεις έλεγχο για 1;;; Άλλαξε το σε while True!!!Που κολλάει το 1 blue, 2 green κλπ;;

 

Η λογική σου είναι εντελώς λάθος. Μέσα στο while πάρε το input, δες αν ειναι ψηφια (με την isdigit()) και αν είναι δες αν έχουν len(αυτό που έδωσες)==4.

 

 

Χάθηκα στη μετάφραση :wacko:

Δημοσ.

Αν βλέπεις ότι χρειάζεσαι μέρος του κώδικα σε πάνω από ένα σημεία, καλό θα ήταν να τον βάλεις μέσα σε μια συνάρτηση και να τον καλείς όπου χρειάζεται. Σ' αυτή τη περίπτωση, αν βάλεις την πρώτη while μέσα σε συνάρτηση θα μπορέσεις πανεύκολα να τη χρησιμοποιήσεις και μέσα στη δεύτερη while.

Δημοσ.

Βάλε τον κώδικα σου code tags (ειδικά στην python είναι πολύ σημαντικό) και διατύπωσε με περισσότερη σαφήνεια την ερώτηση σου.

 

Γιατί έχεις input στην αρχή και μετά κάνεις έλεγχο για 1;;; Άλλαξε το σε while True!!!Που κολλάει το 1 blue, 2 green κλπ;;

 

Η λογική σου είναι εντελώς λάθος. Μέσα στο while πάρε το input, δες αν ειναι ψηφια (με την isdigit()) και αν είναι δες αν έχουν len(αυτό που έδωσες)==4.

 

 

Χάθηκα στη μετάφραση :wacko:

ειναι προγραμμα που τσεκαρει κατι προηγουμενο πιο πριν γιαυτο εχω την ινπυτ εξω

εχεις δικιο για τα tags

Δημοσ.

ειναι προγραμμα που τσεκαρει κατι προηγουμενο πιο πριν γιαυτο εχω την ινπυτ εξω

εχεις δικιο για τα tags

 

Νομίζω όμως ότι έχεις πάρει με λάθος λογική το πρόγραμμα. Ας πούμε για να κάνεις αυτό που (υποθέτω) ότι θες στην python πραγματικά είναι πολύ απλό. Ας πούμε θες να ψάξεις έναν 4ψήφιο που τον ξέρεις απο πρίν μπορείς με κάτι σαν αυτό

from random import randint
code = 9854
while True:
    kodikos = randint(1000,10000)
    if kodikos == code:
            print("Άτσα το βρήκες ο κωδικός είναι ",kodikos)
            break
    else:
        print("Ψάχνω....",end="\r")

Έτσι ξέρεις ότι θα κάνει generate μόνο 4φήφιους αριθμούς (γιατί λες DIGITS==ψηφία). Αν θες αλφαρηθμιτικό θα κάνεις κάτι ανάλογο με list comprehension και τη βιβλιοθήκη string για να παράξεις γράμματα και αριθμούς.

Δημοσ.

Βάλε τον κώδικα σου code tags (ειδικά στην python είναι πολύ σημαντικό) και διατύπωσε με περισσότερη σαφήνεια την ερώτηση σου.

 

Γιατί έχεις input στην αρχή και μετά κάνεις έλεγχο για 1;;; Άλλαξε το σε while True!!!Που κολλάει το 1 blue, 2 green κλπ;;

 

Η λογική σου είναι εντελώς λάθος. Μέσα στο while πάρε το input, δες αν ειναι ψηφια (με την isdigit()) και αν είναι δες αν έχουν len(αυτό που έδωσες)==4.

 

 

Χάθηκα στη μετάφραση :wacko:

ειναι προγραμμα που τσεκαρει κατι προηγουμενο πιο πριν γιαυτο εχω την ινπυτ εξω

εχεις δικιο για τα tags

ευχαριστω αλλα για να ξαναπερασει απο το 1ο while αφου παει στο 2?

Νομίζω όμως ότι έχεις πάρει με λάθος λογική το πρόγραμμα. Ας πούμε για να κάνεις αυτό που (υποθέτω) ότι θες στην python πραγματικά είναι πολύ απλό. Ας πούμε θες να ψάξεις έναν 4ψήφιο που τον ξέρεις απο πρίν μπορείς με κάτι σαν αυτό

from random import randint
code = 9854
while True:
    kodikos = randint(1000,10000)
    if kodikos == code:
            print("Άτσα το βρήκες ο κωδικός είναι ",kodikos)
            break
    else:
        print("Ψάχνω....",end="\r")

Έτσι ξέρεις ότι θα κάνει generate μόνο 4φήφιους αριθμούς (γιατί λες DIGITS==ψηφία). Αν θες αλφαρηθμιτικό θα κάνεις κάτι ανάλογο με list comprehension και τη βιβλιοθήκη string για να παράξεις γράμματα και αριθμούς.

θελω ο κωδικος να εχει ΜΟΝΟ αριθμους απο το 1 εως το 6 γιαυτο το εκανα ετσι

Δημοσ.

θελω ο κωδικος να εχει ΜΟΝΟ αριθμους απο το 1 εως το 6 γιαυτο το εκανα ετσι

 

Ακόμη πιο εύκολο

codelist = [str(randint(1,6)) for i in range(1,5)]
kodikos = "".join(codelist)

έχεις 4 ψήφιους μέχρι το 6

Δημοσ.

Αν βλέπεις ότι χρειάζεσαι μέρος του κώδικα σε πάνω από ένα σημεία, καλό θα ήταν να τον βάλεις μέσα σε μια συνάρτηση και να τον καλείς όπου χρειάζεται. Σ' αυτή τη περίπτωση, αν βάλεις την πρώτη while μέσα σε συνάρτηση θα μπορέσεις πανεύκολα να τη χρησιμοποιήσεις και μέσα στη δεύτερη while.

ναι αλλα οχι για παντα . απλα αποφευγω το copy paste

Ακόμη πιο εύκολο

codelist = [str(randint(1,6)) for i in range(1,5)]
kodikos = "".join(codelist)

έχεις 4 ψήφιους μέχρι το 6

σωστο 

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

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

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

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

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

Σύνδεση

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

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