1, Demand analysis
The three-level directory shall be able to realize the following requirements:
- Displays the root directory, which can be returned by entering the b character in any subdirectory
- Any subdirectory can return to the previous directory by entering the q character
- After the main directory enters the subdirectory, the system can print the subdirectory, enter the subdirectory or return it according to the specified print information
2, Code implementation
# Definition dictionary includes, country, state (province), city dic = {'China': {'Hebei': ('Shijiazhuang', 'Xingtai', 'Hengshui',), 'Beijing': ('Changping', 'Haidian', 'Chaoyang',), 'Shanxi': ('Taiyuan', 'Da Tong', 'Yuncheng',)}, 'U.S.A': {'New York Prefecture': ('New York City', 'Rochester', 'buffalo',), 'California': ('Los Angeles', 'Hollywood', 'Alhambra',), 'Pennsylvania': ('Philadelphia', 'bethlehem', 'Washington',)}, 'Australia': {'Victoria': ('Melbourne', 'Geelong', 'Bali di',), 'Western Australia': ('magyar', 'Perth', 'Freeman Tu',), 'South Australia': ('Adelaide', 'landlocked', 'Baroa'), }} # print(dic['China']['Hebei']) dic_dir = {1: "China", 2: "U.S.A", 3: "Australia", } # Define correspondence between country and serial number dic_dirCity = {1: ("Hebei", "Beijing", "Shanxi"), 2: ("New York Prefecture", "California", "Pennsylvania",), 3: ("Victoria", "Western Australia","South Australia",) }# Province (state) correspondence def Directory():#Define three level directory functions DirectoryPos = 0#Record current directory location while True: if DirectoryPos == 0: for temp in dic_dir: print(temp,":",dic_dir[temp])#Print root getCountry= int(input("Please Chonse The Country:"))#Conversion of input characters to int Type variables while getCountry<1 or getCountry>3:#Legitimacy judgment getCountry = int(input("Input Error Please Reinput:")) DirectoryPos +=1 if DirectoryPos == 1: num = 0 for temp in dic_dirCity[getCountry]: num += 1 print(num,":",temp)#Print subdirectory getProvince = input("Please Chonse The Province\nInupt q Is Return\nInput b Back To Main:") if getProvince == 'q' or getProvince == 'b':#Condition judgment, enter the lower directory or return DirectoryPos -= 1 else: DirectoryPos += 1 getProvince = int(getProvince) if DirectoryPos == 2: for temp in dic[dic_dir[getCountry]] [dic_dirCity[getCountry][getProvince-1]]:#Print subdirectory print(temp) getNum = input("Input q Is Return\nInput b Is Back To Main:") if getNum == 'q':#Conditional judgement DirectoryPos -= 1 if getNum == 'b': DirectoryPos =0 # print("The Game Is Over !") Directory()
The running result of the program is as follows:
This program has no special operating conditions. It can be used as long as it is copied and pasted to the version of PyCharm3.0 or above. It does not support the version of PyCharm3.0 or below. There are bug s in the validity judgment of the input conditions of this program that will not be handled temporarily due to time reasons. If there is time in the later stage, it will be updated in time. Interested friends can also try it on their own.