Mon programme génère une chaîne aléatoire avec un nombre aléatoire de lettres de 10 à 20.
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
sys.stdout.write(e)
Le programme imprimera une chaîne aléatoire comme «wwwweewwqqrrrrwwqqeeqqww». Comment pourrais-je stocker cette chaîne en tant que variable?
6 réponses
Stockez-le dans une variable au lieu d'écrire:
e=''
for t in range (0,y):
w=random.randint(0,3)
e += x[w]
e
est une variable vide et à chaque fois que vous y ajoutez la valeur x[w]
.
Je recommanderais également d'utiliser print()
sur sys.stdout.write(e)
car vous n'avez pas besoin d'importations supplémentaires, telles que sys
, print()
est intégré.
Dans ce cas, puis-je suggérer l'utilisation d'un tuple pour x=['q','w','e','r']
car ils sont plus rapides. Donc: x=('q','w','e','r'1)
Mais si vous devez modifier cela plus tard, ce n'est pas une option à votre disposition (car ils sont immuables).
def program():
import random
x=['q','w','e','r']
y=random.randint(10,20)
mystr=''
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
mystr=mystr+e
Vous pouvez remplacer votre boucle par une compréhension de liste et utiliser join()
:
e = ''.join([random.choice(x) for _ in range(0, y)])
Production:
qwewwwereeeqeqww
Si vous le souhaitez, vous pouvez demander à program()
de renvoyer la variable de sortie comme suit:
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
output = ''
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
output+=e
# The print is stored in 'output'
# Return the output
return output
result = program()
Quelque chose comme (je n'ai pas testé le programme, ça devrait marcher ... les derniers mots célèbres).
# imports at start of file, not in def
import random
import sys
# I would never call a def 'program', kind of generic name, avoid
def my_program(): # camel case, PEP-8
x=['q','w','e','r']
z='' # initialize result as an empty string
for _ in range (0, random.randint(10,20)):
z+=x[random.randint(0,3)] # add a letter to string z
return z
"_" est souvent utilisé pour une variable jetable, voir A quoi sert la variable de soulignement unique" _ "en Python? Dans ce cas, le _ n'est utilisé nulle part.
Un moyen simple de le faire serait de créer une nouvelle variable de chaîne et d'utiliser simplement l'opérateur +=
pour concaténer chaque caractère sur une nouvelle chaîne. Votre code pourrait être
def program():
import random
import sys
x=['q','w','e','r']
y=random.randint(10,20)
z = '';
for t in range (0,y):
w=random.randint(0,3)
e=x[w]
z += e;
Ce code ajoute simplement chaque caractère à une variable de chaîne z
dans votre boucle for, et cette valeur de chaîne doit être stockée dans z
.
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.