学学习简单的练习,学到后面会有越来越多的解法来写!

作业的目的是为了让大家熟悉程序语言,锻炼将思路转换成程序逻辑。

九九乘法表

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经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数... - 小黑电脑...相关推荐

  1. python斐波拉契数列/素数数列

    一.斐波拉契数列 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, - def fib(n ...

  2. 斐波拉契数列python写法

    文章目录 第一种:递推方法 第二种:递归方式 第三种:用一个类写出比较全面的斐波拉契 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonard ...

  3. Python输出斐波拉契数列

    斐波拉契数列 1.什么是斐波拉契数列 2.用Python代码输入数列前30项 遇到问题不要迷茫,多思考,多问,这样你才能越发优秀 1.什么是斐波拉契数列 斐波那契数列(Fibonacci sequen ...

  4. Python 探讨斐波拉契数列模素数的周期问题

    Python 探讨斐波拉契数列模素数的周期问题之目录 前言 一.生成斐波拉契数列 二.创建素数列表 三.搜索周期数列的循环节 3.1 斐波拉契数列模 p p p 的周期 3.2 循环节的搜寻代码 3. ...

  5. python打印斐波拉契数列

    什么是斐波拉契数列? 斐波那契数列指的是这样一个数列" 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597, ...

  6. 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' # ...

  7. 【斐波拉契数列】 Python

    [斐波拉契数列:这个数列从第三项开始,每一项都等于前两项之和] 题目内容:已知斐波拉契数列的前两项都是1, 我们定义求斐波拉契数列的第n项(n<=50)的函数为fbnq,程序主体如下:n=int ...

  8. 递归与递推 输出斐波拉契数列的前n项 python

    输出斐波拉契数列的前n项 python 递归与递推 文章目录 输出斐波拉契数列的前n项 python 题设 题解 题设 以下数列 0 1 1 2 3 5 8 13 21 - 被称为斐波纳契数列. 这个 ...

  9. Python输入整数n,求斐波拉契数列第n个数

    递归方法: # 输入整数n,求斐波拉契数列第n个数. # 思路: # 递归式算法: # 利用f(n) = f(n-1) + f(n-2)的特性来进行递归def fn(n):if n==0:return ...

  10. python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......

    CSDN 双十一 活动优惠提前抢!全站好课1元起,万券齐发折上折! 11.11 超值膨胀金[10元抵100元]限量发放!11月11日当天全站通用,更有机会享受折上折优惠!仅限299份,先到先得! 学学 ...

最新文章

  1. 图解Java的substring()方法底层干了啥?
  2. 构造函数 原型对象 对象实例 图
  3. mysql 正则 java 区别_MySQL中的正则表达式
  4. 8位移位寄存器和优先编码器
  5. java 反取字符串
  6. 外设驱动库开发笔记5:AD7705系列ADC驱动
  7. java excel解析 poi_Java解析Excel之POI(一)
  8. 详解Python的装饰器
  9. EC-JET喷码机报EC2.01偏转板电压故障
  10. linux下借助有道在线词典查词
  11. 腾讯微博qq说说备份导出工具_10年过去了,腾讯微博终于被判了死刑。。。
  12. Python 第三方模块 绘图 Matplotlib模块 绘图3(极坐标图,热力图,箱线图)
  13. 使用 Python 进行面部识别
  14. Java 后端不懂 GC 调优很丢脸吗?
  15. BLUETECH 聚蓝滤水壶的使用方法
  16. LLL —— SVP渐进算法(简记)
  17. 面试必备:常用的设计模式总结
  18. 毕业前三年如何拿到好绩效
  19. 中国大学慕课第7周测验
  20. 读List源码之Vector,ArrayList,LinkedList

热门文章

  1. selenium下拉列表定位之 select+option 的定位
  2. 天猫order前后台
  3. html+angularjs+redis获取后台数据模拟京东/天猫的商品分类导航
  4. HDU6078 Wavel Sequence
  5. 【懒懒的Python学习笔记六】
  6. 【晓松奇谈】历史是什么,人生是什么,世界是什么,未来是什么?高晓松的回答
  7. 猫推荐算法大赛Top 9团队
  8. 如何解决app store显示invalid address的问题
  9. 服务器芯片市场容量,未来内存接口芯片市场规模 使用内存接口芯片的服务器内存模组主要有寄存内存模组(RDIMM)和减载内存模组(LRDIMM)两种。RDIMM需要一颗寄... - 雪球...
  10. python表达爱意_程序员有哪些对女友表达爱意的奇招?