• 学习Python必刷的100道经典练习题,没练等于白学 摩天居士


    习题一:

      打印两数之和:

    1 num1 = 45
    2 num2 = 2
    3 
    4 sum = num1 + num2
    5 
    6 print(f"{num1}+{num2}={sum}" 
    View Code

    习题二:

      数字的阶乘:比如6的阶乘:6x5x4x3x2x1,3的阶乘3x2x1

     1 def jiecheng(number):
     2     result = 1
     3 
     4     while number>1:
     5         result *= number
     6         number -= 1
     7     return result
     8         
     9     
    10 
    11 print('jiecheng 6 =',jiecheng(6))
    12 print('jiecheng 3 =',jiecheng(3))
    13 print('jiecheng 100 =',jiecheng(100))
    View Code

    习题三:

      算圆的面积:

    1 import math
    2 
    3 def compute_area_of_circle(r):
    4     return round(math.pi * r * r,2)
    5 
    6 print("area of 2 is:",compute_area_of_circle(2))
    View Code

    习题四;

      区间内的所有素数:输入开始和结束数字,打印区间内所有素数,比如,输入11和25,打印11-25直接所有素数,包括25.

      素数,如果数字只能被1和自己整除就是素数,否则不是素数,比如3室素数,4不是。

     1 def panduan(number):
     2     '''判断一个数是否为素数'''
     3     if number in [1,2]:
     4         return True
     5     for i in range(2,number):
     6         if number % i == 0:
     7             return False
     8     return True
     9 
    10 
    11 
    12 def sushu(begin,end):
    13     '''获取一个区间数据'''
    14     for number in range(begin,end + 1):
    15         if panduan(number):
    16             print(f"{number} is a prime")
    17 
    18 
    19 sushu(11,25)
    View Code

    习题五:

      求前N个数字的平方和,比如5的平方和,1的平方+2的平方+3的平方+4的平方+5的平方

    方法一:

    1 def pingfang(number):
    2     result = 0
    3     while number >= 1:
    4         result += number * number
    5         number -= 1
    6     return result
    7                 
    8 
    9 print(pingfang(5))
    View Code

    方法二:

    1 def pingfang(number):
    2     result = 0
    3     for i in range(1,number + 1):
    4         result += i * i
    5     return result
    6                 
    7 
    8 print(pingfang(5))
    View Code

    习题六:

      计算列表数字的和,比如input列表[1,2,3,4]说是列表[17,5,3,5]

    方法一:

     1 def list_sum(list_name):
     2     sum = 0
     3     for i in range(len(list_name)):
     4         sum += list_name[i]
     5     return sum
     6     
     7 
     8 
     9 list1 = [1,2,3,4]
    10 list2 = [17,5,3,5]
    11 
    12 print("list1 sum is:",list_sum(list1))
    13 print("list2 sum is:",list_sum(list2))
    View Code

    方法二:

     1 def list_sum(list_name):
     2     sum = 0
     3     for i in list_name:
     4         sum += i
     5     return sum
     6     
     7 
     8 
     9 list1 = [1,2,3,4]
    10 list2 = [17,5,3,5]
    11 
    12 print("list1 sum is:",list_sum(list1))
    13 print("list2 sum is:",list_sum(list2))
    View Code

    习题七:

      计算数字范围内所有偶数

      输入开始和结束值,不包含结束值,得到所有偶数,偶数,能被数字2整除的整数,是2的倍数,

      比如4-15直接的偶数

    方法一

    1 def calc_integer(begin,end):
    2     result = []
    3     for i in range(begin,end):
    4         if i % 2 == 0:
    5             result.append(i)
    6     return result
    7 
    8 print(calc_integer(4,15))
    View Code

    方法二,采用列表推导式

    1 begin = 4
    2 end = 15
    3 date = [result for result in range(begin,end) if result % 2 ==0]
    4 print(date)
    View Code

    习题八:

      移除列表中多个元素,比如

      输入原始列表:[3,5,7,9,11,13]

      移除原始:[7,11]

      返回:[3,5,9,13]

     1 def remove_list(lista,listb):
     2     for i in listb:
     3         if i in lista:
     4             lista.remove(i)
     5         else:
     6             pass
     7             
     8     print(lista)
     9 
    10 
    11 list1 = [3,5,7,9,11,13]
    12 list2 = [7,11,15]
    13 
    14 
    15 remove_list(list1,list2)
    View Code

    习题九:

       对列表元素进行去重,

      输入,包含重复元素的原始列表:[10,20,30,10,20]

      返回:[10,20,30]

    方法一:

     1 def update_list(list_name):
     2     update_list = []
     3     for i in list_name:
     4         if i not in update_list:
     5             update_list.append(i)
     6     return update_list
     7 
     8 
     9 list1 = [10,20,30,10,20]
    10 print(f"yuanshi list is {list1},update list is ",update_list(list1))
    View Code

    方法二:

    1 list1 = [10,20,30,10,20]
    2 
    3 print(f"yuanshi list is {list1},update list is ",list(set(list1)))
    View Code

    习题十:

      怎样对简单列表元素排序:

      怎样对简单列表排序?

      简单列表:元素类型不是复合类型(列表、元素、字典)

      形式1:[20,50,10,40,30]

            形式2:['bb','ee','aa','dd','cc']
      知识点:

      怎样原地排序?怎样不改变原列表排序?

      怎样指定是升序还是降序排序?

    1 list1 = [20,50,10,40,30]
    2 #这种情况对list1内存进行了改变,
    3 list1.sort()
    4 
    5 print(f"list1 is {list1}")
    View Code

      不改变原始列表

    1 list1 = [20,50,10,40,30]
    2 #增加reverse参数,是将数据进行降序
    3 list2 = sorted(list1,reverse=True)
    4 
    5 print(f"list1 is {list1}")
    6 print(f"list2 is {list2}")
    View Code

    习题十一

      怎样实现学生成绩排序

      学生成绩数据格式:复杂列表,元素是字典或是元组:

      [

      {'sno':101,'sname':"小张",'sgrade':88},

      {'sno':102,'sname':"小王",'sgrade':77},

      {'sno':103,'sname':"小李",'sgrade':99},

      {'sno':104,'sname':"小赵",'sgrade':66}

    ]

     1 students = [
     2     {'sno':101,'sname':"小张",'sgrade':88},
     3     {'sno':102,'sname':"小王",'sgrade':77},
     4     {'sno':103,'sname':"小李",'sgrade':99},
     5     {'sno':104,'sname':"小赵",'sgrade':66}
     6 ]
     7 
     8 students_sort = sorted(students,key=lambda x:x['sgrade'])
     9 
    10 print(students)
    11 
    12 print(students_sort)
    View Code

    习题十二:

      读取成绩文件排序数据

      输入文件:

        三列:学号、姓名、成绩

        列之间用逗号分隔,比如“101,小张,88”

        行之间用\n换行分割

      处理:

        读取文件,按成绩倒序排列

      输出:

        排序后的三列数据

     

     代码内容

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 def read_file():
     6     # 将文件读取内容放到一个空列表中
     7     result = []
     8     with open(r"./students.txt","r",encoding="UTF-8") as fin:
     9         for line in fin:
    10             line = line[:-1]
    11             result.append(line.split(','))
    12         return result
    13 
    14 def sort_data(datas):
    15     result = sorted(datas,key=lambda x: int(x[2]),reverse=True)
    16     return result
    17 
    18 def write_newfile(datas):
    19     with open(r"./students_updata.txt","w",encoding="UTF-8") as fout:
    20         for data in datas:
    21             fout.write(",".join(data) + "\n")
    22 
    23 #第一步:读取文件
    24 datas = read_file()
    25 #print(datas)
    26 #第二步:对文件进行排序
    27 datas = sort_data(datas)
    28 #print(datas)
    29 #第三版:将排序后的内容写入新文件
    30 write_newfile(datas)
    View Code

    输出内容

     习题十三

      统计学生成绩高分低分平均分

      输入文件:

      三列:学号、姓名、成绩

      列之间用逗号分隔,比如“101,小张,88”

      行之间用\n换行分割

      输出:最高分、最低分、平均分

     

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 def calc_score():
     6     #将读取成绩的文件内放到一个空列表中
     7     result = []
     8     #读取成绩文件内容
     9     with open(r'./students.txt','r',encoding='UTF-8') as fin:
    10         for line in fin:
    11             line = line[:-1]
    12             fields = (line.split(','))
    13             result.append(int(fields[2]))
    14     max_score = max(result)
    15     min_score = min(result)
    16     avg_score = round(sum(result) / len(result),2)
    17 
    18     return max_score,min_score,avg_score
    19 
    20 
    21 
    22 max_score,min_score,avg_score = calc_score()
    23 print(f"max_score={max_score},min_score={min_score},avg_score={avg_score}")
    View Code

    习题十四:

      统计英语文章每个单词的出现次数

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 words_count = {}
     6 
     7 with open(r'./Enginsh_file.txt','r',encoding='UTF-8') as fin:
     8     for line in fin:
     9         line = line[:-1]
    10         words = line.split()
    11         for word in words:
    12             if word.lower() not in words_count:
    13                 words_count[word.lower()] = 0
    14             words_count[word.lower()] +=1
    15 
    16 print(words_count.items())
    17 
    18 print(sorted(words_count.items(),key=lambda x: x[1],reverse=True)[:10])
    View Code

    习题十五:

      统计目录下所有文件大小:

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 import os
     6 #获取单个文件大小
     7 #print(os.path.getsize("students.txt"))
     8 
     9 #获取目录总大小
    10 
    11 sum_size = 0
    12 for file in os.listdir("."):
    13     if os.path.isfile(file):
    14         sum_size += os.path.getsize(file)
    15 
    16 print("all size of dir:",sum_size/1000)
    View Code

    习题十六:

      按文件后缀名整理文件夹

      小知识:怎样获取文件的后缀名?

      import os

      os.path.splitext('/path/to/aaa.mp3')

      输出:(‘/path/to/aaa’,'mp3')

      小知识:怎样移动文件

      import shutil

      shutil.move("aaa.txt","dir/bbb.foo")

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 import os
     6 import shutil
     7 #指定文件的路径
     8 dir = r"D:\PYTHON\Test\DYA2\test"
     9 
    10 for file in os.listdir(dir):    #读取路径下的文件和目录
    11     ext = os.path.splitext(file)[1][1:]     #获取文件后缀
    12     if not os.path.isdir(f"{dir}/{ext}"):   #判断目录是否存在,不存在测创建
    13         os.mkdir(f"{dir}/{ext}")
    14 
    15     source_path = f"{dir}/{file}"
    16     target_path = f"{dir}/{ext}/{file}"
    17 
    18     shutil.move(source_path,target_path)    #将源目录文件移动到新目录中
    View Code

     习题十七

      递归搜索目录找出最大文件

        python怎样递归搜索目录?

      import os

      for root,dirs,files in os.walk('python/Lib/email'):

        # root代表当前目录

        # dirs代表当前目录下子目录

        # files代表当前目录下普通文件

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 import os
     6 
     7 search_path = r"D:\国美GOME"
     8 
     9 result_path = []
    10 
    11 for root,dirs,files in os.walk(search_path):
    12     for file in files:    #循环目录下所有文件
    13         if file.endswith(".py"): #对.py的文件进行判断
    14             file_path = f"{root}/{file}" #将整个文件路径赋值为变量
    15             #print(file_path)
    16             result_path.append((file_path,os.path.getsize(file_path) / 1000)) #将文件全路径和文件大小保存为元组放到列表中
    17 
    18 
    19 print(
    20     sorted(result_path,key=lambda x: x[1],reverse=True)[:10] #将文件类别通过sorted函数进行排序取前十个
    21 )
    View Code

     习题十八

      计算不同课程的最高分最低分平均分,本题解题思路为使用字典,将学科作为key,而成绩作为value存在列表中。

      如下为文件内容示例:

     

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 #定义一个空字典
     6 
     7 subject_score = {}
     8 
     9 #读取成绩文件
    10 
    11 with open(r"./coser_input.txt",encoding="UTF-8") as fin:
    12     for line in fin:
    13         line = line[:-1]
    14         subject,son,sname,score = line.split(",")
    15 
    16         if subject not in subject_score:
    17             subject_score[subject] = []
    18         subject_score[subject].append(int(score))
    19 
    20 #print(subject_score)
    21 
    22 #读取字典内容,对成绩列表进行最大值,最小值,平均值列取
    23 
    24 for subject,score in subject_score.items():
    25     print(
    26         subject,
    27         max(score),
    28         min(score),
    29         sum(score) / len(score)
    30     )
    View Code

     习题十九

      实现不同文件的数据关联,并将关联后的文件更新到新的文件

    如,第一个文件内容:

    第二个文件内容:

     将第一个文件的老师名字增加到第二个文件中

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 tencher_dic = {}
     6 with open(r"./tencher.txt",encoding="UTF-8") as fin:
     7     for line in fin:
     8         line = line[:-1]
     9         subject,tencher = line.split(",")
    10         if subject not in tencher_dic:
    11             tencher_dic[subject] = tencher
    12 
    13 #print(tencher_dic)
    14 
    15 
    16 with open(r"./coser_input.txt",encoding="UTF-8") as fin:
    17     for line in fin:
    18         line = line[:-1]
    19         subject,son,sname,score = line.split(",")
    20         tencher = tencher_dic.get(subject)
    21         print(subject,son,sname,score,tencher)
    View Code

     习题二十

      统计每个兴趣的学生人数,如下图所示,统计喜欢篮球的人数,喜欢羽毛球的人数。。。

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 like_count = {}
     6 
     7 with open(r"./students.txt",encoding="UTF-8") as fin:
     8     for line in fin:
     9         line = line.strip()
    10         name,likes = line.split("  ")
    11         like_list = likes.split(",")
    12         for like in like_list:
    13             if like not in like_count:
    14                 like_count[like] = 0
    15             like_count[like] += 1
    16 
    17 print(like_count)
    View Code

     

      

     

     

     

  • 相关阅读:
    FPGA黑金开发板mini版新鲜出炉!!!
    【连载】【FPGA黑金开发板】NIOS II那些事儿程序下载(九)
    【连载】【FPGA黑金开发板】NIOS II那些事儿IIC总线实验(十)
    【连载】【FPGA黑金开发板】NIOS II那些事儿NIOS II 常见问题(FAQ)
    【连载】【FPGA黑金开发板】NIOS II那些事儿FLASH实验(十五)
    【连载】【FPGA黑金开发板】NIOS II那些事儿SDRAM实验(十二)
    【连载】【FPGA黑金开发板】NIOSII那些事儿对寄存器结构体的详细解析(十六)
    BF531 DSP核心板
    【连载】【FPGA黑金开发板】NIOS II那些事儿定时器实验(十一)
    【连载】【FPGA黑金开发板】NIOS II那些事儿SPI实验 (八)
  • 原文地址:https://www.cnblogs.com/weidongliu/p/16411798.html
Copyright © 2020-2023  润新知