学习Python必刷的100道经典练习题,没练等于白学


习题一:

  打印两数之和:

num1 = 45
num2 = 2

sum = num1 + num2

print(f"{num1}+{num2}={sum}" 

习题二:

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

def jiecheng(number):
    result = 1

    while number>1:
        result *= number
        number -= 1
    return result
        
    

print('jiecheng 6 =',jiecheng(6))
print('jiecheng 3 =',jiecheng(3))
print('jiecheng 100 =',jiecheng(100))

习题三:

  算圆的面积:

import math

def compute_area_of_circle(r):
    return round(math.pi * r * r,2)

print("area of 2 is:",compute_area_of_circle(2))

习题四;

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

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

def panduan(number):
    '''判断一个数是否为素数'''
    if number in [1,2]:
        return True
    for i in range(2,number):
        if number % i == 0:
            return False
    return True



def sushu(begin,end):
    '''获取一个区间数据'''
    for number in range(begin,end + 1):
        if panduan(number):
            print(f"{number} is a prime")


sushu(11,25)

 习题五:

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

方法一:

def pingfang(number):
    result = 0
    while number >= 1:
        result += number * number
        number -= 1
    return result
                

print(pingfang(5))

方法二:

def pingfang(number):
    result = 0
    for i in range(1,number + 1):
        result += i * i
    return result
                

print(pingfang(5))

习题六:

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

方法一:

def list_sum(list_name):
    sum = 0
    for i in range(len(list_name)):
        sum += list_name[i]
    return sum
    


list1 = [1,2,3,4]
list2 = [17,5,3,5]

print("list1 sum is:",list_sum(list1))
print("list2 sum is:",list_sum(list2))

方法二:

def list_sum(list_name):
    sum = 0
    for i in list_name:
        sum += i
    return sum
    


list1 = [1,2,3,4]
list2 = [17,5,3,5]

print("list1 sum is:",list_sum(list1))
print("list2 sum is:",list_sum(list2))

习题七:

  计算数字范围内所有偶数

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

  比如4-15直接的偶数

方法一

def calc_integer(begin,end):
    result = []
    for i in range(begin,end):
        if i % 2 == 0:
            result.append(i)
    return result

print(calc_integer(4,15))

方法二,采用列表推导式

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

习题八:

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

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

  移除原始:[7,11]

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

def remove_list(lista,listb):
    for i in listb:
        if i in lista:
            lista.remove(i)
        else:
            pass
            
    print(lista)


list1 = [3,5,7,9,11,13]
list2 = [7,11,15]


remove_list(list1,list2)

习题九:

   对列表元素进行去重,

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

  返回:[10,20,30]

方法一:

def update_list(list_name):
    update_list = []
    for i in list_name:
        if i not in update_list:
            update_list.append(i)
    return update_list


list1 = [10,20,30,10,20]
print(f"yuanshi list is {list1},update list is ",update_list(list1))

方法二:

list1 = [10,20,30,10,20]

print(f"yuanshi list is {list1},update list is ",list(set(list1)))

习题十:

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

  怎样对简单列表排序?

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

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

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

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

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

list1 = [20,50,10,40,30]
#这种情况对list1内存进行了改变,
list1.sort()

print(f"list1 is {list1}")

  不改变原始列表

list1 = [20,50,10,40,30]
#增加reverse参数,是将数据进行降序
list2 = sorted(list1,reverse=True)

print(f"list1 is {list1}")
print(f"list2 is {list2}")

习题十一

  怎样实现学生成绩排序

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

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

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

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

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

students = [
    {'sno':101,'sname':"小张",'sgrade':88},
    {'sno':102,'sname':"小王",'sgrade':77},
    {'sno':103,'sname':"小李",'sgrade':99},
    {'sno':104,'sname':"小赵",'sgrade':66}
]

students_sort = sorted(students,key=lambda x:x['sgrade'])

print(students)

print(students_sort)

习题十二:

  读取成绩文件排序数据

  输入文件:

    三列:学号、姓名、成绩

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

    行之间用\n换行分割

  处理:

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

  输出:

    排序后的三列数据