第一天python作业

1,多用户登录,3次锁定

#!/usr/bin/env  python
# -*- coding: UTF-8 -*-
# Author: Aaron Shen

import sys                  #导入模块
user = {'alex':'alex123','guest':'123'}                 #确定可用的用户名和密码
f = open('black.list','a+')                 #创建黑名单
f.close()                   #关闭文件
while True:                 #遍历循环
    match = 0                   #锁定匹配
    username = input('username:')                   #输入用户名
    f = open('black.list')                  #打开黑名单
    for line in f.readlines():                  #遍历所有行
        if username == line.strip('\n'):                    #如果用户名匹配
            print('The user has been locked')                   #打印
            match = 1                   #锁定
    f.close()                   #关闭文件
    if match == 1:                  #如果输入的用户名已锁定
        continue                #跳出此次循环,重新输入
    else:                   #否则
        if username in user.keys():                 #如果用户名存在
            for i in range(5):                  #遍历
                if i < 3:                   #遍历3次
                    password = input('password:')                   #输入密码
                    if password == user[username]:                  #密码正确
                        print('welcome to my system')                   #打印
                        sys.exit(0)                 #安全退出
                    else:                   #否则
                        print('\033[31;1mPassword error\033[0m')                    #打印失败
                else:                   #输入三次以后
                    print('You have tried 3 times, all failed, 88')                 #打印
                    f = open('black.list','a')                  #打开黑名单,开启追加功能
                    f.write('%s\n' %username)                  #写入相应用户名
                    f.close()                   #关闭文件
                    break                   #跳出此次循环,重新输入用户名
        else:                   #用户名不存在
            print('user does not exist.')                   #打印

 

2,多菜单联系,B回退到上一级目录,Q整体退出。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: Aaron Shen
import sys                  #导入模块,用于最后的安全退出
first_city = {
              '北京':{'西城区':{'西直门':['肯德基','麦当劳'],'动物园':['公园','服装市场']},
                        '东城区':{'东单':['DQ冰淇凌','八喜'],'三里屯':['酒吧','工体']},
                        '朝阳区':{'北辰':['鸟巢','水立方'],'国展':['CBD','大型商场']}},
              '上海':{'黄浦区':{'城隍庙':['书店','水煎包'],'黄埔一路':['赛百味','成都小吃']},
                        '长宁区':{'一街':['豪宅','服装店'],'二街':['肯德基','和路雪']},
                        '宝山区':{'101路':['乐器店','篮球场'],'202路':['酒吧','书店']}},
              '广州':{'天河区':{'一桥':['足球场','球衣店'],'二桥':['大型商场','酒吧']},
                        '越秀区':{'1区':['公园','中学'],'2q区':['链家','我爱我家']}}
              }                 #多菜单字典
flag = 1                    #退出标记,用于跳出多重循环
while True:                 #开始遍历
    if flag == 0:                   #如果标记触发
        break                   #跳出本层循环
    for city in enumerate(first_city.keys()):                   #循环出一级城市,用enumerate来标记数字次序
        print("%s:%s" %city)                    #打印数字:城市
    print("\033[33;1mEnter 'q' on exit \n\033[0m")                  #打印q则退出
    select_number = input('input city number:').strip()                 #用户输入对应数字,前后空格忽略
    if select_number == 'q':                    #如果输入是q
        print('quit')                   #打印quit
        break                   #退出整个循环
    elif select_number == '':                   #如果输入为空
        print('Please input.')                  #打印
        continue                    #跳过本次循环,重新输入
    elif int(select_number) >= len(first_city.keys()):                  #如果输入号码大于所存在的城市数量
        print('Error,try again')                    #打印
        continue                    #跳过本次循环,重新输入
    else:                   #否则
        sel_number = int(select_number)                 #输入数字化
        m = list(first_city.keys())                 #将一级城市形成列表
        print(m[sel_number])                    #打印出城市
    while True:                 #二层遍历
        if flag == 0:                   #如果标记触发
            break                   #跳出本次循环
        for area in enumerate(first_city[m[sel_number]].keys()):                    #循环出二级行政区,用enumerate来标记数字次序
            print("%s:%s" %area)                    #打印
        print("\033[33;1mEnter the 'q' exit, enter the 'b' on the back of the first menu\n\033[0m")#                    #打印
        select_number2 = input('input area number:').strip()                    #用户输入对应数字,前后空格忽略
        if select_number2 == 'q':                   #如果输入是q
            print('quit')                   #打印
            flag = 0                    #触发退出标记
            break                   #退出本次循环,返回到上级循环
        if select_number2 == 'b':                   #如果输入是b
            break                   #退出本次循环,返回到上级循环
        elif select_number2 == '':                  #如果输入为空
            print('Please input.')                  #打印
            continue                    #跳过本次循环,重新输入
        elif int(select_number2) >= len(first_city[m[sel_number]].keys()):                  #如果输入号码大于所存在的行政区数量
            print('Error,try again')                    #打印
            continue                    #跳过本次循环,重新输入
        else:                   #否则
            sel_number2 = int(select_number2)                   #输入数字化
            m2 = list(first_city[m[sel_number]].keys())                 #将二级行政区形成列表
            print(m2[sel_number2])                  #打印
        while True:                 #三层遍历
            for street in enumerate(first_city[m[sel_number]][m2[sel_number2]].keys()):                 #循环出三级街道社区,用enumerate来标记数字次序
                print("%s:%s" %street)                  #打印
            print("\033[33;1mEnter the 'q' exit, enter the 'b' on the back of the first menu\n\033[0m")                 #打印
            select_number3 = input('input street number:').strip()                  #用户输入对应数字,前后空格忽略
            if select_number3 == 'q':                   #如果输入是q
                print('quit')                   #打印
                flag = 0                    #触发退出标记
                break                   #退出本次循环,返回到上级循环
            elif select_number3 == 'b':                 #如果输入是b
                break                   #退出本次循环,返回到上级循环
            elif select_number3 == '':                  #如果输入为空
                print('Please input.')                  #打印
                continue                    #跳过本次循环,重新输入
            elif int(select_number3) >= len(first_city[m[sel_number]][m2[sel_number2]].keys()):                 #如果输入号码大于所存在的社区街道数量
                print('Error,try again')                    #打印
                continue                    #跳过本次循环,重新输入
            else:                   #否则
                sel_number3 = int(select_number3)                   #输入数字化
                m3 = list(first_city[m[sel_number]][m2[sel_number2]].keys())                    #将三级社区街道形成列表
                print(first_city[m[sel_number]][m2[sel_number2]][m3[sel_number3]])                  #打印
                sys.exit(0)                 #安全退出

 

posted @ 2016-05-15 13:40  Aaron.shen  阅读(323)  评论(0编辑  收藏  举报