【Python】选举投票小程序

'''
【选举小程序】
1.从键盘录入候选人姓名、编号(按录入顺序)
2.打印候选人信息,格式:
编号      姓名
 1       张三
 2       李四
 3       王五
3.进行投票,输入候选人编号,并累计票数,直到输入-1结束投票
4.打印结果,格式:
编号      姓名      得票数
 1       张三        2
 2       李四        5
 3       王五        3
最终当选人:XX
'''
#候选人类
class Hxr:
    #构造候选人的方法
    def __init__(self,num,name):
        self.num=num
        self.name=name
        self.depiao=0
    #公示候选人信息的方法
    def showInfos(self,res=0):  #传参res,用于决定是否打印得票数
        s=f" {self.num}\t{self.name}\t"
        if res!=0:  #res默认值0,若要打印得票一栏,给res赋值即可
            s+=f"{self.depiao}\t"
        print(s)
    #得票数计算的方法
    def addVote(self):
        self.depiao+=1

#投票程序类
class VoteProgram():
    def __init__(self):
        self.hxrs=[] #存放候选人信息的列表
    #录入候选人的方法
    def addHxr(self):
        print("【录入候选人信息】")
        a=0 #编号变量
        while True: #不定次循环录入候选人信息
            a+=1 #自动编号
            name=input("请输入候选人姓名:")
            h=Hxr(a,name) #创建候选人对象
            self.hxrs.append(h) #对象添加进列表
            next=input("任意键继续录入,输入-1结束录入")
            if next=="-1":
                break
    #公示候选人信息的方法
    def showHxr(self):
        print("【候选人信息如下】")
        print("编号\t姓名\t")
        for b in self.hxrs:
            b.showInfos()
    #投票的方法
    def vote(self):
        print("*"*30)
        print("【开始投票】")
        while True:
            num=input("请输入所投候选人编号(输入-1结束录入)")
            if num=="-1":
                break
            for h in self.hxrs: #循环所有候选人
                if str(h.num)==num: #找到输入的编号对应的候选人(此处不限制int是为了避免程序报错终止
                    h.addVote() #当前候选人得票数+1
                    break
            else:   #不符合投票规则的输入
                print("此编号无效!")
    #公示票选结果的方法
    def showResult(self):
        max_piao=0
        dxr=None
        print("投票结束,结果如下:")
        print("编号\t姓名\t得票数\t")
        for h in self.hxrs: #循环所有候选人
            h.showInfos(1) #给res赋参数1,打印得票
            if h.depiao>max_piao:
                max_piao=h.depiao
                dxr=h
        print("【当选人信息】")
        dxr.showInfos(1)
    #主程序
    def main(self):
        #1.录入候选人信息
        self.addHxr()
        #2.公示候选人信息
        self.showHxr()
        #3.投票
        self.vote()
        #4.公示票选结果
        self.showResult()

if __name__ == "__main__":
    vp = VoteProgram()
    vp.main()

你可能感兴趣的:(python,开发语言)