python学习笔记(7)-之前技能巩固

内存结构图

  • 计算机的内存空间作用:

    • 存储数据
    • 衡量计算机内存空间大小的单位:
      • bit位:只可以存储一个二进制的数字
      • byte字节:8bit
      • kb,mb,gb
      • 计算机内存空间的大小表示什么?
        • 计算机内存空间越大存储数据的数值越大
        • 8bit:2的8次方
    • 计算中的内存空间会有两个默认的属性:
      • 内存空间的大小
        • 决定内存存储数据的大小
      • 内存空间的地址
        • 用来让cpu寻址的
  • 引用

    • 变量就是引用,引用就是变量

    • a = 1
      #变量a表示的是什么?a表示的是数据1对应内存空间的地址,因此我们说a引用了1
      
  • 指向

    • 如果一个变量引用了某块内存空间的地址,则该变量指向这块内存中的值

可变和不可变数据类型

  • python的8中内置类型

    • 数字类型,布尔类型,字符串,列表,字典,元组,set集合,bytes(二进制类型)
  • 可变类型:该类型的数据是一个在定义后被修改的

    • 列表,字典 ,set
  • 不可变类型:该类型的数据在定义后无法被修改

    • 数字类型,布尔类型,字符串,元组,bytes
    a = 1 #定义
    a = 2 #发生了什么?重新开辟了新的内存存储了2,然后使得a指向了新内存的地址
    
    • 如何区分数据是否为可变?
      • 如果该类型提供了修改数据的操作就是可变类型,否则就是不可变类型
  • 重要数据类型

    • 字符串,列表,字典,set集合(去除重复元素),元组
  • 数据类型存在的意义?

    • 提高数据存储运算的性能和适当节省内存空间

    • 在编程中,让计算机存储两个数据,分别是1和9999,这两个数据占据内存大小是否一样?

      • 是一样的!1和9999都是占用了4个字节大小的内存空间。

回顾案例1:实现完整的猜数字游戏

  • 规则如下:

    • 可以不间断的进行猜数字游戏环节,找到猜对了,结束程序,猜不对,可以不断的进行游戏,并且需要提示用户猜打了还是猜小了。
    • 拓展功能实现:
      • 1.最后需要统计出,用户猜了多少次才猜对。
      • 2.每一个用户的初始分数为100,每猜错一次扣5分,最后程序结束,统计用户的得分
  • '''
        规则如下:
    
    - 可以不间断的进行猜数字游戏环节,找到猜对了,结束程序,猜不对,可以不断的进行游戏,并且需要提示用户猜打了还是猜小了。
    - 拓展功能实现:
      - 1.最后需要统计出,用户猜了多少次才猜对。
      - 2.每一个用户的初始分数为100,每猜错一次扣5分,最后程序结束,统计用户的得分
    '''
    score = 100 #用户初始的分值
    count = 0 #用来记录猜的次数
    #写出大致的框架,然后补充细节
    guess_num = 15  #提供了一个让用户猜的数字
    #让用户去猜(实现和用户进行交互)
    #input就是一个工具:获取用户从键盘上录入数据
    while 1: #死循环:没有结束的循环
        count += 1 #count = count + 1,使得猜的次数增加一个1
        num = input('enter you guess num:')
        num = int(num) #类型转换,将字符串的num转成数据类型的num
        #判断:guess_num和num是否一样
        if guess_num == num:#猜对了
            print('猜对了,您一共猜的次数为:',count)
            print('最终得分为:',score)
            break #结束循环
        elif guess_num < num:#猜大了
            print('猜大了')
            score -= 5
        else:#猜小了
            print('猜小了') #至此一局游戏结束
            score -= 5
    
    

回顾案例2:算法实现

  • 规则如下:有三个变量a,b,c,其值均为自然数,其中a2+b2=c2且a+b+c=1000,求出满足要求a,b,c的所有组合。

  • for a in range(1001): #a的取值就是0-1000
        for b in range(1001):#b的取值就是0-1000
            c = 1000 - a - b #得到了c的取值
            if a + b + c == 1000 and a**2 + b**2 == c**2:
                print(a,b,c)
    

回顾案例3:算法实现

  • 找寻出列表中存储元素的最大值,且将其移动到列表最后的位置

  • alist = [2,8,61,7,6]
    #如何找寻出列表中最大元素的值?需要两两元素比较
    for i in range(len(alist)-1):#range(4)==>[0,1,2,3]
        if alist[i] > alist[i+1]:
            #两个元素交换位置
            alist[i],alist[i+1] = alist[i+1],alist[i]
    print(alist)
    
    

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