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

Βοήθεια σε Python


Μετάβαση στην απάντηση Απαντήθηκε από archer100,

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

Δημοσ.

Καλησπέρα παιδία, θα χρειαστώ μια καθοδήγηση ώστε να καταφέρω να ολοκληρώσω μια εργασία. Προσπαθώ να φτιάξω το παιχνίδι πέτρα ψαλίδι χαρτί. Όλα καλά μέχρι εδώ και το έχω κάνει να τρέξει random seed.

Απλά η εκφώνηση μου ζητάει να δημιουργήσω μια αυθαίρετη γραμματοσειρά των γραμμάτων Π,Ψ,Χ, με μήκος 15-20 συμβόλων.. και κάθε φορά που θα είναι η σειρά του υπολογιστή το πρόγραμμα θα πρέπει να επιλέγει τον επόμενο χαρακτήρα της γραμματοσειράς. Εάν φτάσει στο τέλος να ξεκινάει από την αρχή.

 

Ξέρει κάποιος πως μπορώ να κάνω κάτι τέτοιο, έτσι ώστε να το ενσωματώσω στον κώδικα μου να δω αν λειτουργεί;

Έχω σπάσει το κεφάλι μου. Να υπογραμμίσω ότι είναι η πρώτη βδομάδα που μαθαίνω Python.

 

ευχαριστώ πολύ!

Δημοσ. (επεξεργασμένο)

Τι ακριβώς σε δυσκολεύει;

Λογικά αυτή η γραμματοσειρά είναι η προεπιλεγμένη επιλογή του υπολογιστή, αν κατάλαβα καλά.

Με random φτιάξε ένα πίνακα Π, Ψ,Χ, κράτα και σε μία μεταβλητή τη σειρά για τον επόμενο χαρακτήρα και τρέξε το. Και όταν φτάσει στο τέλος, ξεκινάς πάλι από την αρχή.

Επεξ/σία από Lanike71
Δημοσ.

    Καλησπέρα! Διαβάζοντας το νήμα και βλέποντας τον κώδικα σε Python του παιχνιδιού στο link που έδωσε ο φίλος πιο πάνω, είπα να το μετατρέψω σε C. Επομένως το παιχνίδι σε γλώσσα C θα μπορούσε να ‘ναι όπως παρακάτω. Δεν είναι απίθανο να υπάρχουν λάθη στον κώδικα. (Αν οι moderators βρίσκουν αυτό το post άσχετο με το θέμα του thread starter, παρακαλώ να το σβήσουν.)

/*
    rock.c - Rock-Paper-Scissors game
    Based on python code of the game from https://realpython.com/python-rock-paper-scissors/
    Kiriakos, 14/10/2022
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ROCK        0
#define PAPER       1
#define SCISSORS    2 

int main(void)
{
    unsigned int computer_action;
    int user_action;
    const char *possible_actions[] = {"rock", "paper", "scissors"};

    // Uses current time as seed to random generator
    srand(time(NULL));

    // Chooses a randon number from 0 to 2. 0 for rock, 1 for paper and 2 for scissors
    computer_action = rand() % 3;

    // Shows available choices, takes input and checks it
    printf("Enter a choice ('1' for rock, '2' for paper, '3' for scissors): ");
    scanf("%1u", &user_action);
    if(user_action < 1 || user_action > 3) {
        printf("Wrong input. Please try again.\n");
        exit(1);
    }
    user_action--;

    printf("You chose %s, computer chose %s.\n", possible_actions[user_action], possible_actions[computer_action]);

    // Compares input and shows suitable output 
    if(user_action == computer_action) {
        printf("Both players selected %s. It's a tie!\n", possible_actions[user_action]);
    }
    else if(user_action == ROCK) {
        if(computer_action == SCISSORS) {
            printf("Rock smashes scissors! You win!\n");          
        }
        else {
            printf("Paper covers rock! You lose.\n");
        }                
    }
    else if(user_action == PAPER) {
        if(computer_action == ROCK) {
            printf("Paper covers rock! You win!\n");            
        }
        else {
            printf("Scissors cuts paper! You lose.\n");
        }
    }
    else if(user_action == SCISSORS) {
        if(computer_action == PAPER) {
            printf("Scissors cuts paper! You win!\n");
        }
        else {
            printf("Rock smashes scissors! You lose.\n");
        }
    }

    return 0;
}

spacer.png

Δημοσ.

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

εγω εκανα σχεδον μηνα να μαθω while..

σωραιος! :)

Δημοσ.
Στις 14/10/2022 στις 9:33 ΠΜ, Lanike71 είπε

Τι ακριβώς σε δυσκολεύει;

Λογικά αυτή η γραμματοσειρά είναι η προεπιλεγμένη επιλογή του υπολογιστή, αν κατάλαβα καλά.

Με random φτιάξε ένα πίνακα Π, Ψ,Χ, κράτα και σε μία μεταβλητή τη σειρά για τον επόμενο χαρακτήρα και τρέξε το. Και όταν φτάσει στο τέλος, ξεκινάς πάλι από την αρχή.

Sorry άλλα είχα θέμα με τον λογαριασμό μου. Αυτό είναι που με δυσκολεύει. Δε πρέπει να κάνουμε χρήση του Random....

  • Moderators
Δημοσ.
23 λεπτά πριν, Donacgreece είπε

Sorry άλλα είχα θέμα με τον λογαριασμό μου. Αυτό είναι που με δυσκολεύει. Δε πρέπει να κάνουμε χρήση του Random....

Βάλε τις τιμές μόνος σου τότε. Όταν λες ότι "δεν πρέπει" να κάνεις χρήση του random τι εννοείς;

Δημοσ. (επεξεργασμένο)
1 ώρα πριν, Kercyn είπε

Βάλε τις τιμές μόνος σου τότε. Όταν λες ότι "δεν πρέπει" να κάνεις χρήση του random τι εννοείς;

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

 

rnd = 'ΠΨΧΧΠΨΠΧΨΧΠΨΨΧΠ'
computer = rnd[0]
if computer==len(rnd):
    computer = rnd[0]
computer = rnd[0+1] 

Εδώ είναι η εκφώνηση

Α) Για τις επιλογές του υπολογιστή, θα πρέπει να δημιουργηθεί μια αυθαίρετη συμβολοσειρά μήκους 15 – 20 συμβόλων, η οποία να περιέχει μόνο τους κεφαλαίους χαρακτήρες των επιλογών. Κάθε φορά που έρχεται η σειρά του υπολογιστή, το πρόγραμμα θα πρέπει να επιλέγει τον επόμενο χαρακτήρα της συμβολοσειράς. Επίσης, αν τα σύμβολα στη συμβολοσειρά εξαντληθούν, τότε η συμβολοσειρά θα προσπελαύνεται από την αρχή.

Επεξ/σία από Donacgreece
Δημοσ.
21 λεπτά πριν, Donacgreece είπε

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

 

rnd = 'ΠΨΧΧΠΨΠΧΨΧΠΨΨΧΠ'
computer = rnd[0]
if computer==len(rnd):
    computer = rnd[0]
computer = rnd[0+1] 

Εδώ είναι η εκφώνηση

Α) Για τις επιλογές του υπολογιστή, θα πρέπει να δημιουργηθεί μια αυθαίρετη συμβολοσειρά μήκους 15 – 20 συμβόλων, η οποία να περιέχει μόνο τους κεφαλαίους χαρακτήρες των επιλογών. Κάθε φορά που έρχεται η σειρά του υπολογιστή, το πρόγραμμα θα πρέπει να επιλέγει τον επόμενο χαρακτήρα της συμβολοσειράς. Επίσης, αν τα σύμβολα στη συμβολοσειρά εξαντληθούν, τότε η συμβολοσειρά θα προσπελαύνεται από την αρχή.

Η όλη διαδικασία θα τρέχει μέσα σε μία while λογικά, θα κρατάς με μετρητή σε ποιά θέση του πίνακα είναι και αν γίνει ίση με το μήκος πίνακα, θα γίνεται 0 στην επόμενη φορά.

Δημοσ.
3 λεπτά πριν, Lanike71 είπε

Η όλη διαδικασία θα τρέχει μέσα σε μία while λογικά, θα κρατάς με μετρητή σε ποιά θέση του πίνακα είναι και αν γίνει ίση με το μήκος πίνακα, θα γίνεται 0 στην επόμενη φορά.

την while τη τρεχω πιο πάνω και με την επιλογή του χρήστη. Θα πρέπει να βάλω κι άλλη?

Δημοσ.
2 λεπτά πριν, Donacgreece είπε

την while τη τρεχω πιο πάνω και με την επιλογή του χρήστη. Θα πρέπει να βάλω κι άλλη?

Δε σε κατάλαβα...Σε ποιό κώδικα λες; Δε βλέπω while.

Δημοσ.
Μόλις τώρα, Lanike71 είπε

Δε σε κατάλαβα...Σε ποιό κώδικα λες; Δε βλέπω while.

ποιο πάνω

 

while True:
    user = input("Διάλεξε (Π)έτρα, (Ψ)αλίδι, (Χ)αρτί: ") .upper()
    while user not in ["π", "Π", "ψ", "Ψ", "χ", "Χ"]:
        print("Έδωσες λάθος επιλογή, δώσε κάτι από (π,Π,ψ,Ψ,χ,Χ)")
        user = input("Διάλεξε (Π)έτρα, (Ψ)αλίδι, (Χ)αρτί: ")


# Επιλογή του υπολογιστή
    rnd = 'ΠΨΧΧΠΨΠΧΨΧΠΨΨΧΠ'
    computer = rnd[0]
    if computer == len(rnd):
        computer = rnd[0]

 

έτσι είμαι για την  ώρα αλλα δεν έχω καταφέρει να διαλέξει ο υπολογιστης το επόμενο γράμμα της γραμματοσειράς

Δημοσ.
2 λεπτά πριν, Donacgreece είπε

ποιο πάνω

 

while True:
    user = input("Διάλεξε (Π)έτρα, (Ψ)αλίδι, (Χ)αρτί: ") .upper()
    while user not in ["π", "Π", "ψ", "Ψ", "χ", "Χ"]:
        print("Έδωσες λάθος επιλογή, δώσε κάτι από (π,Π,ψ,Ψ,χ,Χ)")
        user = input("Διάλεξε (Π)έτρα, (Ψ)αλίδι, (Χ)αρτί: ")


# Επιλογή του υπολογιστή
    rnd = 'ΠΨΧΧΠΨΠΧΨΧΠΨΨΧΠ'
    computer = rnd[0]
    if computer == len(rnd):
        computer = rnd[0]

 

έτσι είμαι για την  ώρα αλλα δεν έχω καταφέρει να διαλέξει ο υπολογιστης το επόμενο γράμμα της γραμματοσειράς

Πού είναι η εντολή στον υπολογιστή "Πήγαινε στο επόμενο στοιχείο της λίστας";

Δημοσ.
Μόλις τώρα, Lanike71 είπε

Πού είναι η εντολή στον υπολογιστή "Πήγαινε στο επόμενο στοιχείο της λίστας";

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

Δημοσ.
1 λεπτό πριν, Donacgreece είπε

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

Γιατί δεν έχεις μία μεταβλητή που να κρατάει τη θέση; Μετά όλα θα είναι πιο εύκολα.

Επίσης δε βλέπω το λόγο η λίστα να είναι μέσα στη while.

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

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

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

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

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

Σύνδεση

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

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