2016-11-11 5 views
0

Python/Flask/HTMLPython/Flask/HTML und random random Länge Variablen Ausgabe

Code I unten hat zwei Dinge, die ich erreichen wollte:

1) Erzeugt eine Ausgabe Zufallslänge von zufällig gewählten, vorher definierte Liste von Variablen und zeigt es in HTML.

zum Beispiel (Ausgang):

Apfel Orange

Apfel

Apfel orange orange

Ich will nicht jedoch für Früchte in produzierte Ausgabe wiederholen, alles andere als es zu halten ist.

Deshalb möchte ich

"apple orange orange"

passiert

Wie verbieten, kann erreicht werden?

-Code unten:

app.py

from flask import Flask, render_template 
    import os 
    import random 

    app = Flask(__name__) 

    @app.route('/') 

def main(): 
    z=randint(1, 4) 
    Hash1="apple" 
    Hash2="orange" 
    Hash3="banana" 
    Hash4="watermelon" 
    fruits = [Hash1, Hash2,Hash3, Hash4] 
    a=[choice(fruits) for x in range(z)] 
    a=a 

    return render_template ('show.html', a=a) 

if __name__ == '__main__': 

    app.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080))) 

show.html

<html> 

    <title>App</title> 

    </head> 


    <body> 

    <h2>your fruits are {{ a }} </h2> 


    </body> 


    </html> 

Antwort

0

random.choice können ein Element zurück, die bereits vor der ausgewählt wurde. Um eindeutige Proben zurückzukehren, verwenden Sie random.sample:

... 
z = random.randint(1, len(fruits)) 
a = random.sample(fruits, z) 
return render_template('show.html', a=a) 
0

Sie können random.sample(population, k) verwenden, die Proben einer Population zufällig ohne Ersatz (das heißt nicht wiederholt).

a = random.sample(fruits, z)