题目:
1:带界面的注册系统,使用加密模块保存用户账户密码。
2:创建一个Shape类(point)有两个属性x,y表示中心坐标;创建一个Rectangle类继承Shape,新增长,宽属性;创建一个Circle类继承Shape,新增半径属性;判断填入的坐标是否在矩形和圆形中。
解1:
导入sys&hashlib模块;创建“主界面”
import sys
import hashlib
UI = """
1.用户注册
2.用户登录
3.退出系统
"""
print(UI)
创建while循环,在内创建一个变量,可使用户输入其需求 ;创建一个函数。
while True:
select = input("请选择你需要的功能(请输入1~3的数字后回车):")
def choice(self):
在函数内创建第一种情况(用户注册):
创建四个变量,先使用户输入账号,其次输入密码,再让用户输入密码,确保用户确定使用此密码。如果第二次密码与第一次密码不相符,将再使用户输入密码,如再错,返回主界面,重新选择;如输入正确,则将用户的账号&密码相加,用hashlib对此进行加密,再将加密后的值保存在名为“用户账号名”的文件内。完成以上操作后,打印“注册成功”&主界面。
if self == "1":
account = input("请输入账号:")
password_1 = input("请输入密码:")
password_2 = input("请再次输入密码:")
if password_1 == password_2:
pass
else:
print("密码输入错误,请重新输入密码")
password_3 = input("请再次输入密码:")
if password_1 == password_3:
pass
else:
print("密码输入错误,返回主界面")
sum = account + password_1
md5 = hashlib.md5(sum.encode("utf-8"))
with open(account + ".txt", "wt", encoding="utf-8") as write_f:
write_f.write(md5.hexdigest())
print("注册成功")
print(UI)
在函数内创建第二种情况(用户登录):
输入“账号”&“密码”和加密“账号”&“密码”,同上。加密完成后,读取注册时保存的文件内容,如一致,则打印“登陆成功”;如不一致,则打印“账号或密码错误,请重新登录”,再返回主界面。
elif self == "2":
account = input("请输入账号:")
password = input("请输入密码:")
sum_1 = account + password
md5 = hashlib.md5(sum_1.encode("utf-8"))
with open(account + ".txt", "rt", encoding="utf-8") as read_f:
hash = read_f.read()
if md5.hexdigest() == hash:
print("登陆成功")
else:
print("账号或密码错误,请重新登录")
print(UI)
在函数内创建第三种情况(退出系统):
如用户选择此选项,则退出系统。
else:
sys.exit()
这个在while循环内,函数外,可使用户输入的内容,代入至函数中。
choice(select)
运行结果如下(各种情况):
E:\Python\Files\lianxi\venv\Scripts\python.exe E:\Python\Files\lianxi\lianxi.py
1.用户注册
2.用户登录
3.退出系统
请选择你需要的功能(请输入1~3的数字后回车):1
请输入账号:123
请输入密码:123
请再次输入密码:321
密码输入错误,请重新输入密码
请再次输入密码:123
注册成功
1.用户注册
2.用户登录
3.退出系统
请选择你需要的功能(请输入1~3的数字后回车):2
请输入账号:123
请输入密码:321
账号或密码错误,请重新登录
1.用户注册
2.用户登录
3.退出系统
请选择你需要的功能(请输入1~3的数字后回车):2
请输入账号:123
请输入密码:123
登陆成功
1.用户注册
2.用户登录
3.退出系统
请选择你需要的功能(请输入1~3的数字后回车):3
Process finished with exit code 0
解2:
创建七个变量,使用户可输入“矩形&圆的横坐标”&“矩形&圆的纵坐标”&“矩形的长”&“矩形的宽”&“圆的半径”&“目标坐标的横坐标”&“目标坐标的纵坐标”,矩形&圆的坐标为矩形&圆的中点。
x1 = float(input("请输入矩形&圆的横坐标:"))
y1 = float(input("请输入矩形&圆的纵坐标:"))
long_R = float(input("请输入矩形的长:"))
wide_R = float(input("请输入矩形的宽:"))
radius_C = float(input("请输入圆的半径:"))
x2 = float(input("请输入一个坐标的横坐标:"))
y2 = float(input("请输入一个坐标的纵坐标:"))
创建Shape类,里面为矩形&圆的坐标。
class Shape:
def __init__(self, x, y):
self.x = x
self.y = y
创建Rectangle类,继承Shape,新增“long”&“wide”。在函数contain_R中,计算目标坐标是否在矩形内。
class Rectangle(Shape):
def __init__(self, x, y, long, wide):
super().__init__(x, y)
self.long = long
self.wide = wide
def contain_R(self, X0, Y0):
if self.x - self.long / 2 < X0 < self.x + self.long / 2 and self.y - self.wide / 2 < Y0 < self.y + self.wide / 2:
print("该点在矩形内")
else:
print("该点不在矩形内")
创建Cricle类,继承Shape,新增“radius”。在函数contain_C中,计算目标坐标是否在圆内。
class Cricle(Shape):
def __init__(self, x, y, radius):
super().__init__(x, y)
self.radius = radius
def contain_C(self, X0, Y0):
if (X0 - self.x) ** 2 + (Y0 - self.y) ** 2 < self.radius ** 2:
print("该点在圆内")
else:
print("该点不在圆内")
此代码块表示将用户输入的值代入对应的函数中,再运行函数。
JuXing = Rectangle(x1, y1, long_R, wide_R)
JuXing.contain_R(x2, y2)
YuanXing = Cricle(x1, y1, radius_C)
YuanXing.contain_C(x2, y2)
结果如下:
目标坐标不在矩形&圆内:
E:\Python\Files\lianxi\venv\Scripts\python.exe E:\Python\Files\lianxi\lianxi.py
请输入矩形&圆的横坐标:0
请输入矩形&圆的纵坐标:0
请输入矩形的长:10
请输入矩形的宽:10
请输入圆的半径:5
请输入一个坐标的横坐标:20
请输入一个坐标的纵坐标:20
该点不在矩形内
该点不在圆内
Process finished with exit code 0
目标坐标在矩形内,不在圆内:
E:\Python\Files\lianxi\venv\Scripts\python.exe E:\Python\Files\lianxi\lianxi.py
请输入矩形&圆的横坐标:0
请输入矩形&圆的纵坐标:0
请输入矩形的长:10
请输入矩形的宽:10
请输入圆的半径:3
请输入一个坐标的横坐标:4
请输入一个坐标的纵坐标:4
该点在矩形内
该点不在圆内
Process finished with exit code 0
目标坐标在圆内,不在矩形内:
E:\Python\Files\lianxi\venv\Scripts\python.exe E:\Python\Files\lianxi\lianxi.py
请输入矩形&圆的横坐标:0
请输入矩形&圆的纵坐标:0
请输入矩形的长:10
请输入矩形的宽:10
请输入圆的半径:10
请输入一个坐标的横坐标:6
请输入一个坐标的纵坐标:6
该点不在矩形内
该点在圆内
Process finished with exit code 0
目标坐标在矩形&圆内:
E:\Python\Files\lianxi\venv\Scripts\python.exe E:\Python\Files\lianxi\lianxi.py
请输入矩形&圆的横坐标:0
请输入矩形&圆的纵坐标:0
请输入矩形的长:10
请输入矩形的宽:10
请输入圆的半径:5
请输入一个坐标的横坐标:1
请输入一个坐标的纵坐标:1
该点在矩形内
该点在圆内
Process finished with exit code 0
第一题完整代码:
import sys
import hashlib
UI = """
1.用户注册
2.用户登录
3.退出系统
"""
print(UI)
while True:
select = input("请选择你需要的功能(请输入1~3的数字后回车):")
def choice(self):
if self == "1":
account = input("请输入账号:")
password_1 = input("请输入密码:")
password_2 = input("请再次输入密码:")
if password_1 == password_2:
pass
else:
print("密码输入错误,请重新输入密码")
password_3 = input("请再次输入密码:")
if password_1 == password_3:
pass
else:
print("密码输入错误,返回主界面")
sum = account + password_1
md5 = hashlib.md5(sum.encode("utf-8"))
with open(account + ".txt", "wt", encoding="utf-8") as write_f:
write_f.write(md5.hexdigest())
print("注册成功")
print(UI)
elif self == "2":
account = input("请输入账号:")
password = input("请输入密码:")
sum_1 = account + password
md5 = hashlib.md5(sum_1.encode("utf-8"))
with open(account + ".txt", "rt", encoding="utf-8") as read_f:
hash = read_f.read()
if md5.hexdigest() == hash:
print("登陆成功")
else:
print("账号或密码错误,请重新登录")
print(UI)
else:
sys.exit()
choice(select)
第二题完整代码:
x1 = float(input("请输入矩形&圆的横坐标:"))
y1 = float(input("请输入矩形&圆的纵坐标:"))
long_R = float(input("请输入矩形的长:"))
wide_R = float(input("请输入矩形的宽:"))
radius_C = float(input("请输入圆的半径:"))
x2 = float(input("请输入一个坐标的横坐标:"))
y2 = float(input("请输入一个坐标的纵坐标:"))
class Shape:
def __init__(self, x, y):
self.x = x
self.y = y
class Rectangle(Shape):
def __init__(self, x, y, long, wide):
super().__init__(x, y)
self.long = long
self.wide = wide
def contain_R(self, X0, Y0):
if self.x - self.long / 2 < X0 < self.x + self.long / 2 and self.y - self.wide / 2 < Y0 < self.y + self.wide / 2:
print("该点在矩形内")
else:
print("该点不在矩形内")
class Cricle(Shape):
def __init__(self, x, y, radius):
super().__init__(x, y)
self.radius = radius
def contain_C(self, X0, Y0):
if (X0 - self.x) ** 2 + (Y0 - self.y) ** 2 < self.radius ** 2:
print("该点在圆内")
else:
print("该点不在圆内")
JuXing = Rectangle(x1, y1, long_R, wide_R)
JuXing.contain_R(x2, y2)
YuanXing = Cricle(x1, y1, radius_C)
YuanXing.contain_C(x2, y2)