FLask Python και replace()

Corona Borealis

Νεοφερμένος

Η Corona Borealis αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 16 μηνύματα.
Καλησπέρα σε όλους, σε μία εργασία πάνω σε εισαγωγικά ζητήματα του flask στο python, μεταξύ άλλων ζητείται να εφαρμοστεί η εφαρμογή αντικατάστασης ορισμένων χαρακτήρων.
Συγκεκριμένα η ασκηση ζητά να φτιάξουμε ενα dynamic route στο οποίο όποιο όλα τα a θα αντικαθίστανται από e
Εχω προσπαθήσει το παρακάτω αλλά δεν λειτουργεί.
Υπάρχει κάποιο πρόταση;

Python:
from flask import Flask

app=Flask(__name__)

@app.route("/profile/<name>")
def user(name):
  def replace_all(name, repl):
    name = name.lower()
    for c in " 'a', 'e' ":
        name = name.replace(c, repl)
return "<h1> User: {}</h1>".format(name)

if __name__=="__main__":
app.run()
 

gademis

Τιμώμενο Μέλος

Ο Δημήτρης αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 46 ετών και επαγγέλεται Η.Μ.Μ.Υ.. Έχει γράψει 1,634 μηνύματα.
Δεν χρειάζεται for loop το replace της python, βρίσκει όλα τα occurances μοναχό του


Python:
>>> name = "banana"
>>> name = name.replace("a","e")
>>> print(name)
benene
>>>
 

Corona Borealis

Νεοφερμένος

Η Corona Borealis αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 16 μηνύματα.
Δεν χρειάζεται for loop το replace της python, βρίσκει όλα τα occurances μοναχό του


Python:
>>> name = "banana"
>>> name = name.replace("a","e")
>>> print(name)
benene
>>>
Ευχαριστω πολύ για την αμεση απόκριση.
Το θέμα είναι ότι χρειάζεται να αντικαθίσταται οποιοδήποτε "a" υπάρχει σε οποιοδήποτε όνομα γραφεί μετά το /profile προς αναζτηση στο συγκεκριμένο site
 

gademis

Τιμώμενο Μέλος

Ο Δημήτρης αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 46 ετών και επαγγέλεται Η.Μ.Μ.Υ.. Έχει γράψει 1,634 μηνύματα.
Ωραία, πολύ καλύτερα με format.

Θυμάσαι οτι το indentation έχει σημασία στην python, εδώ το function user σου εξυπηρετεί το /user/<name> route οπότε το return πρέπει να είναι ενα tab πιο μεσα για να εμπίπτει μεσα στην user().

ορίζεις την replace_all αλλά δεν την καλείς πουθενά, μοιάζει σαν να ήθελες στο τέλος να γράψεις κάτι του τύπου
return "<h1> User: {}</h1>".format(replace_all(name)). Αυτό θα σου καλούσε την replace_all για να κάνεις το replace.Αν σε μπερδεύει που ειναι ολο σε μια γραμμή το παραπάνω είναι ουσιαστικά ισοδύναμο με:

Python:
replaced_name = replace_all(name)
HTML_to_return = "<h1> User: {}</h1>".format(replaced_name)
return HTML_to_return


H ίδια η replace_all δεν κάνει καμία αλλαγή στις παραμέτρους της (λέω ψέμματα, αλλά υπέθεσε οτι δε κανει για τωρα) και ο πιο απλός τρόπος ειναι να κανεις return το αλλαγμένο όνομα στο τέλος του κώδικα προσθέτοντας το return name. Από εκει και πέρα θα μπορεις να γυρίσεις την τιμη της κανοντας name = replace_all(name)

Τέλος όπως αναφέρω πιο πανω, δεν χρειάζεται να κάνεις λούπα για κάθε a που αντικαθιστάς.

άρα έχουμε μια replace_all που είναι καπως έτσι:
Python:
  def replace_all(name):
    name = name.lower()
    name = name.replace("a","e")
    return name
Την οποία πρέπει να καλέσεις στο τέλος και το αποτέλεσμά της να κάνεις return.

Δες το άλλη μία και μη φοβηθείς να βαλεις prints όπου μπερδεύεις τι κανει. Είναι μέχρι να σου κανει click μετά είναι εύκολο
 

Corona Borealis

Νεοφερμένος

Η Corona Borealis αυτή τη στιγμή δεν είναι συνδεδεμένη. Έχει γράψει 16 μηνύματα.
Χμ, εξακολουθεί να μην λειτουργεί...
Εμφανίζεται το όνομα αλλά δεν γίνεται η ατικατασταση
 

vassilis498

Διακεκριμένο μέλος

Ο vassilis498 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 7,079 μηνύματα.
αν το νόημα της άσκησης δεν είναι να μάθετε closures ή/και scopes μεταβλητών και δε σου ζητείται να ορίσεις τη replace_all εκεί μέσα συγκεκριμένα θα σου λεγα να την αποφύγεις, ή έστω να την ορίσεις κάπου απ' έξω τώρα μπερδεύεσαι άδικα.
 

Χρήστες Βρείτε παρόμοια

Top