day05

1.完成下列操作

list = [“xiaoming”,”xiaohua”,”xiaohong”]
(1)循环遍历出列表的所有元素

# (1)循环遍历出列表的所有元素
list = ["xiaoming", "xiaohua", "xiaohong"]
for value in list:
    print(value)

运行结果:

xiaoming
xiaohua
xiaohong

(2)把列表list1[“jack”,”marry”,”tom”]中的每个元素逐一添加到list列表中

# (2)把列表list1[“jack”,”marry”,”tom”]中的每个元素逐一添加到list列表中
list = ["xiaoming", "xiaohua", "xiaohong"]
list1 = ["jack", "marry", "tom"]
list.extend(list1)
print(list)

或者:

# (2)把列表list1[“jack”,”marry”,”tom”]中的每个元素逐一添加到list列表中
list = ["xiaoming", "xiaohua", "xiaohong"]
list1 = ["jack", "marry", "tom"]
for value in list1:
    list.append(value)
print(list)

 运行结果:

['xiaoming', 'xiaohua', 'xiaohong', 'jack', 'marry', 'tom']

(3)查看list列表是否有“xiaohua”这个元素

# (3)查看list列表是否有“xiaohua”这个元素
list = ["xiaoming", "xiaohua", "xiaohong"]
if "xiaohua" in list:
    print("存在")
else:
    print("不存在")

(4)查看list列表的长度

# (4)查看list列表的长度
list = ["xiaoming", "xiaohua", "xiaohong"]
l = len(list)
print(l)

2.将下列两个列表合并,将合并后的列表升序并输出.

list1 = [1,3,4,5,7]
list2 = [0,66,8,9]

# 2.将下列两个列表合并,将合并后的列表升序并输出.
list1 = [1, 3, 4, 5, 7]
list2 = [0, 66, 8, 9]
ret = list1 + list2
ret.sort(reverse=False)
print(ret)

或者:

# 2.将下列两个列表合并,将合并后的列表升序并输出.
list1 = [1, 3, 4, 5, 7]
list2 = [0, 66, 8, 9]
list1.extend(list2)
list1.sort(reverse=False)
print(list1)

运行结果:

[0, 1, 3, 4, 5, 7, 8, 9, 66]

3.使用字典来存储一个人的信息(姓名、年龄[数字]、学号),

这些信息来自键盘的输入,储存完输出至终端.

# 3.使用字典来存储一个人的信息(姓名、年龄[数字]、学号),
# 这些信息来自键盘的输入,储存完输出至终端.
my_dict = {}
my_dict["name"] = input("请输入您的姓名:")
my_dict["age"] = int(input("请输入您的年龄:"))
my_dict["no"] = input("请输入您的学号:")
print(my_dict)

4.有下列字典dict1,查找值为“itcast”对应的key并输出到终端.(结果应该是输出school)

dict1={“school”:“itcast”,“date”:2017,”address”:“beijing”}

# 4.有下列字典dict1,查找值为“itcast”对应的key并输出到终端.(结果应该是输出school)
# dict1={“school”:“itcast”,“date”:2017,”address”:“beijing”}
dict1 = {"school": "itcast", "date": 2017, "address": "beijing"}
for i in dict1.keys():
    if dict1[i] == "itcast":
        print(i)

5.完成字符串的逆序以及统计

  • 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
  • 打印出字符串长度
  • 使用切片逆序打印出字符串
  • 统计输入的字符串中不同字符的个数,使用字典存储,并打印出来
# 5.完成字符串的逆序以及统计
# 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
# 打印出字符串长度
# 使用切片逆序打印出字符串
# 统计输入的字符串中不同字符的个数,使用字典存储,并打印出来
while True:
    # 获取键盘输入
    str_input = input("请任意输入一个字符串(长1-31):")
    # 测试长度:
    if len(str_input)<1 or len(str_input)>31:
        print("长度超出限制,请重新输入")
        continue

    # 统计字符个数的字典
    count_dict = {}
    for c in str_input:
        # 如果有,则将其原来的值+1
        if c in count_dict:
            count_dict[c] += 1
        # 如果没有,则新增加这个键值对值设为1
        else:
             count_dict[c] = 1
    # 打印其长度并逆序打印字符串
    print("您输入的字符串%s
"%str_input,
            "长度:%d
"%len(str_input),
            "逆序后为:%s
"%str_input[::-1],
            "字符统计结果:",count_dict
         )

运行结果:

请任意输入一个字符串(长1-31):dsfsdghbfhdfh
您输入的字符串dsfsdghbfhdfh
 长度:13
 逆序后为:hfdhfbhgdsfsd
 字符统计结果: {'d': 3, 'f': 3, 'b': 1, 'g': 1, 'h': 3, 's': 2}
请任意输入一个字符串(长1-31):

6.字符翻译程序

  • 查看笔记本键盘1-9还有0号键其上方的字符,要求用户输入"1",那么输出"!",输入"2",那么输出"@",以此类推

  • 用字典完成这个任务

  • 用户如果输入的字符长度超过1或者是除数字以外其他字符,提示"未收录该字符的含义,请重新输入"​

# 6.字符翻译程序
# 查看笔记本键盘1-9还有0号键其上方的字符,要求用户输入"1",那么输出"!",输入"2",那么输出"@",以此类推
# 用字典完成这个任务
# 用户如果输入的字符长度超过1或者是除数字以外其他字符,提示"未收录该字符的含义,请重新输入"​
# 字符对应的字典
char_dict = {"1":"!", "2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")"}
while True:
    cmd = input("请输入命令:")
    # 如果输入的是"0123456789"中的数字才执行
    if cmd in "0123456789" and len(cmd) == 1:
        print("键盘中%s号键对应的符号是%s"%(cmd,char_dict[cmd]))
    elif cmd == "quit":
        print("谢谢使用")
        break
    else:
        print("未识别的命令")

运行结果:

请输入命令:1
键盘中1号键对应的符号是!
请输入命令:2
键盘中2号键对应的符号是@
请输入命令:6
键盘中6号键对应的符号是^
请输入命令:

7.用户注册登录系统V2.0

  • 设计一个程序

  • 要求用户可以实现登录、注册、注销登录等功能

  • 用户的用户名(6-20)、密码(8-20)、昵称、年龄信息保存到字典中

  • 将每个已注册的用户保存到列表中,即上将一步的字典保存到列表中

  • 维护用户的登录状态,每次只能有一个用户处于登录状态,直到选择注销登录

  • 如果不选择退出系统,该程序应当一直运行

    提示:

    • 维护用户登录:用一个变量如 loginUser去记录一个已登录用户的用户名,

    • 如果注销登录或者未登录状态,那么就把loginUser的值设为False,

    • 或者其他,每次判断loginUser就能得知当前是否有用户已经登录​

loginUser = False
user_list = [{"name": "系统管理员", "username": "admin", "passwd": "123456"}]
while True:
    print("      python攻城狮系统V6.0")
    if not loginUser:
        print("1.登录")
    else:
        print("1.登出")
    print("2.注册新用户")
    print("3.查看所有已注册用户")
    print("4.管理员身份")
    print("5.查看当前登录用户")
    print("6.退出系统")

    cmd = input("命令:")
    # 登录登出管理
    if cmd == "1":
        # 如果是以登录状态,则询问是否注销登录
        if loginUser:
            yn = input("确认注销登录(y/n)")
            if yn == "y":
                print("%s注销登录成功" % loginUser["name"])
                loginUser = False
                continue

        # 如果是为登录状态,则进行登录
        else:
            username = input("请输入用户名:")
            passwd = input("请输入密码:")
            login = None  # 判断输入的用户是否存在
            for user in user_list:
                # 判断输入的用户是否存在,以及密码是否正确
                if user["username"] == username and user["passwd"] == passwd:
                    login = user
            # 如果存在,且密码校验成功,则提示登录成功,并赋值非loginUser
            # 否则提示"用户名密码错误或用户名不存在"
            if login:
                print("欢迎%s,登录成功" % login["name"])
                loginUser = login
            else:
                print("用户名密码错误或用户名不存在")
    # 注册新用户,添加新用户
    elif cmd == "2":
        name = input("请输入昵称:")  # 昵称
        username = input("请输入用户名(登录用):")  # 用户名,应判断是否存在
        for user in user_list:
            # 判断用户名是否因存在
            if user["name"] == username:
                print("用户名%s已经存在,请重试")
                continue  # 如果存在,则重新输入
        passwd1 = input("请输入密码:")
        passwd2 = input("请确认密码:")
        # 判断两次密码是否一致
        if passwd1 != passwd2:
            print("密码不一致,请重新输入")
            continue  # 不一致则重新输入
        # 否则,注册成功
        newuser = {"name": name, "username": username, "passwd": passwd1}
        # 添加到用户列表
        user_list.append(newuser)
        print("注册成功")
    # 查看所以已注册用户的信息,应具备管理员权限
    elif cmd == "3":
        # 判断是否已经登录
        if loginUser:
            # 判断当前用户是不是管理员
            if loginUser["username"] != "admin":
                print("权限不足,请获取管理员权限")
                continue
            else:
                i = 1
                for u in user_list:
                    print("No%d. " % i, u)
                    i += 1
        else:
            print("请以管理员身份登录并查看")

    # 管理管理员账户
    elif cmd == "4":
        # 要求先登录
        if not loginUser:
            print("请先登录")
            continue
        else:
            # 如果不是管理员
            if loginUser["username"] != "admin":
                print("权限不足,请获取管理员权限")
                continue

        for u in user_list:
            if u["username"] == "admin" and loginUser["username"] == "admin":
                yn = input("需要修改管理员密码吗?(y/n)")
                if yn == "y":
                    oldpasswd = input("请输入原密码:")
                    if oldpasswd == loginUser["passwd"]:
                        newpasswd = input("请输入新密码:")
                        loginUser["passwd"] = newpasswd
                        print("管理员密码已更新")
                    else:
                        print("密码错误,请重新输入")
                        continue
    # 查看当期那登录用户是谁
    elif cmd == "5":
        if loginUser:
            print("当前登录的用户为%s(%s)" % (loginUser["name"], loginUser["username"]))
        else:
            print("当前登录的用户为匿名用户")
    # 退出
    elif cmd == "6":
        print("退出成功,谢谢您的使用!")
        break

8.判断有效日期

用户可以输入"20170327"等三种格式的日期

判断是否是有效日期,如"20170229"不是有效日期,"20171345"不是有效日期

pingnian_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
runnian_month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
while True:
    date = input("请输入一个日期(8位),输入QUIT退出程序:")
    # 如果输入QUIT则退出
    if date == "QUIT":
        break
    # 如果长度不为8或者不是纯数字,则重新输入
    if len(date) != 8 and not date.isdigit():
        print("请输入一个八位的日期")
        continue
    else:
        year = int(date[0:4])  # 截取年份
        month = int(date[4:6])  # 截取月份
        day = int(date[6:])  # 截取日期
        isRunNian = False  # 判断是否是闰年
        if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
            isRunNian = True
        # 判断月分是否合法
        if month < 1 or month > 12:
            print("您输入的%s不是有效日期, 请重新输入" % date)
            continue

        if isRunNian:
            # 判断日期是否合法
            if day < 1 or day > runnian_month[month]:
                print("您输入的%s不是有效日期, 请重新输入" % date)
                continue  # 不合法直接重新输入
        else:
            # 判断日期是否合法
            if day < 1 or day > pingnian_month[month]:
                print("您输入的%s不是有效日期, 请重新输入" % date)
                continue
        print("您输入的%s是有效日期" % date)
        print("=" * 30)
原文地址:https://www.cnblogs.com/kangwenju/p/12799372.html