Python3 编程实例(36 - 40)

147 阅读3分钟

这是我参与更文挑战的第 19 天,活动详情查看: 更文挑战

实例 36

题目

求 100 之内的素数。

分析

所谓素数就是除 1 和自身外,无法被其他数整除的数,那就循环比这个数的平方根还小的数,并取模,如果都不能整除,那么这个数就是素数。

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Time    : 2021/4/10 11:02
# @Author  : cunyu
# @Email   : 747731461@qq.com
# @Site    : https://cunyu1943.site
# 公众号    : 村雨遥
# @File    : 36.py
# @Software: PyCharm
# @Desc    : 练习实例36

if __name__ == '__main__':
    count = 0
    for i in range(1, 101):
        if i > 1:
            for j in range(2, i):
                if (i % j == 0):
                    break
            else:
                print(i, end='\t')
                count += 1
                if (count % 5 == 0):
                    print()
    print("共有素数 %d 个" % count)

结果

实例 37

题目

对 10 个数进行排序。

分析

利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后 8 个进行比较,并进行交换。

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Time    : 2021/4/10 11:09
# @Author  : cunyu
# @Email   : 747731461@qq.com
# @Site    : https://cunyu1943.site
# 公众号    : 村雨遥
# @File    : 37.py
# @Software: PyCharm
# @Desc    : 练习实例37

if __name__ == '__main__':
    lists = []
    for i in range(10):
        lists.append(int(input("请输入" + str(i + 1) + "个整数\n")))
    print("排序前的数")
    for item in lists:
        print(item, end='\t')

    # 排序
    for i in range(9):
        min = i
        for j in range(i + 1, 10):
            if lists[min] > lists[j]:
                min = j
        tmp = lists[i]
        lists[i] = lists[min]
        lists[min] = tmp
    print("\n排序后的数")
    for item in lists:
        print(item, end='\t')

结果

实例 38

题目

求一个 3 * 3 矩阵主对角线元素之和。

分析

分别输入矩阵的 9 个元素,然后求对角线元素之和,对角线元素的行列坐标相等。

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Time    : 2021/4/10 12:36
# @Author  : cunyu
# @Email   : 747731461@qq.com
# @Site    : https://cunyu1943.site
# 公众号    : 村雨遥
# @File    : 38.py
# @Software: PyCharm
# @Desc    : 练习实例38


if __name__ == '__main__':
    lists = []
    sum = 0.0

    for i in range(3):
        lists.append([])
        for j in range(3):
            lists[i].append(float(input("输入元素\n")))

    print("这个矩阵是:")
    for i in range(3):
        for j in range(3):
            print(lists[i][j], end='\t')
        print("\n")

    for i in range(3):
        sum += lists[i][i]

    print("主对角线元素和是:" + str(sum))

结果

实例 39

题目

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析

调用 sorted_add(s, number),表示在有序列表 s 中正确位置插入 number 元素;

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Time    : 2021/4/10 12:49
# @Author  : cunyu
# @Email   : 747731461@qq.com
# @Site    : https://cunyu1943.site
# 公众号    : 村雨遥
# @File    : 39.py
# @Software: PyCharm
# @Desc    : 练习实例39

def sorted_add(lists, num):
    for i in range(len(lists)):
        if lists[i] > num:
            lists.insert(i, num)
            break
        if i == len(lists) - 1:
            lists.append(num)


if __name__ == '__main__':
    lists = [1, 4, 5, 6, 9, 19]
    print("加入前")
    print(lists)

    num = int(input("\n输入你要加入的数\n"))
    sorted_add(lists, num)
    print("加入后")
    print(lists)

结果

实例 40

题目

将一个数组逆序输出。

分析

直接用第一个与最后一个交换即可。

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Time    : 2021/4/10 13:11
# @Author  : cunyu
# @Email   : 747731461@qq.com
# @Site    : https://cunyu1943.site
# 公众号    : 村雨遥
# @File    : 40.py
# @Software: PyCharm
# @Desc    : 练习实例40

if __name__ == '__main__':
    lists = [23, 43, 54, 234, 3, 5, 9]
    print("逆序前")
    print(lists)
    size = len(lists)
    for i in range(len(lists) // 2):
        lists[i], lists[size - i - 1] = lists[size - i - 1], lists[i]
    print("逆序后")
    print(lists)

结果