Python s12 Day1 笔记及作业

作业一:

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

python3代码:

# -*- coding:utf-8 -*-
input_name = input("Please input your user name : ").strip()
user_lockfile = open("user_lockfile.txt","r+")
user_file = open("user_file.txt")
user_list = user_file.readlines()

for i in range(3):
    input_passwd = input("Please input your password : ").strip()
    #查找被锁用户列表判断是否被锁住
    if input_name in [locked_user.rstrip() for locked_user in user_lockfile.readlines()]:
        print("Sorry, your account is locked!")
        user_file.close()
        user_lockfile.close()
        exit(1)
    else: #没有被锁住,查找用户列表
        if input_name not in [user_record.split()[0] for user_record in user_list]:
            print("Sorry, your account doesn‘t exist!")
            user_file.close()
            user_lockfile.close()
            exit(2)
        else: #用户存在,判断密码是否正确,正确跳出循环
            input_record = input_name + ‘ ‘ + input_passwd
#            print(input_record)
#            print(user_file.tell()) #记录当前游标位置
            if input_record in [user_record.rstrip() for user_record in user_list]:
                print("Logging in...")
                user_file.close()
                user_lockfile.close()
                exit(0)
            else:#密码不正确,判断错误次数,错误三次(i=2)将用户锁住
                if i == 2:
                    user_lockfile.write(input_name + "\n")
                    print("Sorry, you‘re locked!")
                    user_file.close()
                    user_lockfile.close()
                    exit(3)
                else:#剩余机会数 2-i
                    chance = 2 - i
                    print("Wrong password! %s chances left!" % chance)

userfile:

wayne 123
root shroot123

user_lockfile:

kevin
jamesroot

作业二:

  • 三级菜单
  • 可以此选择进入各子菜单
  • 所需知识点:列表、字典

python3代码:

# -*- coding:utf-8 -*-
import time
import os

DICT_PRO = {"北京":["大兴区","朝阳区","海淀区","东城区","西城区","丰台区","通州区"],
            "上海":["静安区","徐汇区","浦东新区","虹口区","普陀区","长宁区","宝山区","嘉定区","闵行区"],
            "山东省":["烟台市","济南市","青岛市"],
            "辽宁省":["大连市","沈阳市"],
            "香港":None,
            "澳门":None,
            "台湾":["台北市"]}
DICT_CIT = {"烟台市":["莱山区","芝罘区","福山区","龙口市"],
            "青岛市":["李沧区","台东区","崂山区"],
            "济南市":["市中区","天桥区","历城区"],
            "大连市":["中山区","甘井子区","沙河口区","高新园区"],
            "沈阳市":["皇姑区","大东区","和平区","铁西区"]}

#将输入的数字转化成整数形式
def input_verify(choice):
    if str.isdigit(choice):
        choice = int(choice)
    return choice

#输出框架
def framework_show(province=‘‘, city=‘‘, district=‘‘):
    os.system(‘cls‘)   #清屏
    print(‘‘‘
######################################################
*                                                    *
*          欢迎进入省市区查询系统                    *
*                                                    *
######################################################
*                                                    *
*          省份 : %s  城市 : %s  区 : %s
*                                                    *
######################################################
    ‘‘‘ % (province, city, district))

#展示欢迎界面
def welcome_show(province=‘‘, city=‘‘, district=‘‘):
    print(‘‘‘
######################################################
*                                                    *
*            Welcome to %s %s %s
*                                                    *
######################################################
    ‘‘‘ % (province, city, district))

#从省份字典,提取省份以及直辖市展示
def province_show():
    global DICT_PRO
    global P_NAME
    global C_NAME
    global D_NAME
    global C_FLAG

    province_dict = {}
    #遍历省份字典,提取省份并添加编号输出展示
    for (n, p) in enumerate(DICT_PRO, 1):
        province_dict[n] = p
        print(‘%d.%s‘ % (n, p) + ‘\t‘, end=‘‘)
        if(n % 4 == 0):
            print()
    print(‘\n================================================================‘)
    print(‘q : Exit‘)
    province_input = input(‘请输入省份编号或省份名称 : ‘)
    province_input = input_verify(province_input)
    if province_input == ‘q‘:
        exit(0)
    elif province_input in province_dict.keys(): #输入的是数字编号,对全局省份赋值
        P_NAME = province_dict[province_input]
    elif province_input in province_dict.values():#输入的是省份名称
        P_NAME = province_input
    else:
        P_NAME = ‘‘    #其他输入,提示输入错误
        print("Wrong Input!")
        time.sleep(2)

    while P_NAME:
        framework_show(P_NAME, C_NAME, D_NAME)  #调用框架
        if type(DICT_PRO[P_NAME]) is list:  #若省份后有城市列表,调用城市展示函数
            city_show(P_NAME)
            if C_FLAG == ‘b‘:
                break
        else:  #若省份后无城市,直接调用展示函数
            welcome_show(P_NAME)
            time.sleep(5)
            P_NAME = ‘‘
            break

#传入省份,展示城市列表
def city_show(province):
    global DICT_PRO
    global DICT_CIT
    global P_NAME
    global C_NAME
    global D_NAME
    global C_FLAG
    global D_FLAG

    city_list = DICT_PRO[province]
    city_dict = {}
    for (n, c) in enumerate(city_list, 1):
        city_dict[n] = c
        print(‘%d.%s‘ % (n, c) + ‘\t‘, end=‘‘)
        if (n % 4 == 0):
            print()
    print(‘\n================================================================‘)
    print(‘q : Exit    b : Back‘)
    city_input = input(‘请输入城市编号或城市名称:‘)
    city_input = input_verify(city_input)

    if city_input == ‘q‘:
        exit(0)
    elif city_input == ‘b‘:
        (P_NAME, C_NAME, C_FLAG) = (‘‘, ‘‘, ‘b‘)
        return
    elif city_input in city_dict.keys():
        city_name = city_dict[city_input]
        (P_NAME, C_NAME, C_FLAG) = (province, city_name, ‘‘)
    elif city_input in city_dict.values():
        city_name = city_input
        (P_NAME, C_NAME, C_FLAG) = (province, city_name, ‘‘)
    else:
        print("Wrong Input!")
        C_NAME = ‘‘
        time.sleep(2)

    while C_NAME:
        framework_show(P_NAME, C_NAME, D_NAME)
        if C_NAME in DICT_CIT.keys():  #若所选城市在城市及区字典中有记录
            district_show(P_NAME, C_NAME) #调用城区展示函数展示城区
            if D_FLAG == ‘b‘:
                break
        else:
            welcome_show(P_NAME, C_NAME)  #若所选城市在城区字典中无记录,调用展示函数
            time.sleep(5)
            C_NAME = ‘‘  #展示后将城市清空,回到选择城市界面
            break

#传入省份和城市,展示相关地区
def district_show(province, city):
    global DICT_PRO
    global DICT_CIT
    global P_NAME
    global C_NAME
    global D_NAME
    global D_FLAG

    district_dict = {}
    district_list = DICT_CIT[city]
    for (n, d) in enumerate(district_list, 1):
        district_dict[n] = d
        print(‘%d.%s‘ % (n, d) + ‘\t‘, end=‘‘)
        if (n % 4 == 0):
            print()
    print(‘\n================================================================‘)
    print(‘q : Exit    b : Back‘)

    district_input = input(‘请输入区名或编号:‘)
    district_input = input_verify(district_input)

    if district_input == ‘q‘:
        exit(0)
    elif district_input == ‘b‘:
        (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, ‘‘, ‘‘, ‘b‘)
        return
    elif district_input in district_dict.keys():
        district_name = district_dict[district_input]
        (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,‘‘)
    elif district_input in district_dict.values():
        district_name = district_input
        (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, district_name,‘‘)
    else:
        (P_NAME, C_NAME, D_NAME, D_FLAG) = (province, city, ‘‘, ‘‘)
        district_name = ‘‘
        print("Wrong Input!")
        time.sleep(2)

    if district_name:      #若选中了城区,调用展示函数
        welcome_show(P_NAME, C_NAME, D_NAME)
        time.sleep(5)
        D_NAME = ‘‘  #展示后将城区清空,将回到城区选择界面

P_NAME=‘‘   #省份全局变量
C_NAME=‘‘   #城市全局变量
D_NAME=‘‘   #城区全局变量
C_FLAG=‘‘   #城市选择页面输入b选项
D_FLAG=‘‘   #城区选择页面输入b选项

while True:
    framework_show(P_NAME, C_NAME, D_NAME)
    province_show()
时间: 2024-07-30 19:13:07

Python s12 Day1 笔记及作业的相关文章

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

python s12 day3

python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import copy # ######### 数字.字符串 ######### n1 = 123 # n1 = "i am alex age 10" print(id(n1)) # ## 赋值 ## n2 = n1 print(id(n2)) # ## 浅拷贝 ## n2 = cop

python s12 day2

python s12 day2 入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var,type,dir 一.整数 如: 18.73.84 每一个整数都具备如下功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number o

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

python学习—-day1.计算机基础

python学习-day1.计算机基础 一.计算机系统的硬件组成部分:电脑的三大件:内存.硬盘.cpu 二.编程语言的作用及操作系统和硬件的关系:答:1.编程语言的作用是与计算机沟通,并且可以用编程语言在操作系统上写程序,从而达到开发应用软件的目的2.操作系统是用来管理计算机硬件资源的 三.应用程序->操作系统->硬件:在硬件之上装操作系统,在操作系统上装应用程序1.应用程序是指程序员开发的可运行的软件2.操作系统的目的是用来管理计算机硬件的3.硬件:cpu.硬盘.内存.键盘.鼠标统称为电脑硬

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507