Changement de casse

Contenu du snippet

J'ai fait un petit programme en mode console pour un ami, qui renvoie dans un fichier texte toutes les possiblités de casse pour un même mot.

Par exemple pour "mot", on retournera (en colonne) : mot, moT, mOt, mOT, Mot, MoT, MOt, MOT.

J'utilise en fait du binaire pour savoir s'il faut mettre une majuscule ou non.
Pour la k-ième possibilité, on transforme k en binaire et on fait correspondre le 1 à une majuscule et 0 à la minuscule.

Source / Exemple :


#!/usr/bin/python
#-*-coding: utf-8 -*-
## by Linkid (François Magimel)
## Permet d'afficher les possibilités de casse pour un mot
## En mode console

import os

def main(mot):
	fichier = open("combinaison_casse.txt", 'w')
	nb = 2**len(mot)  ## nombre de mots possibles
	for i in range(0, nb):
		bi = bin(i)[2:]  ## de 0 à nb-1 en binaire
		nbi = len(bi)  ## nombre de caractères binaires
		mot_2 = "" ## mémoire du mot final
		for j in range(0, len(mot)):
			k = len(mot)-1-j  ## pour le mot : prendre le dernier caractère de mot, de len(mot)-1 à 0
			p = nbi-1-j  ## pour le binaire : prendre le dernier caractère de bi, peut être négatif
			if p >= 0 and bi[p] == "0":
				mot_3 = mot[k]
			elif p >= 0 and bi[p] == "1":
				mot_3 = str.upper(mot[k])  ## caractère en majuscule
			else:
				mot_3 = mot[k]
			mot_2 = mot_3 + mot_2
			
		#print mot_2 ## mot final
		fichier.write(mot_2 + '\n') ## écriture dans un fichier
	
	fichier.close()
	print "Il y a " + str(nb) + " possiblilité(s)"

if __name__ == '__main__':
	mot = raw_input("Salut ! Rentre ton mot de 8 lettres...\nTon mot : "); ## retoune un string
	main(str.lower(mot)) ## l'argument de main est un mot en minuscule

Conclusion :


J'ai décidé de mettre les possibilités dans un fichier texte pour éviter d'avoir une console remplie, mais pour les trop grands mots, le fichier texte devient un peu lourd.

Donc en amélioration possible, il serait bien de faire comme dans le terminal sous GNU/Linux avec une option more pour continuer à afficher, et taper q pour arreter. Ca permettrait de ne plus avoir le fichier texte et de tout afficher dans la console.
Surement à l'aide d'un while...

Merci pour vos commentaires.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.