真香!值得收藏的30道Python练手题(附详细答案)

Python学习与数据挖掘 2021-10-26 15:23:36
Python 详细 真香 收藏 练手

大家好,今天给大家分享30道 Python 练习题,建议大家先独立思考一下解题思路,喜欢本文点赞支持。文末提供技术交流群。

1. 已知一个字符串为 “hello_world_yoyo”,如何得到一个队列

  • 使用 split 函数,分割字符串,并且将数据转换成列表类型:
test = 'hello_world_yoyo'
print(test.split("_"))
12
  • 结果:
['hello', 'world', 'yoyo']

2. 有个列表 [“hello”, “world”, “yoyo”],如何把列表里面的字符串联起来,得到字符串 “hello_world_yoyo”?

  • 使用 join 函数将数据转换成字符串:
test = ["hello", "world", "yoyo"]
print("_".join(test))
  • 结果:
hello_world_yoyo

如果不依赖 python 提供的 join 方法,还可以通过 for 循环,然后将字符串拼接,但是在用“+”连接字符串时,结果会生成新的对象,使用 join 时结果只是将原列表中的元素拼接起来,所以 join 效率比较高。for 循环拼接如下

test = ["hello", "world", "yoyo"]
# 定义一个空字符串
j = ''
# 通过 for 循环打印出列表中的数据
for i in test:
j = j + "_" + i
# 因为通过上面的字符串拼接,得到的数据是“_hello_world_yoyo”,前面会多一个下划线_,所以把这个下划线去掉
print(j.lstrip("_"))

3. 把字符串 s 中的每个空格替换成”%20”,输入:s = “We are happy.”,输出:“We%20are%20happy.”。

  • 使用 replace 函数,替换字符换即可:
s = 'We are happy.'
print(s.replace(' ', '%20'))
12
  • 结果:
We%20are%20happy.

4. Python 如何打印 99 乘法表?

  • for 循环打印:
for i in range(1, 10):
for j in range(1, i+1):
print('{}x{}={}\t'.format(j, i, i*j), end='')
print()
  • while 循环实现:
i = 1
while i <= 9:
j = 1
while j <= i:
print("%d*%d=%-2d"%(i,j,i*j),end = ' ') # %d: 整数的占位符,'-2'代表靠左对齐,两个占位符
j += 1
print()
i += 1
  • 结果
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

5. 从下标 0 开始索引,找出单词 “welcome” 在字符串“Hello, welcome to my world.” 中出现的位置,找不到返回 -1。

def test():
message = 'Hello, welcome to my world.'
world = 'welcome'
if world in message:
return message.find(world)
else:
return -1
print(test())
结果:
7

6. 统计字符串“Hello, welcome to my world.” 中字母 w 出现的次数。

def test():
message = 'Hello, welcome to my world.'
# 计数
num = 0
# for 循环 message
for i in message:
# 判断如果 ‘w’ 字符串在 message 中,则 num +1
if 'w' in i:
num += 1
return num
print(test())
# 结果
2

7. 输入一个字符串 str,输出第 m 个只出现过 n 次的字符,如在字符串 gbgkkdehh 中,找出第 2 个只出现 1 次的字符,输出结果:d

def test(str_test, num, counts):
""" :param str_test: 字符串 :param num: 字符串出现的次数 :param count: 字符串第几次出现的次数 :return: """
# 定义一个空数组,存放逻辑处理后的数据
list = []
# for循环字符串的数据
for i in str_test:
# 使用 count 函数,统计出所有字符串出现的次数
count = str_test.count(i, 0, len(str_test))
# 判断字符串出现的次数与设置的counts的次数相同,则将数据存放在list数组中
if count == num:
list.append(i)
# 返回第n次出现的字符串
return list[counts-1]
print(test('gbgkkdehh', 1, 2))
结果:
d

8. 判断字符串 a = “welcome to my world” 是否包含单词 b = “world”,包含返回 True,不包含返回 False。

def test():
message = 'welcome to my world'
world = 'world'
if world in message:
return True
return False
print(test())
结果:
True

9. 从 0 开始计数,输出指定字符串 A = “hello” 在字符串 B = “hi how are you hello world, hello yoyo!”中第一次出现的位置,如果 B 中不包含 A,则输出 -1。

def test():
message = 'hi how are you hello world, hello yoyo!'
world = 'hello'
return message.find(world)
print(test())
结果:
15

10. 从 0 开始计数,输出指定字符串 A = “hello”在字符串 B = “hi how are you hello world, hello yoyo!”中最后出现的位置,如果 B 中不包含 A,则输出 -1。

def test(string, str):
# 定义 last_position 初始值为 -1
last_position = -1
while True:
position = string.find(str, last_position+1)
if position == -1:
return last_position
last_position = position
print(test('hi how are you hello world, hello yoyo!', 'hello'))
结果:
28

11. 给定一个数 a,判断一个数字是否为奇数或偶数。

while True:
try:
# 判断输入是否为整数
num = int(input('输入一个整数:'))
# 不是纯数字需要重新输入
except ValueError:
print("输入的不是整数!")
continue
if num % 2 == 0:
print('偶数')
else:
print('奇数')
break
结果:
输入一个整数:100
偶数

12. 输入一个姓名,判断是否姓王。

def test():
user_input = input("请输入您的姓名:")
if user_input[0] == '王':
return "用户姓王"
return "用户不姓王"
print(test())
结果:
请输入您的姓名:王总
用户姓王

13. 如何判断一个字符串是不是纯数字组成?

利用 Python 提供的类型转行,将用户输入的数据转换成浮点数类型,如果转换抛异常,则判断数字不是纯数字组成。

def test(num):
try:
return float(num)
except ValueError:
return "请输入数字"
print(test('133w3'))

14. 将字符串 a = “This is string example….wow!” 全部转成大写,字符串 b = “Welcome To My World” 全部转成小写。

a = 'This is string example….wow!'
b = 'Welcome To My World'
print(a.upper())
print(b.lower())

15. 将字符串 a = “ welcome to my world ”首尾空格去掉

  • Python 提供了strip() 方法,可以去除首尾空格,rstrip() 去掉尾部空格,lstrip() 去掉首部空格,replace(" ", “”) 去掉全部空格。
a = ' welcome to my world '
print(a.strip())
  • 还可以通过递归的方式实现:
def trim(s):
flag = 0
if s[:1]==' ':
s = s[1:]
flag = 1
if s[-1:] == ' ':
s = s[:-1]
flag = 1
if flag==1:
return trim(s)
else:
return s
print(trim(' Hello world! '))
  • 通过 while 循环实现:
def trim(s):
while(True):
flag = 0
if s[:1]==' ':
s = s[1:]
flag = 1
if s[-1:] == ' ':
s = s[:-1]
flag = 1
if flag==0:
break
return s
print(trim(' Hello world! '))

16. 将字符串 s = “ajldjlajfdljfddd”,去重并从小到大排序输出”adfjl”。

def test():
s = 'ajldjlajfdljfddd'
# 定义一个数组存放数据
str_list = []
# for循环s字符串中的数据,然后将数据加入数组中
for i in s:
# 判断如果数组中已经存在这个字符串,则将字符串移除,加入新的字符串
if i in str_list:
str_list.remove(i)
str_list.append(i)
# 使用 sorted 方法,对字母进行排序
a = sorted(str_list)
# sorted方法返回的是一个列表,这边将列表数据转换成字符串
return "".join(a)
print(test())
结果:
adfjl

17. 打印出如下图案(菱形):

图片

在这里插入图片描述

def test():
n = 8
for i in range(-int(n/2), int(n/2) + 1):
print(" "*abs(i), "*"*abs(n-abs(i)*2))
print(test())
结果:
**
****
******
********
******
****
**

18. 给一个不多于 5 位的正整数(如 a = 12346),求它是几位数和逆序打印出各位数字。

class Test:
# 计算数字的位数
def test_num(self, num):
try:
# 定义一个 length 的变量,来计算数字的长度
length = 0
while num != 0:
# 判断当 num 不为 0 的时候,则每次都除以10取整
length += 1
num = int(num) // 10
if length > 5:
return "请输入正确的数字"
return length
except ValueError:
return "请输入正确的数字"
# 逆序打印出个位数
def test_sorted(self, num):
if self.test_num(num) != "请输入正确的数字":
# 逆序打印出数字
sorted_num = num[::-1]
# 返回逆序的个位数
return sorted_num[-1]
print(Test().test_sorted('12346'))
结果:
1

19. 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 13 + 53 + 33,因此 153 就是一个水仙花数。那么如何求 1000 以内的水仙花数(3 位数)。

def test():
for num in range(100, 1000):
i = num // 100
j = num // 10 % 10
k = num % 10
if i ** 3 + j ** 3 + k ** 3 == num:
print(str(num) + "是水仙花数")
test()

20. 求 1+2+3…+100 相加的和。

i = 1
for j in range(101):
i = j + i
print(i)
结果:
5051

21. 计算 1-2+3-4+5-…-100 的值。

def test(sum_to):
# 定义一个初始值
sum_all = 0
# 循环想要计算的数据
for i in range(1, sum_to + 1):
sum_all += i * (-1) ** (1 + i)
return sum_all
if __name__ == '__main__':
result = test(sum_to=100)
print(result)
-50

22. 现有计算公式 13 + 23 + 33 + 43 + …….+ n3,如何实现:当输入 n = 5 时,输出 225(对应的公式 : 13 + 23 + 33 + 43 + 53 = 225)。

def test(n):
sum = 0
for i in range(1, n+1):
sum += i*10+i
return sum
print(test(5))
结果:
225

23. 已知 a 的值为“hello”,b 的值为“world”,如何交换 a 和 b 的值,得到 a 的值为“world”,b 的值为”hello”?

a = 'hello'
b = 'world'
c = a
a = b
b = c
print(a, b)

24. 如何判断一个数组是对称数组?

  • 例如 [1,2,0,2,1],[1,2,3,3,2,1],这样的数组都是对称数组。

  • 用 Python 判断,是对称数组打印 True,不是打印 False。

def test():
x = [1, 'a', 0, '2', 0, 'a', 1]
# 通过下标的形式,将字符串逆序进行比对
if x == x[::-1]:
return True
return False
print(test())
结果:
True

25. 如果有一个列表 a = [1,3,5,7,11],那么如何让它反转成 [11,7,5,3,1],并且取到奇数位值的数字 [1,5,11]?

def test():
a = [1, 3, 5, 7, 11]
# 逆序打印数组中的数据
print(a[::-1])
# 定义一个计数的变量
count = 0
for i in a:
# 判断每循环列表中的一个数据,则计数器中会 +1
count += 1
# 如果计数器为奇数,则打印出来
if count % 2 != 0:
print(i)
test()
结果:
[11, 7, 5, 3, 1]
1
5
11

26. 对列表 a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8] 中的数字从小到大排序。

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
print(sorted(a))
结果:
[1, 1, 6, 6, 7, 8, 8, 8, 8, 9, 11]

27. 找出列表 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 中最大值和最小值。

L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
print(max(L1))
print(min(L1))
结果:
88
1
  • 上面是通过 Python 自带的函数实现,如下,可以自己写一个计算程序:
class Test(object):
def __init__(self):
# 测试的列表数据
self.L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
# 从列表中取第一个值,对于数据大小比对
self.num = self.L1[0]
def test_small_num(self, count):
""" :param count: count为 1,则表示计算最大值,为 2 时,表示最小值 :return: """
# for 循环查询列表中的数据
for i in self.L1:
if count == 1:
# 循环判断当数组中的数据比初始值小,则将初始值替换
if i > self.num:
self.num = i
elif count == 2:
if i < self.num:
self.num = i
elif count != 1 or count != 2:
return "请输入正确的数据"
return self.num
print(Test().test_small_num(1))
print(Test().test_small_num(2))
结果:
88
1

28. 找出列表 a = [“hello”, “world”, “yoyo”, “congratulations”] 中单词最长的一个。

def test():
a = ["hello", "world", "yoyo", "congratulations"]
# 统计数组中第一个值的长度
length = len(a[0])
for i in a:
# 循环数组中的数据,当数组中的数据比初始值length中的值长,则替换掉length的默认值
if len(i) > length:
length = i
return length
print(test())
结果:
congratulations

29. 取出列表 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 中最大的三个值。

def test():
L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
return sorted(L1)[:3]
print(test())
结果:
[1, 2, 2]

30. 把列表 a = [1, -6, 2, -5, 9, 4, 20, -3] 中的数字绝对值从小到大排序。

def test():
a = [1, -6, 2, -5, 9, 4, 20, -3]
# 定义一个数组,存放处理后的绝对值数据
lists = []
for i in a:
# 使用 abs() 方法处理绝对值
lists.append(abs(i))
return lists
print(test())
结果:
[1, 6, 2, 5, 9, 4, 20, 3]

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

长按关注

版权声明
本文为[Python学习与数据挖掘]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_38037405/article/details/120965077

  1. It's time for everyone to see your blog written in Django (including deployment tutorial video)
  2. Python扩展速记符 要求用for循环,if语句
  3. Python擴展速記符 要求用for循環,if語句
  4. Le sténographe d'extension Python nécessite une boucle pour, si instruction
  5. Python+人工智能就业班v5.0wumi
  6. python编程技术的题目,希望能得到解答
  7. Pandas determines the header row dynamically
  8. 关于#python#的问题:模拟登陆后能获取到cookie,就是cookie一天就过期
  9. pandas为dataframe添加新的数据行(rows)、在dataframe后面纵向添加一行数据(数据为列表list形式)、列有不匹配将会使用NA值进行填补
  10. pandas使用组合条件筛选、过滤数据行
  11. 热烈祝贺1024,求解Python3.10闪退问题
  12. Python基础题练习题库有没呢?
  13. python构建神经网络,正向和反向传播
  14. python爬虫输入数字翻页才成功,用变量代替不成功,为什么?
  15. 【Python 爬虫】 2、HTTP基本原理
  16. 【Python 爬虫】 1、爬虫基础概念
  17. Python中如何用find函数计数?
  18. 一文搞懂Python装饰器
  19. python数据结构之递归
  20. 关于#python#的问题:为什么这个open函数会报错
  21. Python:多输入数字求和(Python 程序控制结构)
  22. python忽略警告
  23. Python多维数组问题(编写程序统计成绩)
  24. 一步一步展示并总结Python的异常【建议收藏】
  25. Python中奇葩的round函数!
  26. 总结一下Python的模块加载解析
  27. 保姆级指导给Python库创建桌面快捷方式【赶紧收藏】
  28. 多图速成Python基础语法下篇【万字建议收藏】
  29. Python 命令行工具辅助getopt使用解析!
  30. 【python种子项目ppc】保姆级别指导给项目添加测试
  31. 【python种子项目ppc】一行代码生成项目与开发详细指导
  32. 保姆级教程带你开发优质的Python库之下篇【种子项目】
  33. 保姆级教程带你开发优质的Python库之中篇【命令行发行】
  34. 保姆级教程带你开发优质的Python库之上篇【建议收藏】
  35. python列表自动计算总分程序
  36. 某企业职工的月薪问题python 求解 不知道自己哪里写错了
  37. Python中外部函数对class类中的属性的调用
  38. 朋友股票亏惨了,我一怒用Python爬取了证券最新数据
  39. 习题8和9怎么写(Python基础)
  40. python数据分析,求任务4,5
  41. Python 的 f-strings,远比你想象的要强大!
  42. django channels channel_layer.group_send 造成内存溢出
  43. 判断天数问题用python 解决 不知道自己哪里写错了 一直显示invalid syntax
  44. OpenCV-Python对比度受限的自适应直方图均衡CLAHE知识介绍
  45. pandas 如何读取指定位置和数量的列
  46. django后台模型中的文件字段,上传后再下载时提示找不到页面
  47. 关于#python#的问题:使用requests请求网页时出现网页过期是怎么回事啊,cookie也没有过期,也提交了头文件的
  48. Pycharm开发Django项目外键和表关系
  49. [PYTHON][BAT][SHELL] 常见易忘 python、bat、shell 脚本操作汇总(持续更新)
  50. django学习-34.【多对多】表关系对应的完整业务操作
  51. 在GitHub上下载了一个python代码,看readme很疑惑,求解答
  52. 怎么用python程序做这问题
  53. python程序设计实验4-程序的异常处理
  54. 【Python每日作业】Day7: 如何在一个表达式里面合并两个字典?
  55. Python Type Hints 从入门到实践
  56. pyinstaller 打包 exe 无法在没有装python的电脑上运行,提示如下。。
  57. 关于Python中的Image. open函数的使用出现的问题
  58. 代码0基础先学哪个?WEB、python、JAVA
  59. Python基于PCANBasic二次开发使用方法
  60. Python实现相加为奇数则用户赢,如果并且用户能自行选择退出游戏,且计算他们的分数