欢迎来到达达的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

week02

week02 练习

  1. 猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,然后退出循环。

    while 1:
        num = int(input("请输入你猜的数字: "))
        if num == 66:
            print("恭喜猜对了",num)
            break
            #flag = False
        elif num < 66:
            print("你猜的数字太小了,请重新输入!")
        else:
            print("你猜的数字太大了,请重新输入!")
    
  2. 在上一题的基础,设置:给用户三次猜测机会,如果三次之内猜测对了,则显示猜测正确,退出循环,如果三次之内没有猜测正确,则自动退出循环,并显示‘大笨蛋’。

    num = 0
    while num < 3:
        suspect_num = int(input("请输入你猜的数字: "))
        if suspect_num == 66:
            print("恭喜猜对了,最终数字是%d" %suspect_num)
            break
        elif suspect_num < 66:
            if num < 2:
                spe_num = 2 - num
                print("你猜的数字太小了,请重新输入!,你还有%d次机会" %spe_num)
            else:print("没有机会了,大笨蛋")
        else:
            if num < 2:
                spe_num = 2 - num
                print("你猜的数字太大了,请重新输入!,你还有%d次机会" %spe_num)
            else:print("没有机会了,大笨蛋")
        num += 1
    
  3. 求1-100的所有数的和。

    num = 0
    v = 1
    while num < 101:
        v = num + v
        num += 1
    print(v)
    
  4. 求1-2+3-4+5 ... 99的所有数的和。

    num = 1
    v = 0
    while num <= 99:
        if num % 2 == 0:
            v = v - num
        else:
            v = num + v
        num += 1
    print(v)
    
  5. ⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)

    user = "ares"
    passwd = "1234"
    num = 0
    while num < 3:
        user_name = input("请输入用户名: ")
        user_paaswd = input("请输入密码: ")
        if user_name == user and user_paaswd == passwd:
            print("登陆成功")
            break
        else:
            if num != 2:
                v = 2 - num
                print("用户名或者密码错误,请重新登陆,你还有%d次机会" %v)
            else:
                print("你输入三次密码错误,请联系管理员")
        num += 1
    
  6. 简述位和字节的关系?

    答:在计算机中位是最小但为用b(bit)来表示,字节用B(byte)表示,8位代表一个字节,换算公式是:8b = 1B
    KB(kilobyte),千字节 公式: 1024B = 1KB
    M(Megebyte),兆     公式:1024KB = 1M
    G(Gigbyte),千兆     公式:1024M = 1G
    T(Terabyte),万亿字节  公式:1024G = 1T
    
  7. 简述ASCII、Unicode、utf-8编码

    ASCII: 是最早计算机的编码,只能表示英文等信息,在其内部只有256种二进制和英文等信息的对应关系,ascii码规定用8位来表示一个字符。
    Unicode: 原因:为了能让计算机支持全世界任何文字
             ucs2:起初unicode字符集固定使用2个字节来表示码位
             ucs4:后来unicode使用4个字节表示所有字符
    2019年5月unicode已收集137929个字符,也就说ucs4还没有被占满,如果发现其他的文字还可以继续扩增。
    ucs4的优缺点:
    
    缺点:因为都使用4个字节表示码位,同样的字符的码位会更占空间。所以,计算机中再网络传输、硬盘存储时都不会用unicode字符集的码位存储,而是把码位转换(压缩)成utf-8等编码的二进制再进行传输和硬盘存储。
    优点:可以表示所有字符并且长度固定4字节,方便内存中进行数据计算(不必担心太占用内存空间,因为内存占用的计算的数据一般不会太大)。
    注:网络传输指的是通过网络发送一段文字等消息; 硬盘存储指的是把一些文档等信息保存到硬盘上。
    utf-8:是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节,对于码位进行编码时分为两步:
    ## 总结
    计算机上所有的东西最终都会转换成为二进制再去运行。
    ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。
        ascii,字符和二进制的对照表。
        unicode,字符和二进制(码位)的对照表。
        utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。
        ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。
    目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。
    二进制、八进制、十进制、十六进制其实就是进位的时机不同。
    一个字节8位
    b/B/KB/M/G的关系。
    
  8. 判断下列逻辑语句的结果

    1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    
  9. 求出下列逻辑语句的值。

    8 or 3 and 4 or 2 and 0 or 9 and 7
    0 or 2 and 3 and 4 or 6 and 0 or 3
    
  10. 看代码写结果

    6 or 2 > 1
    3 or 2 > 1
    0 or 5 < 4
    5 < 4 or 3
    2 > 1 or 6
    3 and 2 > 1
    0 and 3 > 1
    2 > 1 and 3
    3 > 1 and 0
    3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
    
  11. 有变量name = "aleXleNb " 完成如下操作:

    • 判断 name 变量是否以 "al" 开头,并输出判断结果
    • 判断name变量是否以"Nb"结尾,并输出判断结果
    • 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
    • 将 name 变量对应的值变大写,并输出结果
    • 将 name 变量对应的值变小写,并输出结果
    • 请输出 name 变量对应的值的第 2 个字符?
    • 请输出 name 变量对应的值的前 3 个字符?
    • 请输出 name 变量对应的值的后 2 个字符?
  12. 有字符串s = "123a4b5c"

    • 通过对s切片形成新的字符串 "123"

      s = "123a4b5c"
      s1 = s[:3]
      print(s1)
      
    • 通过对s切片形成新的字符串 "a4b"

      s2 = s[3:6]
      print(s2)
      
    • 通过对s切片形成字符串 "c"

      s3 = s[-1:]
      print(s3)
      
    • 通过对s切片形成字符串"ba2"

      s4 = s[-3::-2]
      print(s4)
      
  13. 使用while循环字符串 s="asdfer" 中每个元素。

    s="asdfer"
    num = 0
    while num < len(s):
        print(s[num])
        num += 1
    
  14. 使用while循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。

    s = "321"
    num = 0
    while num < len(s):
        print("倒计时%d秒"%int(s[num]))
        num += 1
    print("出发!")
    
  15. 计算用户输入的内容中有几个 h 字符?

    如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla
    content = input("请输入内容: ")
    while num < len(content):
        if content[num] == 'h':
            sum += 1
        num += 1
    print(sum)
    
  16. 计算用户输入的内容中有几个 h 或 H 字符?

    如:content = input("请输入内容:") # 如fhdal234slfH9H769fjdla
    num = 0
    h_sum = 0
    H_sum = 0
    content = input("请输入内容: ")
    while num < len(content):
        if content[num] == 'h':
            h_sum += 1
        elif content[num] == 'H':
            H_sum += 1
        num += 1
    print("其中有%s个h,有%s个H"%(h_sum,H_sum))
    
  17. 使用while循环分别正向和反向对字符串 message = "伤情最是晚凉天,憔悴厮人不堪言。" 进行打印。

    # 正向打印
    num = 0
    message = "伤情最是晚凉天,憔悴厮人不堪言。"
    while num < len(message):
        print(message[num])
        num +=1
    # 反向打印
    while num <= len(message):
        print(message[-num])
        num += 1
    
  18. 获取用户输入的内容中 前4个字符中 有几个 A ?

    如:content = input("请输入内容:") # 如fAdal234slfH9H769fjdla
    num = 0
    sum = 0
    content = input("请输入内容:")
    v = content[:4]
    while num < len(v):
        if v[num] == 'A':
            sum += num
        num += 1
    print("输入的字符串中有%d个A"%sum)
    
  19. 获取用户两次输入的内容,并将所有的数据获取并进行相加,如:

    """
    要求:
    	将num1中的的所有数字找到并拼接起来:1232312
    	将num1中的的所有数字找到并拼接起来:1218323
    	然后将两个数字进行相加。
    """
    
    num1 = input("请输入:") # asdfd123sf2312
    num2 = input("请输入:") # a12dfd183sf23
    # 请补充代码
    
  20. 简述你了解的Python2和Python3的区别?

    答:
        1、python2 解释器默认编码(python2与python3的区别一)
            python2 解释器默认编码: ascii
            python3 解释器默认编码: utf-8
        2、输入(python2与python3的区别二)
            python2: name = raw_input('请输入姓名')
            python3: name = input('请输入你的姓名')
        3、输出(python2与python3的区别三)
            python2: print "你好"
            python3: print("你好")
        4、数字表示(python2与python3的区别四)
            python2
                64位机器,范围-2^63~263-1
                超出以上范围,python自动转化为long(长整型)
                注:long(长整型)数字末尾有一个L
            python3
                所有整型都是int,没有long(长整型)
        5、整型除法(python2与python3的区别五)
            python2: 只能保留整数位
            python3: 可以保留所有内容
        6、range/xrange(python2与python3的区别六)
            python2: 
                xrange: 不会在内存中立即创建,而是在循环时,边循环边创建
                range: 在内存立即把所有的值创建
            python3:
                只有range,相当于python2中的xrange
                range: 不会在内存中立即创建,而是在循环时,变循环边创建
        7、包的定义(python2与python3的区别七)
            python2: 文件夹中必须有__init__.py文件
            python3:不需要有__init__.py文件
        8、字典的keys / values /items 方法(python2与python3的区别八)
            python2: 返回列表,通过索引可以取值
            python3: 返回迭代器,只能通过循环取值,不能通过索引取值
        9、map / filter(python2 与 python3)的区别九
            python2: 返回列表,直接创建值,可以通过索引取值
            python3: 返回迭代器,不直接创建值,通过循环,边循环边创建
        10、 str (字符串类型)的区别(python2与python3的区别十)
            python2:
                str类型,相当于python3中的字节类型,utf-8/gbk等其他编码
                unicode类型,相当于python3中的字符串类型,Unicode编码
                python2中没有字节类型
            python3:
                str类型,字符串类型,Unicode编码
                python3中没有Unicode类型
        11、继承object(python2与python3的区别十一):
            class Foo:
            	pass
        		class Foo(object):
            	pass
        		# 在python3中这俩的写法是一样,因为所有的类默认都会继承object类,全部都是新式类。
        		# 如果在python2中这样定义,则称其为:经典类
        		class Foo:
        		    pass 
        		# 如果在python2中这样定义,则称其为:新式类
        		class Foo(object):
        		    pass
        		# 新式类
        		# 继承object
        		    # 支持super
        		    # 多继承 广度优先C3算法
        		    # mro方法
        		# 经典类
        		    # py2中不继承object
        		    # 没有super语法
        		    # 多继承 深度优先
        		    # 没有mro方法
    

posted on 2020-07-17 14:11  SunnyDa  阅读(120)  评论(0)    收藏  举报

导航