#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
вне цикла, иначе ваш файл открывается и закрывается каждый раз, когда вы входите в цикл.