展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > 附带详细解释的30道值得练习Python的题目

附带详细解释的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”?使

本文目录

    附带详细解释的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=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 开始计数,输出指定字符串

    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:
     returntrim(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. 打印出如下图案(菱形):

    附带详细解释的30道值得练习Python的题目

    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]
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。