python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......
CSDN 双十一 活动优惠提前抢!全站好课1元起,万券齐发折上折! 11.11 超值膨胀金【10元抵100元】限量发放!11月11日当天全站通用,更有机会享受折上折优惠!仅限299份,先到先得! 学学习简单的练习 学到后面会有越来越多的
学学习简单的练习,学到后面会有越来越多的解法来写!
作业的目的是为了让大家熟悉程序语言,锻炼将思路转换成程序逻辑。
九九乘法表
help(print)
先思考能不能打印出方阵
# 1 方阵
# 1 方阵
for i in range(1, 10):
line = ''
for j in range(1, 10):
line += str(i) + '*' + str(j) + '=' + str(i*j) + ' '
print(line)
print('-' * 30)
# 2 九九乘法表
for i in range(1, 10):
for j in range(1, 10):
if i >= j:
print(str(j) + '*' + str(i) + '=' + str(i*j), end=' ')
print()
print('-' * 30)
# 条件合并
for i in range(1, 10):
for j in range(1, i+1):
print(str(j) + '*' + str(i) + '=' + str(i*j), end=' ')
print()
print('-' * 30)
# 3 九九乘法表 对齐
for i in range(1, 10):
for j in range(1, i+1):
product = i * j
product = str(product) + ' ' if j > 1 and product < 10 else str(product) #这里用表达式(python推荐用)
print(str(j) + '*' + str(i) + '=' + product, end=' ')
print()
print('-' * 30)
# 4 九九乘法表 制表符对齐
for i in range(1, 10):
for j in range(1, i+1):
print(str(j) + '*' + str(i) + '=' + str(i*j), end='\t')
print()
print('-' * 30)
# 5 使用字符串format方法
for i in range(1, 10):
line = ''
for j in range(1, i+1):
line += '{0}*{1}={2} '.format(j, i, i*j)
print(line)
print('-' * 30)
# 5 对齐
for i in range(1, 10):
line = ''
for j in range(1, i+1):
line += '{0}*{1}={2:<2} '.format(j, i, i*j)
print(line)
print('-' * 30)
{2:<2}对应i*j,:<2冒号是分割符号,
# 5 对齐改进
for i in range(1, 10):
line = ''
for j in range(1, i+1):
product = i * j
line += '{}*{}={}{}'.format(j, i, product, ' ' if j > 1 and product < 10 else ' ')
print(line)
print('-' * 30)
# 其它对齐
for i in range(1, 10): # row
for j in range(1, i+1): # column [1, i+1) 1 <= j <= i
print("{}*{}={}{}".format(j, i, i*j, ' ' if j==2 and i<5 else ''),
end='\n' if i == j else ' ')
扩展题:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
请打印成上面的形式
# 打印九九乘法表方阵的上半部分
for i in range(1, 10):
line = ''
print(' '*7*(i-1), end='') # 前置空格
for j in range(i, 10):
product = i * j
line += '{}*{}={}{}'.format(i, j, product, ' ' if product < 10 else ' ')
print(line)
下面采用右对齐方式,且分割均匀
for i in range(1, 10):
line = ''
for j in range(i, 10):
line += '{}*{}={:
print('{:>66}'.format(line))
打印如下菱形
*
***
*****
*******
*****
***
*
思路:
看到规律了吗?
for i in range(-3,4):
if i<0:
prespace = -i
else:
prespace = i
print(' '*prespace + '*'*(7-prespace*2))
把if语句改成三元表达式的样子,也可以使用abs(),内建绝对值函数
for i in range(-3, 4):
print(' ' * abs(i) + '*' * (7 - 2 * abs(i)))
居中打印
for i in range(-3, 4):
print("{:^7}".format('*'*(7-2*abs(i))))
当然菱形也可以居中打印,请自行完成
打印闪电
*
**
***
********
***
**
*
分析如下:
行号 *个数 前空格 后空格数 总空格数 数据
1 1 3 3 6 -3
2 2 2 3 5 -2
3 3 1 3 4 -1
4 7 0 0 0 0
5 3 3 1 4 1
6 2 3 2 5 2
7 1 3 3 6 3
代码:
for i in range(-3, 4):
if i < 0:
print(' ' * (-i) + '*' * (4 + i))
elif i > 0:
print(' ' * 3 + '*' * (4 - i))
else:
print('*' * 7)
#延时扩展
n = 9
e = n // 2
x = n - e
for i in range(-e, x):
if i < 0:
print(' ' * -i + (x + i) * '*')
elif i > 0:
print(' ' * e + (x - i) * '*')
else: # i == 0
print('*' * n)
斐波那契数列,100以内
斐波那契数列_百度百科
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)
这是一个线性递推数列
print(0)
print(1)
a = 0
b = 1
while True :
c = a + b
if c > 100 : break
a = b
b = c
print(c)
求斐波那契数列第101项
a = 1
b = 1
print('index={}, fib={}'.format(0, 0))
print('index={}, fib={}'.format(1, a))
print('index={}, fib={}'.format(2, b))
index = 2
while True:
c = a + b
index += 1
print('index={}, fib={}'.format(index, c))
if index == 101: break
a = b
b = c
# index=101, fib=573147844013817084101
求10万内的所有素数
此题的目的是为了让大家注意效率问题
for x in range(2,100):
for i in range(2,x):
if x % i == 0:
break
else:
print(x)
为什么到一个数的“一半”就可以了
for x in range(2,100000):
for i in range(2,int(x ** 0.5)+1):
if x % i == 0:
break
else:
print(x)
下面这段代码是错误代码,用x=4测试,因为内层循环缺少2,那么偶数就出了问题
for x in range(2,100000):
for i in range(3,int(x ** 0.5)+1,2):
if x % i == 0:
break
else:
print(x)
修改为
for x in range(3,100000,2): # 舍弃掉所有偶数
for i in range(3, int(x ** 0.5) + 1, 2): # 为什么从3开始,且step为2?
if x % i == 0:
break
else:
print(x)
为什么从3开始,且step为2?
既然没有偶数,就不用和2取模了。
奇数%偶数能整除吗
利用素数性质:所有大于10的质数中,个位数只有1,3,7,9。
count = 1
for x in range(3, 100000, 2): # 舍弃掉所有偶数
if x > 10 and x % 10 == 5: # 所有大于10的质数中,个位数只有1,3,7,9。意思就是大于5,结尾是5就能被5整除了
continue
for i in range(3, int(x ** 0.5) + 1, 2):
if x % i == 0:
break
else:
count += 1
print(x, count) # 9592
如何计算时间,import datetime
count = 0
for x in range(2,100000):
for i in range(2,x):
if x % i == 0:
break
else:
count += 1
print(count)
# 9592
count = 0
for x in range(2,100000):
for i in range(2,int(x ** 0.5)+1):
if x % i == 0:
break
else:
count += 1
print(count)
# 9592
应用在密码学领域,都要使用大素数。
# 两种算法的对比的完整代码
import datetime
upper_limit = 100000
delta = [0,0]
counts = [0,0]
start = datetime.datetime.now()
for _ in range(10):
counts[0] = 0
for x in range(2,upper_limit):
for i in range(2,int(x ** 0.5)+1):
if x % i == 0:
break
else:
#print(x)
counts[0] += 1
delta[0] = (datetime.datetime.now() - start).total_seconds()
start = datetime.datetime.now()
for _ in range(10):
counts[1] = 1
#print(2)
for x in range(3,upper_limit,2):
for i in range(3,int(x ** 0.5)+1,2):
if x % i == 0:
break
else:
#print(x)
counts[1] += 1
delta[1] = (datetime.datetime.now() - start).total_seconds()
print(delta, sep="\t")
print(counts, sep="\t")
▼
亲,需要你的“分享”和“在看”
IT入门?感谢关注程序员题库→
程序员用的单词表→
练习地址:www.520mg.com/it
以上信息来源于网络,如有侵权,请联系站长删除。
python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......相关推荐
- python斐波拉契数列/素数数列
一.斐波拉契数列 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, - def fib(n ...
- 斐波拉契数列python写法
文章目录 第一种:递推方法 第二种:递归方式 第三种:用一个类写出比较全面的斐波拉契 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonard ...
- Python输出斐波拉契数列
斐波拉契数列 1.什么是斐波拉契数列 2.用Python代码输入数列前30项 遇到问题不要迷茫,多思考,多问,这样你才能越发优秀 1.什么是斐波拉契数列 斐波那契数列(Fibonacci sequen ...
- Python 探讨斐波拉契数列模素数的周期问题
Python 探讨斐波拉契数列模素数的周期问题之目录 前言 一.生成斐波拉契数列 二.创建素数列表 三.搜索周期数列的循环节 3.1 斐波拉契数列模 p p p 的周期 3.2 循环节的搜寻代码 3. ...
- python打印斐波拉契数列
什么是斐波拉契数列? 斐波那契数列指的是这样一个数列" 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597, ...
- python斐波拉契数列(Fibonacci)
##斐波拉契数列(Fibonacci) def Fibonacci(m):n,a,b=0,0,1 while n<m:print(b)a,b=b,a+bn +=1 return 'Done' # ...
- 【斐波拉契数列】 Python
[斐波拉契数列:这个数列从第三项开始,每一项都等于前两项之和] 题目内容:已知斐波拉契数列的前两项都是1, 我们定义求斐波拉契数列的第n项(n<=50)的函数为fbnq,程序主体如下:n=int ...
- 递归与递推 输出斐波拉契数列的前n项 python
输出斐波拉契数列的前n项 python 递归与递推 文章目录 输出斐波拉契数列的前n项 python 题设 题解 题设 以下数列 0 1 1 2 3 5 8 13 21 - 被称为斐波纳契数列. 这个 ...
- Python输入整数n,求斐波拉契数列第n个数
递归方法: # 输入整数n,求斐波拉契数列第n个数. # 思路: # 递归式算法: # 利用f(n) = f(n-1) + f(n-2)的特性来进行递归def fn(n):if n==0:return ...
最新文章
- SAP的SD模块中客户的销售视图--扩充客户销售范围
- windows添加删除静态路由
- Win10如何找出占用硬盘空间大的文件及怎么删除
- 解决《Mobile绘制背景图片》中的问题
- docker保存对容器的修改
- 图像风格迁移_图像风格迁移—谷歌大脑团队任意图像风格化迁移论文详解
- list选取多个元素 python_python基础篇:list列表的操作大盘点
- Activity 关于生命周期一些问题的实践验证
- js将数值格式化成金额形式
- 改变风格(css)的四种方法
- 计算机二级未来教育押题准吗,计算机二级快速通关秘籍,21%的合格率真相原来是这样!...
- linux 一些好用的软件
- JS中实现继承的几种方式
- 手动修改dns服务器设置,手动设置dns地址服务器
- 树莓派基于motion的usb摄像头监控
- 杭州电子科技大学计算机专业考研分数线,2021年杭州电子科技大学计算机考研分数线等数据分析...
- (转)2007北京高考作文题目(太有才了.我都看了无数遍了)
- 搞定java面试系列--jvm3 gc垃圾回收
- android 实现微信朋友圈文字收起与全文显示功能
- 游戏王-黑暗大魔法师发动教程
热门文章
- 某悦的WinRT学习记录1
- Debezium 抽取oracle数据
- pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
- Android开发如何进阶,薪资如何跟上年龄的脚步?,深度解读Netty
- Web身份验证(WebAuthn)
- C#设计模式——访问者模式(Vistor Pattern)
- 华为的芯片战略:别忘记,代号—SD502!
- NUGET源不存在,安装Nuget包提示“本地源不存在”
- apple tv设置_如何设置Apple TV以自动打开电视或媒体中心
- 转:sklearn 用户手册之1.12. 多类别与多标签算法