我有一个空白的文本文件,在该文件中,我需要输入4位数字的message_code以及末尾从0-9 / A-Z的一位数字。因此,每个message_code可以有36个唯一的组合。
我的代码将在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 %s\r\n" % HCode)
f1.close()
m+=1
addnew()
Host.txt文件如下所示:
ABCD0
ABCD1
ABCD2
.
.
.
ABCD9
ABCDA
.
.
.
ABCDZ
所有随机数字都用完后,用户应该收到打印的消息Please use different character except 0-9/A-Z, all usage exhausted
并且程序应正常退出。
答案 0 :(得分:0)
我认为您可以使用list
或dictionary
保存可能的值。获取值时,将其从list
或dictionary
中删除。如果list
或dictionary
为空,请退出此程序。
此外:最好在循环外使用with open
,否则每次进入循环时文件都会打开和关闭。