Python 基础编程练习深度剖析

        

目录

一、数字组合问题

题目描述

代码实现

思路讲解

二、字典操作综合练习

题目描述

代码实现

思路讲解

三、学生名字录入与输出

题目描述

代码实现

思路讲解

四、筛选列表元素

题目描述

代码实现

思路讲解

五、统计单词重复次数

题目描述

代码实现

思路讲解

六、数字列表求和

题目描述

代码实现

思路讲解

七、计算节目平均分数

题目描述

代码实现

思路讲解

八、获取两个列表的公共元素

题目描述

代码实现

思路讲解

九、输出闰年列表

题目描述

代码实现

思路讲解


在 Python 编程学习的道路上,实战练习是巩固知识、提升技能的关键环节。本文将深入分析一系列涵盖基础数据结构与逻辑操作的 Python 练习题,帮助大家更好地理解和掌握 Python 编程的核心要点。

一、数字组合问题

题目描述

有 1,2,3,4,5,6,7,8 八个数字,能组成多少个互不相同且无重复数字的两位数?

代码实现

li = [1,2,3,4,5,6,7,8]
li2 = []
for i in range(1,9):
    for j in range(1,9):
        if i != j:
            li2.append((i,j))
print(len(li2))

思路讲解

这段代码使用了嵌套循环来遍历数字。外层循环控制十位数字的选择(从 1 到 8),内层循环控制个位数字的选择(同样从 1 到 8)。通过判断i != j来确保组成的两位数数字不重复。每次满足条件时,将这两个数字组成的元组(i, j)添加到列表li2中。最后,通过len(li2)输出满足条件的两位数的数量。

二、字典操作综合练习

题目描述

给定字典dic = {'python': 95, 'java': 99, 'c': 100},完成以下操作:

  1. 求字典长度
  2. 修改 'java' 这个 key 对应的 value 值为 98
  3. 删除 c 这个 key
  4. 增加一个 key-value 对,key 值为 php, value 是 90
  5. 再次增加一个 key-value 对,key 值为 php, value 是 90(此步可检验重复 key 的处理)
  6. 获取所有的 key 值,存储在列表里
  7. 获取所有的 value 值,存储在列表里
  8. 判断 javascript 是否在字典中
  9. 获得字典里所有 value 的和
  10. 获取字典里最大的 value
  11. 获取字典里最小的 value
  12. 字典dic1 = {'php': 97},将dic1的数据更新到dic

代码实现

dic = {'python':95,'java':99,'c':100}
#字典长度
print(len(dic))
#请修改'java' 这个key对应的value值为98
dic['java'] = 98
print(dic)
#删除c这个key
dic.pop('c')
print(dic)
#增加一个key-value对,key值为 php, value是90
dic['php'] = 90
print(dic)
#获取所有的key值,存储在列表里
li_key = [key for key in dic.keys()]
print(li_key)
#获取所有的value值,存储在列表里
li_value = [value for value in dic.values()]
print(li_value)
#判断javascript是否在字典中
li_text=[key for key in dic.keys()]
if 'javascript' in li_text:
    print(True)
else:
    print(False)
#获得字典里所有value的和
li_sum = [value for value in dic.values()]
print(sum(li_sum))
#获取字典里最大的value
print(max(li_sum))
#获取字典里最小的value
print(min(li_sum))
#字典dic1 = {'php': 97},将dic1的数据更新到dic中
dic.update({'php':97})
print(dic)

思路讲解

  1. 字典长度:使用内置函数len()获取字典中键值对的数量。
  2. 修改值:通过直接赋值dic['java'] = 98来修改指定键'java'对应的值。
  3. 删除键:使用字典的pop()方法删除指定的键'c'及其对应的值。
  4. 增加键值对:通过直接赋值dic['php'] = 90向字典中添加新的键值对。由于字典中键是唯一的,再次添加相同键'php'时,新值会覆盖旧值。
  5. 获取所有键:使用列表推导式[key for key in dic.keys()]将字典中的所有键提取出来并存储在列表li_key中。
  6. 获取所有值:类似地,使用列表推导式[value for value in dic.values()]将字典中的所有值提取出来并存储在列表li_value中。
  7. 判断键是否存在:先通过列表推导式获取所有键,再使用in关键字判断'javascript'是否在键列表中。实际上,可以直接使用'javascript' in dic来更简洁地判断。
  8. 计算值的和:先获取所有值的列表li_sum,再使用内置函数sum()计算列表中所有元素的和。
  9. 获取最大和最小值:利用内置函数max()min()分别获取值列表li_sum中的最大值和最小值。
  10. 更新字典:使用字典的update()方法将字典dic1中的键值对更新到字典dic中。如果有相同的键,dic1中的值会覆盖dic中的值。

三、学生名字录入与输出

题目描述

录入学生的名字,如果名字存在则回复人名已存在,无法录入,输入空字符串,则逆序输出已录入的名字列表。

代码实现

name = ["张三", "李四", "王五"]
add = input("请输入你要录入的名字:")
if len(add) == 0:
    print(name[::-1])
elif add in name:
    print("人名已存在,无法录入")
else:
    name.append(add)
    print("录入成功,当前列表为", name)

思路讲解

首先定义了一个已有的学生名字列表name。然后通过input()函数获取用户输入的名字add。通过判断输入字符串的长度是否为 0 来决定是否逆序输出列表;如果输入名字在已有列表中,则提示名字已存在;否则将新名字添加到列表中并输出更新后的列表。

四、筛选列表元素

题目描述

创建一个包含 50 个数的列表,将列表中大于 30 的数据构成一个新的列表。

代码实现

li_number = [i for i in range(1,51)]
li_bigger = []
for number in li_number:
    if number > 30:
        li_bigger.append(number)
print(li_bigger)

思路讲解

首先使用列表推导式创建了一个包含 1 到 50 的数字列表li_number。然后通过遍历li_number,使用条件判断if number > 30筛选出大于 30 的数字,并添加到新列表li_bigger中。最后输出新列表。

五、统计单词重复次数

题目描述

用户输入一个英文句子,此处认为单词之间以空格为分隔符,并且不包含,和。打印出每个单词及重复次数。

代码实现

word = list(input("请输入一个英文句子:").split(" "))
answer_group = []
for i in word:
    print(i, word.count(i))

思路讲解

首先使用input()获取用户输入的句子,通过split(" ")将句子按空格分割成单词列表word。然后遍历单词列表,对于每个单词i,使用word.count(i)统计其在列表中出现的次数并打印出来。

六、数字列表求和

题目描述

已知一个数字列表,求所有元素和。例如:sum = [59, 54, 89, 45, 78, 45, 12, 96, 789, 45, 69]

代码实现

sum_list = [59, 54, 89, 45, 78, 45, 12, 96, 789, 45, 69]
var = 0
for i in sum_list:
    var += i
print(var)

思路讲解

定义一个数字列表sum_list,初始化一个变量var为 0 用于累加。通过遍历列表,将每个元素累加到var中,最后输出累加结果。

七、计算节目平均分数

题目描述

用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)。例如:scores = [9.8, 9.5, 9.9, 9.3, 8.9, 9.5, 9.6, 9.3, 9.4, 9.6]

代码实现

scores = [9.8, 9.5, 9.9, 9.3, 8.9, 9.5, 9.6, 9.3, 9.4, 9.6]
scores_li = scores.copy()
var = 0
for i in scores_li:
    if i == max(scores):
        scores_li.remove(i)
    if i == min(scores):
        scores_li.remove(i)
    var += i
print(var / len(scores_li))

思路讲解

首先复制分数列表scoresscores_li,避免修改原始列表。通过遍历复制的列表,使用if条件判断找到最高分和最低分并从列表中移除。同时,将剩余分数累加到变量var中。最后,计算剩余分数的平均值并输出。

八、获取两个列表的公共元素

题目描述

有两个列表 A 和 B,使用列表 C 来获取两个列表中公共的元素。例如:A = [1, 'a', 4, 90]B = ['a', 8, 'j', 1] --> C = [1, 'a']

代码实现

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
#法一
for i in A:
    if i in B:
        C.append(i)
print(C)
#法二
for i in A:
    for j in B:
        if i == j:
            C.append(i)
print(C)
#法三
D = [i for i in A if i in B]
print(D)

思路讲解

  1. 方法一:遍历列表A,对于每个元素i,判断其是否在列表B中,如果在则添加到列表C中。
  2. 方法二:使用两层嵌套循环,外层循环遍历列表A,内层循环遍历列表B,当找到相等的元素时添加到列表C中。这种方法效率较低,因为每个元素要被比较多次。
  3. 方法三:使用列表推导式,一行代码实现筛选出列表A中同时也在列表B中的元素,并存储在新列表D中。

九、输出闰年列表

题目描述

将 1970 - 2050 年所有的闰年输出。

代码实现

#法一
li3 = []
for i in range(1970,2051):
    if i%4 == 0 and i%100 != 0:
        li3.append(i)
print(li3, len(li3))
#法二
li4 = [i for i in range(1970,2051) if i%4 == 0 and i%100 != 0]
print(li4)

思路讲解

  1. 方法一:通过遍历 1970 到 2050 的所有年份,使用条件判断if i%4 == 0 and i%100 != 0来判断是否为闰年(能被 4 整除且不能被 100 整除的年份为闰年)。如果是闰年,则将其添加到列表li3中,最后输出列表及其长度。
  2. 方法二:使用列表推导式,一行代码实现筛选出 1970 到 2050 之间的闰年并存储在列表li4中,然后输出列表。

        通过对这些基础编程练习的深入分析,我们不仅掌握了 Python 中列表、字典等数据结构的操作,还学会了如何优化代码以提高效率。希望大家在今后的编程学习中,能够不断实践,将这些知识运用到实际项目中,提升自己的编程能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值