Je dois écrire un code qui augmentera le numéro de billet à chaque fois qu'il est exécuté. Les chiffres doivent partir à partir de 0000, deuxième appel - 0001, troisième - 0002 ...
num=[0000]
num.append
print(f'* N° Ticket : {num}')
5 Réponses :
Utiliser le format pour spécifier le rembourrage, l'échantillon: ESSAYEZ CE P> print('\n'.join('* N° Ticket : {0:04}'.format(i) for i in range(1000)))
Vous pouvez faire: sortie: p>
merci j'ai résolu mon problème avec la création d'un fichier texte contenant 0000 et lisez-le et enregistrez-le comme variable, puis ajoutez 1 à la valeur et écrivez-le dans le fichier, puis lisez la valeur à nouveau et utilisez-la dans mon programme car mon problème était de savoir comment puis-je ajouter + 1 à la valeur chaque fois que je redémarre le programme pour l'utiliser à nouveau
def get_seq(seq):
return '%04d' % (int(seq) +1 )
seq = '0000'
seq = get_seq(seq)
print(seq)
If you need to increase digit number , just update in get_seq method. Update digit number instead of 4. Hope this will help you.
J'ai surpris que personne ait remarqué que "problème" décrit en question nécessite une économie d'état. em> Vous pouvez enregistrer le numéro de dernier ticket dans le fichier. P> donc, si fichier Quote de Docs : P>
Pour l'accès en lecture-écriture binaire, le mode Nous ouvrons un fichier en binaire plus, c'est pourquoi Si Lorsque nous travaillons avec le fichier en mode binaire, nous devons passer Pour calculer la longueur dans les octets Nous utilisons from pathlib import Path
FN = "ticket.dat"
with open(FN, "r+b" if Path(FN).exists() else "w+b") as f: # create file if it doesn't exist
tmp = f.read() # read content from file
last_ticket_number = int.from_bytes(tmp, "big") if tmp else 0
print(f"{last_ticket_number:04d}")
last_ticket_number += 1
f.seek(0) # go back to the start of file to rewrite it
f.write(last_ticket_number.to_bytes(last_ticket_number.bit_length() // 8 + 1, "big"))
ouvert (fn, "r + b" si chemin (fn) .exists () sinon "w + b") code> p> p>
fn code> contient le nom du fichier. chemin.exists () code> A> Vérifiez si le fichier existe déjà. P>
ticket.dat code> existe déjà, nous l'ouvrons avec le mode r + b code>, qui nous permettent de lire et d'écrire, mais Strong> Il lancera une erreur si le fichier n'existe pas. C'est pourquoi nous utiliserons w + b code> au cas où le fichier n'a pas encore été créé. P>
'W + B' code> s'ouvre et tronque le fichier à 0 octets. 'r + b' code> ouvre le fichier sans troncature. p>
blockQuote> li>
int.from_bytes (TMP, "gros") si TMP ailleurs 0 code> p> p>
f.fin () code> retournera octets code> . Pour les convertir en int code> Nous utilisons int.from_bytes () code> . p>
f.Read () code> ne renvoie rien (le fichier vient d'être créé) Nous définissons 0 code> comme numéro de premier ticket. p> li>
last_ticket_number.to_bytes (last_ticket_number.bit_length () // 8 + 1, "Big") Code> P>
octets code> dans f.write () code>. Nous utilisons INT.TO_BYTES () CODE> a>. Il nécessite des arguments longueur code>. P>
int.bit_length () code> . Il retourne la longueur de la variable int dans des bits. P> li>
ul> p>
Merci votre code travaillé pour moi et j'ai résolu le problème avec ce BA = Open ("C.txt", "R") Num = Ba.Read () Num = Int (Num) Num2 = Num + 1 Num2 = STR (NUM2) BA.CLOSE BA = OUVERT ('C.TXT', 'W') BA.WRITE (NUM2) BA.CLOSE BA = OPEN ("C.TXT", "R") NUM = BA.READ ( ) num = INT (NUM) BA.CLOSE code>
@Bilalzeghari, vous l'avez fait en utilisant le mode texte, ce qui est également possible.
J'ai créé un fichier nommé c.txt contenir 0000
Bienvenue dans le débordement de la pile! Vous avez déjà des réponses utiles, mais cela vous aiderait toujours à Modifier la question et clarifiez ce que vous avez besoin de l'aide exactement, que ce soit Il enregistre le nombre actuel à un fichier, incrémentation du nombre, ajout de zéros de premier plan (cause
0000 code> est invalide), etc. Lire Comment demander pour plus de pointeurs.