Как выйти из программы, если в файле созданы все числа

#python-3.x #python-2.7

#python-3.x #python-2.7

Вопрос:

У меня есть пустой текстовый файл, в который мне нужно ввести 4-значный message_code вместе с однозначными числами от 0 до 9 / A-Z в конце. Таким образом, у меня может быть 36 уникальных комбинаций для каждого message_code.

Мой код будет записывать эти случайные цифры одну за другой в конце 4-значного message_code, но когда все 36 комбинаций исчерпаны, цикл не прерывается, он переходит в бесконечный режим. Я хочу выйти из программы с некоторым сообщением конечному пользователю, чтобы ввести какой-либо другой символ, кроме 0-9 или A-Z.

Фрагмент кода:

 import random
import string
def checkInput(prompt):
    while True:
        try:
            a = input(prompt)
        except ValueError:
            print ("Sorry, I didn't understand that")
            continue
        if not a.strip():
            print ("Whitespaces encountered, please enter proper value.")
            continue
        else:
            break
    return a

def addnew():
    count=int(input("How many new messagecode you want to create? "))
    for m in range(0,count):
        Mesgcode = checkInput("Enter the mesgcode")
        Rkey = random.choice(string.ascii_uppercase string.digits)
        HCode = Mesgcode Rkey
        with open('Host.txt') as f:
            z=f.read()

        def new():
            Rkey = random.choice(string.ascii_uppercase string.digits)
            HCode=Mesgcode Rkey
            return HCode

        while HCode in z:
            HCode = new()
        f1=open('Host.txt', "a")
        f1.write("New code added %srn" % HCode)
        f1.close()
        m =1

addnew()
  

The Host.txt файл будет выглядеть следующим образом:

 ABCD0
ABCD1
ABCD2
.
.
.
ABCD9
ABCDA
.
.
.
ABCDZ
  

Когда все случайные цифры будут использованы, пользователь должен получить распечатанное сообщение Please use different character except 0-9/A-Z, all usage exhausted
и программа должна завершиться корректно.

Ответ №1:

Я думаю, вы можете использовать list or dictionary для сохранения возможного значения. При получении значения удалите его из своего list или dictionary . Завершите работу с этой программой, если list или dictionary пусто.

Кроме того: Лучше использовать with open вне цикла, иначе ваш файл открывается и закрывается каждый раз, когда вы входите в цикл.