Python编程 基础练习(一)

简介: 经典的题目分析和代码实现

1. 求素数


fromdatetimeimportdatetime# 求多少以内的素数n=100000count=0start=datetime.now()
foriinrange(2, n+1):
forjinrange(2, i):
ifi%j==0:   # 是合数breakelse:  # 是素数count+=1# print(i, end=" ")delta= (datetime.now() -start).total_seconds()
print(count, "\n用时:{}s".format(delta))

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

671e32950c8e453081f22ce11af8ea14.gif


素数优化


fromdatetimeimportdatetime# 求多少以内的素数n=100000count=1# 2是素数start=datetime.now()
foriinrange(3, n+1, 2):   # 大于2的偶数不可能是素数了forjinrange(3, int(i**0.5) +1, 2):
ifi%j==0:  # 是合数breakelse:   # 是素数count+=1# print(i, end=" ")delta= (datetime.now() -start).total_seconds()
print(count, "\n用时:{}s".format(delta))

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

2.gif

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


2. 打印菱形


观察规律,找对称性。

n=int(input("打印几行:"))
e=n//2foriinrange(-e, n-e):
print(" "*abs(i) +"*"* (n-2*abs(i)))

结果如下:

3.gif


3. 打印杨辉三角


row=int(input('打印杨辉三角前几行:'))
defprint_triangle(x):    # 打印几行tri= [1]    # 当前行所有元素pre= [1]    # 上一行所有元素n=1whilen<=x:
yieldtri# yield生成器函数  返回foriinrange(1, len(pre)):
# 中间的各个元素值 = 上一行相应位置的值 + 与前一位置元素的值tri[i] =pre[i-1] +pre[i]
# 每次计算完列表tri中的元素之后,通过append(1)来添加末尾的1tri.append(1)
# 得到后,传给上行pre=tri[:]
n+=1trianges=print_triangle(row)   # 传入参数foritemintrianges:
print(item)
运行结果如下:打印杨辉三角前几行:5[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

结果如下:

4.gif


4. 打印斐波那契数列


deffibonacii(n):
ifn<=1:  # 0 1returnnelse:
return (fibonacii(n-1) +fibonacii(n-2))
x=int(input("输出前几项?: "))
ifx<=0:
print("请输入输入正数!")
else:
print("斐波那契数列前{}项:".format(x), end=" ")
foriinrange(1, x+1):
print(fibonacii(i), end=" ")

5. 求水仙花数


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

print("水仙花数:", end=" ")
foriinrange(100, 1000):   # 三位数ifi==sum([int(x) **3forxinstr(i)]):  # 求水仙花数print(i, end=" ")
else:
continue

结果如下:

6.gif

6. 模拟双色球随机选号


importrandomnum=int(input("请输入注数:"))
print("*"*16+" 双色球 {} 注 ".format(num) +"*"*16)
foriinrange(num):
flag=Truered_ball_list= []
whileflag:
# 红球 1-33中选red_ball=random.randint(1, 33)
ifred_ballnotinred_ball_list:
# 个位数的  前面加个0  变字符串ifred_ball<10:
red_ball="0{}".format(red_ball)
red_ball_list.append(red_ball)
else:
red_ball_list.append(str(red_ball))
# 选出6个不重复的红球号码iflen(red_ball_list) ==6:
flag=False# 蓝球  1-16中选blue_ball=random.randint(1, 16)
ifblue_ball<10:
blue_ball="0{}".format(blue_ball)
else:
blue_ball=str(blue_ball)
print("红球:"+" ".join(red_ball_list, ) +"   蓝球:"+blue_ball)
print("*"*45)

7.gif

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
284 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
308 104
|
2月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
254 103
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
192 82
|
1月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
178 3
|
1月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
410 3
|
1月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
259 3
|
1月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
248 0
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
81 0
|
2月前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
321 0

推荐镜像

更多