zoukankan      html  css  js  c++  java
  • python闯关_Day02

    Q1:写一个用户循环猜年龄的游戏,猜对就退出,猜不对就继续猜,猜三次,提示用户是否继续,用户回答Y或者y就继续猜,三次之后再重复,回答N或n就结束游戏。

    #! /usr/bin/env python
    #-*- coding:utf-8 -*-
    
    #猜年龄
    
    import random
    age = random.randint(1,10)
    print (age)
    
    iscontinue = 1
    while iscontinue:
        for i in range(3):
            guess = int(input("请猜数:"))
            if guess == age:
                print('猜对了。')
                iscontinue = 0
                break
            else:
                print('猜错了')
        if iscontinue == 0:
            break
        strContinue = input('还继续吗?(y/n)')
        if strContinue == 'y' or strContinue == 'Y':
            iscontinue = 1
        elif strContinue == 'n' or strContinue == 'N':
            iscontinue = 0
        else:
            print ('输入错误,退出')
    

    注意

    1. input 返回的是str,需要强制转换成int

    2. break只能跳出一层,如果要连续跳出,需要在外层做一道判断

    3. 判断用户输入的处理,不简洁,打算用regex来实现,没有时间再查了。

    Q2:写一个用户认证程序,有三组用户名和密码,每当任意一个用户密码输入错误三次则对该用户进行限制登录

    #! /usr/bin/env python
    #-*- coding:utf-8 -*-
    
    """
    u1:p1
    u2:p2
    u3:p3
    """
    
    auth = {'u1':'p1','u2':'p2','u3':'p3'}
    auth_lock = {'u1':0,'u2':0,'u3':0}
    
    while True:
        uname = input('请输入用户名:')
        if auth_lock[uname] == 1:
            print(uname,'已经被锁定(连续输错3次密码)。')
            break
        au_times = 1
        while au_times <= 3:
            upass = input('请输入密码:')
            if upass != auth[uname]:
                print ('用户名密码错误(', au_times, ')。')
                au_times += 1
                if au_times > 3:
                    auth_lock[uname] = 1
                    break
            else:
                print ('认证通过。')
                au_times = 0
                break
        if au_times == 0:
            break
    

    注:

    1. 用了2个字典,一个字典用于存储用户名密码,另一个字典用来保存对应的用户名是否被锁。

    2. 不健壮,没有对输入进行校验,如果输入了非key,则会报"keyerror",有对应的解决办法。待后面补充。

    Q3  打印乘法小九九代码

    for i in range(1,10):
        for j in range(1,10):
            print("%d*%d=%2d" % (i,j,i*j),end=" ")
        print("-")
    

      

    Q4 打印金字塔图形

    for i in range(20):
        print(' ' * (20-i-1) + '*' * (2*i+1) )
    

      

      

  • 相关阅读:
    Visual Studio 2010 SP1 中文升级补丁ISO完整版下载 (含多国语言)
    通过修改Host实现chrome同步
    附加数据库出现 无法打开物理文件 操作系统错误 5:拒绝访问 SQL
    配置Oracle遇到问题<一>
    GDI+中发生一般性错误的解决办法(转载)
    当VS和Flash builder同时运行时
    抛弃jQuery 深入原生的JavaScript
    Android SDK下载和更新慢或失败的解决办法
    Android 学习笔记 文本文件的读写操作
    Android Camera相机功能实现 拍照并保存图片
  • 原文地址:https://www.cnblogs.com/marathoner/p/10242173.html
Copyright © 2011-2022 走看看