如果文件创建了所有数字,如何退出程序

时间:2019-04-03 06:43:53

标签: python-3.x python-2.7

我有一个空白的文本文件,在该文件中,我需要输入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 并且程序应正常退出。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用listdictionary保存可能的值。获取值时,将其从listdictionary中删除。如果listdictionary为空,请退出此程序。

此外:最好在循环外使用with open,否则每次进入循环时文件都会打开和关闭。