# Author: Steven Zeng
'''
作业2:编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错3次后锁定
'''
print("welcome to here")
f1=open('username.txt')
f2=open('password.txt')
f3=open('error.txt')#建立一个Demo记录输错3次密码的用户,并对其锁定
username_true=f1.readlines()#readlines读取方式返回的是逐行一个元素的列表
password_true=f2.readlines()
un_error=f3.readlines()
f1.close()
f2.close()
f3.close()
UK={}
#建立一个字典形式为用户名对密码
for i in range(len(username_true)):
UK[str(username_true[i])]=str(password_true[i])#注:字典的键必须是不可变更型数据(常用整数和字符串)
# 而键值可以是数字也可以是字符串
#print(un_error)
#print(un_error.count(777+'\n')
#print(UK)
count=0
while count<3:
username = input("Please, input your username:")
password = input("Please, input your keywords")
if un_error.count(str(username+'\n'))>=3:
print("Out of trying, You are Locking!")
break
elif str(username+'\n') in UK and str(password+'\n')==UK.get(str(username+'\n')):
print("welcome to you, honorable customer!")
break
else:
print('''Invalid customer, please try again!
And you have {count_left1} times left!'''.format(count_left1=2-count))
f3=open('error.txt','a')#建立一个Demo记录输错3次密码的用户,并对其锁定
f3.write(username+'\n')
f3.close()
count += 1
package com.example.myjavademo;
/**
* 计算机的组装过程较为复杂,并且组装过程不固定,为了易于理解,我们把计算机组装过程简化为
* 构建主机、设置操作系统、设置显示器3步,然后通过Directer和具体Builder来构建计算机对象
*
*/
public class BuilderDesignDemo {
public static void main(String []args){
//方式一
Builder builder=new MACBookBuilder();
Director director=new Director(builder);
director.construct("intel","AOC");
System.out.println(builder.create().toString());
//方式2
System.out.println(new MACBookBuilder().
buildBoard("intel").buildDisplay("AOC").create().toString());
}
}
/**
* 计算机抽象类,即Product角色
*/
abstract class Computer{
protected String mBoard;
protected String mDisplay;
protected String mOS;
protected Computer(){
}
public void setBoard(String board){//具体什么实现进行了隐藏
this.mBoard=board;
}
public void setDisplay(String display){//具体什么实现进行了隐藏
this.mDisplay=display;
}
public abstract void setOS();
@Override
public String toString() {
return "Computer:="+mBoard+",="+mOS+",="+mDisplay;
}
}
/**
* 具体的Computer类
*/
class MACBook extends Computer{
protected MACBook(){};
@Override
public void setOS() {
mOS="MAC OS X";
}
}
/**
* 抽象Builder类
*/
abstract class Builder{
//设置主机
public abstract Builder buildBoard(String board);
//设置操作系统
public abstract Builder buildOS();
//设置显示器
public abstract Builder buildDisplay(String display);
//创建Computer
public abstract Computer create();
}
/**
* 具体Builder类,MACBookBuilder
*/
class MACBookBuilder extends Builder{
private Computer computer=new MACBook();
@Override
public Builder buildBoard(String board) {
computer.setBoard(board);
return this;
}
@Override
public Builder buildOS() {
computer.setOS();
return this;
}
@Override
public Builder buildDisplay(String display) {
computer.setDisplay(display);
return this;
}
@Override
public Computer create() {//Mac的操作系统肯定是MAC OS的;这部分对外部隐藏
computer.setOS();
return computer;
}
}
/**
* Director类,负责构建Computer
*/
class Director{
Builder builder=null;
public Director(Builder builder) {
this.builder = builder;
}
/**
* 构建对象
*/
public void construct(String board,String display){
builder.buildBoard(board);
builder.buildDisplay(display);
}
}
class Person(object):
def run(self):
print("run")
def eat(self,food):
print("eat " + food)
def say(self):
print("My name is %s,I am %d years old" % (self.name,self.age))
# 构造函数,创建对象时默认的初始化
def __init__(self,name,age,height,weight,money):
self.name = name
self.age = age
self.height = height
self.weight = weight
self.__money = money #实际上是_Person__money
print("哈喽!我是%s,我今年%d岁了。目前存款%f" %(self.name,self.age,self.__money))
# 想要内部属性不被直接外部访问,属性前加__,就变成了私有属性private
self.__money = 100
# 私有属性需要定义get、set方法来访问和赋值
def setMoney(self,money):
if(money < 0):
self.__money = 0
else:
self.__money = money
def getMoney(self):
return self.__money
person = Person("小明", 5, 120, 28,93.1)
# 属性可直接被访问
person.age = 10
print(person.age)
# 私有属性不可直接被访问或赋值,因为解释器把__money变成了_Person__money(可以用这个访问到私有属性的money,但是强烈建议不要),以下2行会报错
# person.money = 10
# print(person.__money)
# 可以调用内部方法访问和赋值
print(person.getMoney())
person.setMoney(-10)
print(person.getMoney())
class Person(object):
def run(self):
print("run")
def eat(self,food):
print("eat " + food)
def say(self):
print("My name is %s,I am %d years old" % (self.name,self.age))
# 构造函数,创建对象时默认的初始化
def __init__(self,name,age,height,weight,money):
self.name = name
self.age = age
self.height = height
self.weight = weight
self.__money = money #实际上是_Person__money
print("哈喽!我是%s,我今年%d岁了。目前存款%f" %(self.name,self.age,self.__money))
# 想要内部属性不被直接外部访问,属性前加__,就变成了私有属性private
self.__money = 100
# 私有属性需要定义get、set方法来访问和赋值
def setMoney(self, money):
if (money < 0):
self.__money = 0
else:
self.__money = money
def getMoney(self):
return self.__money
person = Person("小明", 5, 120, 28,93.1)
# 属性可直接被访问
person.age = 10
print(person.age)
# 私有属性不可直接被访问或赋值,因为解释器把__money变成了_Person__money(可以用这个访问到私有属性的money,但是强烈建议不要),以下2行会报错
# person.money = 10
# print(person.__money)
# 可以调用内部方法访问和赋值
print(person.getMoney())
person.setMoney(-10)
print(person.getMoney())
最新(Java全栈) java码农从零开始学习项目实战
猜你喜欢
转载自blog.csdn.net/xuyehong123/article/details/89706673
今日推荐
周排行