python练习题(简单语法实现)

#encoding = UTF-8
'''
    @author:xianyt
    @vertion:python3
    @date:20180723
    @func:19、	模拟实现用户登录,允许三次错误,超过三次退出
    实现逻辑:
    1)创建一个字典来存放用户账号和密码
    2)添加用户账号和密码
    3)登陆功能
      i)检查输入的用户名是否正确
      ii)检查输入的对应密码是否正确
      iii)不停判断是否以输错三次,是则退出程序
'''
'''
    添加用户,如果用户名存在则直接修改
'''
def adduser():
    userTable.update({'root': 'root'})
    print("添加用户信息,默认用户/密码:root")
    while True:
        username = input('账户:')
        psw = input('密码:')
        userTable.update({username: psw})
        print("按F/f键退出添加用户信息,按任意键继续")
        mychoice = input()
        if mychoice is 'f' or mychoice is 'F':
            break

'''
    检查输入的用户名和密码是否正确,输入3次就锁住
'''
def checklogin(logincount):
    loginError = 0
    while loginError <= logincount :
        userNameTemp = input('请输入要登录的用户名:')
        if not userTable.__contains__(userNameTemp):   #不存在该用户
            print('账户不存在,请重新输入!')
            loginError += 1
            continue
        pswTemp = input('请输入密码:')
        if userTable.get(userNameTemp) == pswTemp:
            print('登录成功')
            return 1
            break
        else:
            print('密码输入错误,请重新输入!')
            loginError += 1
    if loginError > logincount:
        print("您已输错%s次,请稍后再试!!!"%logincount)
        return 0

if __name__ == '__main__':
    userTable = {}
    adduser()
    checklogin(3);

 

#encoding = UTF-8
'''
   @author xianyt
   @version python 3
   @func:实现人机 石头剪刀布游戏,一局出胜负和三局两胜
'''

import random
def playGames():
    while True:
        user = input("请输出石头(0),剪刀(1),布(2):")  #用0,1,2简化实现代码
        if not user.isdigit() or int(user) < 0 or int(user) > 2  :
            print("请输入0~2范围的值")
        else:
            break
    comp = str(random.randrange(0,2))
    if comp is '0':
        print("机器出石头")
    elif comp is '1':
        print('机器出剪刀')
    else:
        print('机器出步')
    temp = user + comp
    dic = {'00': 'p', '01': 'u', '02': 'c',
           '10': 'c', '11': 'p', '12': 'u',
           '20': 'u', '21': 'c', '22': 'p'}
    result = dic.get(temp)
    if result.find('u'):
        print("本局你赢啦")
    elif result.find('c'):
        print("好可惜,机器赢了。请再接再厉~")
    else :
         print("平局")
    return dic.get(temp)

'''
    18、	实现人机石头剪刀布游戏,3局2胜,平局加局胜
'''
def playGameThree():
    ucount = 0   #记录用户赢得次数
    gcount = 0   #记录机器赢得次数
    for x in range(3):
        result = playGames()
        if result.find('u'):
            ucount += 1
        elif result.find('c'):
            gcount += 1
        if x == 1 and (gcount == 2 or ucount ==2): break
    if gcount > ucount :
        print("********好可惜,机器赢了********")
    elif gcount < ucount:
        print("********恭喜你,取得了最终的胜利。棒棒哒!********")
    else:
        print("********平局********")

if __name__ == '__main__':
    print("欢迎进入该游戏,在本游戏中石头(0),剪刀(1),布(2):")
    #playGames()
    playGameThree()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值