在python中退出for循环

时间:2016-01-10 00:03:29

标签: python-3.x for-loop

 owner_details = open ("owner_details","r")
        for line in owner_details.readlines():
            if RegistrationNumber  in line:
              vehicles_speeding  = open ("vehicles_speeding","a")
              vehicles_speeding.write(line)
              vehicles_speeding.close()
              print ("Details for registration",[RegistrationNumber],"have been added to the 'vehicles_speeding' file")
              time.sleep(2)
              view = input("Match found for registration number in 'owner_details' file. Do you wish to view details \n:")
              view = view.upper()
              if view == "YES":
                  print (line)
            else:
                continue 


        owner_details = open ("owner_details","r")         
        for line in owner_details.readlines():
            if RegistrationNumber not in line:
                add= input("No match found for registration number do you want to add details for registration number ? \n:")
                add = add.upper()
            if add == "YES":
                name = input("enter vehicle owners full name \n:")
                adress = input ("Enter vehicle owners adress \n:")
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write("\n"+"NAME: ")
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write(name)
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write("ADDRESS: ")
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write(' '+adress)
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write("REGISTRATION NUMBER: ")
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write( ' '+RegistrationNumber+' ')
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write("SPEED: ")
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write("%2.f"%(Speed))
                vehicles_speeding = open ("vehicles_speeding","a")
                vehicles_speeding.write(' '+"m/s")
                vehicles_speeding.close()
                print ("Details have been added to file")

如果在第一个for循环中找到注册号,如何停止代码执行第二个for循环。

1 个答案:

答案 0 :(得分:0)

当您提出问题时,请提供更多详细信息。如果我理解你,那么你想要做的是在文件中搜索特定的数字;如果找到该号码,则打开另一个文件并进行记录,否则如果找不到该号码,则为用户提供将该号码添加到第一个文件的选项。您的代码非常低效:每次调用write()时都会打开相同的文件,而当您执行时,您将使用2个循环。试试这个:

owner_details = open("owner_details","r")
vehicles_speeding  = open ("vehicles_speeding","a")
for line in owner_details:
     if RegistrationNumber in line:
         vehicles_speeding.write(line)
         print ("Details for registration",RegistrationNumber,"have been added to the 'vehicles_speeding' file")
         view = input("Match found for registration number in 'owner_details' file.\nDo you wish to view details:").upper()
         if view.startswith("Y"):
            print(line)
         break 
else:      # this branch is run, if the FOR loop completed without breaking
    add = input("No match found for registration number.\nDo you want to add details for registration number?:").upper()
    if add.startswith("Y"):
        details = []
        name = input("enter vehicle owners full name: ")
        adress = input ("Enter vehicle owners address: ")
        details.append("\nNAME: ")   # Too many concatenations
        details.append(name)
        details.append("ADDRESS: ")   # append is cheaper 
        details.append(adress)       # than writing to the file every time
        details.append("REGISTRATION NUMBER: ")
        details.append(RegistrationNumber)
        details.append("SPEED: ")
        details.append("%2.f" %(Speed))  #not really sure what format u want
        details.append(" m/s")
        vehicles_speeding.write("".join(details))   # write everything at once
        print("Details have been added to file")

vehicles_speeding.close()   # now you can close them
owner_details.close()

为了提高效率,您可以为details分配固定数量的空间以防止其增长(类似details = [""]*9),然后填写空格。