Python练习题

1.

创建一个Shape类(point)有两个属性x,y表示中心坐标
创建一个Rectangle类继承Shape 新增宽高属性
创建一个Circle类继承Shape 新增半径属性
矩形和圆形都有一个方法叫做def contain(x,y) 用于判断填入的坐标是否在 矩形和圆形中

class Shape:

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def show_info(self):
        return self.x, self.y


class Rectangle(Shape):

    def __init__(self, width, height, x, y):
        super().__init__(x, y)
        self.width = width
        self.height = height

    def contain(self):
        if (self.x, self.y) <= (self.width/2, self.height/2) and (self.x, self.y) <= (self.height/2, self.width/2):
            print("坐标在矩形中")
        else:
            print("坐标不在在矩形中")


class Circle(Shape):

    def __init__(self, r, x, y):
        super().__init__(x, y)
        self.r = r

    def contain(self):
        if self.r >= self.x and self.r >= self.y:
            print("坐标在圆形中")
        else:
            print("坐标不在圆形中")


r = Rectangle(1, 2, 1, 2)
r.contain()

c = Circle(5, 1, 2)
c.contain()

 

2.

UI = """
1.用户注册
2.用户登陆
3.退出程序
"""
print(UI)
select = input("请选择你需要的功能:(请输入1-3的数字后回车)")
if select == "1":
    # 注册要求使用文件保存经过哈希处理的用户账户密码
    pass
elif select == "2":
    # 登陆要求读取文件中的用户的账户密码并跟用户登录输入的账号密码进行比对相同输出登陆成功否则输出登陆失败
    pass
else:
    # 使用sys模块进行退出
    pass

代码:

import hashlib
import sys

UI = """
1.用户注册
2.用户登陆
3.退出程序
"""

salt_value = "la2n$@v23a^1oe8r#"

while True:
    print(UI)
    select = input("请选择你需要的功能:(请输入1-3的数字后回车):")
    if select == "1":
        account = input("请输入要注册的账号:")
        passwd = input("请输入要注册账号的密码:")
        r_passwd = input("请确认要注册账号的密码:")
        if passwd == r_passwd:
            print("注册成功")
            a_pwd = hashlib.md5((account + passwd).encode("utf-8"))
            a_pwd.update(salt_value.encode("utf-8"))
            a_pwd_str = a_pwd.hexdigest()
            with open("密码本.txt", "wt", encoding="utf-8") as f:
                f.write(a_pwd_str + "\r\n")
        else:
            print("密码不一致,请重新注册")
            break
    elif select == "2":
        account1 = input("账户:")
        passwd1 = input("密码:")
        a_pwd1 = hashlib.md5((account1 + passwd1).encode("utf-8"))
        a_pwd1.update(salt_value.encode("utf-8"))
        a_pwd_str = a_pwd1.hexdigest()
        with open("密码本.txt", "rt", encoding="utf-8") as f:
            while True:
                save_str = f.readline().replace("\n", "")
                if save_str == "":
                    print("用户账号密码不存在,请重新登录")
                    break

                if a_pwd_str == save_str:
                    print("用户登录成功")
                    break
    else:
        # 使用sys模块进行退出
        sys.exit()

import hashlib
import sys

UI = """
1.用户注册
2.用户登陆
3.退出程序
"""

salt_value = "ssduilfwmrkluo230897!@#"


def getHashValue(account, password):
    hash_obj = hashlib.md5((account + password).encode("utf-8"))
    hash_obj.update(salt_value.encode("utf-8"))
    hash_str = hash_obj.hexdigest()
    return hash_str


def register():
    account = input("请输入账号:")
    password = input("请输入密码:")
    confirm_password = input("请确认密码:")
    if password == confirm_password:
        hash_str = getHashValue(account, password)
        with open("密码本.txt", "at", encoding="utf-8") as f:
            f.write(hash_str + "\r\n")
    else:
        print("前后密码不一致请重新注册")


def login():
    account = input("请输入登陆账号:")
    password = input("请输入登陆密码:")
    hash_str = getHashValue(account, password)
    with open("密码本.txt", "rt", encoding="utf-8") as f:
        while True:
            save_str = f.readline().replace("\n", "")
            if save_str == "":
                print("用户账号密码不存在,请重新登录")
                break

            if hash_str == save_str:
                print("用户登录成功")
                break


while True:
    print(UI)
    select = input("请选择你需要的功能:(请输入1-3的数字后回车)")
    if select == "1":
        # 注册要求使用文件保存经过哈希处理的用户账户密码
        register()
    elif select == "2":
        # 登陆要求读取文件中的用户的账户密码并跟用户登录输入的账号密码进行比对相同输出登陆成功否则输出登陆失败
        login()
    else:
        # 使用sys模块进行退出
        sys.exit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会划水的企鹅plus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值