值得收藏的30道Python练手题(附详解)

1. 已知一个字符串为 “hello_world_yoyo”,收藏如何得到一个队列 [“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=815. 从下标 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())

结果:

76. 统计字符串“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())

# 结果

27. 输入一个字符串 str,输出第 m 个只出现过 n 次的字符,如在字符串 gbgkkdehh 中,找出第 2 个只出现 1 次的字符,输出结果:ddef 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))

结果:

d8. 判断字符串 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())

结果:

True9. 从 0 开始计数,输出指定字符串def test():

message = hi how are you hello world, hello yoyo!

world = hello

return message.find(world)

print(test())

结果:

1510. 从 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))

结果:

2811. 给定一个数 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())

结果:

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

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())

结果:

**

****

滇ICP备2023000592号-31