前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程 基础练习(一)

Python编程 基础练习(一)

作者头像
叶庭云
发布2022-05-06 17:16:20
2410
发布2022-05-06 17:16:20
举报
文章被收录于专栏:Python进阶之路

文章目录

1. 求素数

代码语言:javascript
复制
from datetime import datetime

# 求多少以内的素数
n = 100000
count = 0
start = datetime.now()
for i in range(2, n + 1):
    for j in range(2, i):
        if i % j == 0:   # 是合数
            break
    else:  # 是素数
        count += 1
        # print(i, end=" ")

delta = (datetime.now() - start).total_seconds()
print(count, "\n用时:{}s".format(delta))

求10万以内的素数,有9592个,用时49.789252s。

素数优化

代码语言:javascript
复制
from datetime import datetime
# 求多少以内的素数
n = 100000
count = 1   # 2是素数
start = datetime.now()
for i in range(3, n + 1, 2):   # 大于2的偶数不可能是素数了
    for j in range(3, int(i ** 0.5) + 1, 2):
        if i % j == 0:  # 是合数
            break
    else:   # 是素数
        count += 1
        # print(i, end=" ")
delta = (datetime.now() - start).total_seconds()
print(count, "\n用时:{}s".format(delta))

求10万以内的素数,有9592个,用时0.162093s。

通过对比可看出,通过素数优化,大大提高了算法的效率。

2. 打印菱形

观察规律,找对称性。

代码语言:javascript
复制
n = int(input("打印几行:"))
e = n // 2
for i in range(-e, n-e):
    print(" " * abs(i) + "*" * (n - 2 * abs(i)))

结果如下:

3. 打印杨辉三角

代码语言:javascript
复制
row = int(input('打印杨辉三角前几行:'))


def print_triangle(x):    # 打印几行
    tri = [1]    # 当前行所有元素
    pre = [1]    # 上一行所有元素
    n = 1
    while n <= x:
        yield tri   # yield生成器函数  返回
        for i in range(1, len(pre)):
            # 中间的各个元素值 = 上一行相应位置的值 + 与前一位置元素的值
            tri[i] = pre[i-1] + pre[i]
        # 每次计算完列表tri中的元素之后,通过append(1)来添加末尾的1
        tri.append(1)
        # 得到后,传给上行
        pre = tri[:]
        n += 1


trianges = print_triangle(row)   # 传入参数
for item in trianges:
    print(item)

运行结果如下:
打印杨辉三角前几行:5
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

结果如下:

4. 打印斐波那契数列

代码语言:javascript
复制
def fibonacii(n):
    if n <= 1:  # 0 1
        return n
    else:
        return (fibonacii(n - 1) + fibonacii(n - 2))


x = int(input("输出前几项?: "))
if x <= 0:
    print("请输入输入正数!")
else:
    print("斐波那契数列前{}项:".format(x), end=" ")
    for i in range(1, x + 1):
        print(fibonacii(i), end=" ")

5. 求水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3 + 3^3 = 153)。

代码语言:javascript
复制
print("水仙花数:", end=" ")
for i in range(100, 1000):   # 三位数
    if i == sum([int(x) ** 3 for x in str(i)]):  # 求水仙花数
        print(i, end=" ")
    else:
        continue

结果如下:

6. 模拟双色球随机选号

代码语言:javascript
复制
import random

num = int(input("请输入注数:"))
print("*" * 16 + " 双色球 {} 注 ".format(num) + "*" * 16)

for i in range(num):
    flag = True
    red_ball_list = []
    while flag:
        # 红球 1-33中选
        red_ball = random.randint(1, 33)
        if red_ball not in red_ball_list:
            # 个位数的  前面加个0  变字符串
            if red_ball < 10:
                red_ball = "0{}".format(red_ball)
                red_ball_list.append(red_ball)
            else:
                red_ball_list.append(str(red_ball))
        # 选出6个不重复的红球号码
        if len(red_ball_list) == 6:
            flag = False
    # 蓝球  1-16中选
    blue_ball = random.randint(1, 16)
    if blue_ball < 10:
        blue_ball = "0{}".format(blue_ball)
    else:
        blue_ball = str(blue_ball)
    print("红球:" + " ".join(red_ball_list, ) + "   蓝球:" + blue_ball)

print("*" * 45)

作者:叶庭云 CSDN:https://blog.csdn.net/fyfugoyfa 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 求素数
  • 2. 打印菱形
  • 3. 打印杨辉三角
  • 4. 打印斐波那契数列
  • 5. 求水仙花数
  • 6. 模拟双色球随机选号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档