python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......
CSDN 雙十一 活動(dòng)優(yōu)惠提前搶!全站好課1元起,萬(wàn)券齊發(fā)折上折! 11.11 超值膨脹金【10元抵100元】限量發(fā)放!11月11日當(dāng)天全站通用,更有機(jī)會(huì)享受折上折優(yōu)惠!僅限299份,先到先得! 學(xué)學(xué)習(xí)簡(jiǎn)單的練習(xí) 學(xué)到后面會(huì)有越來(lái)越多的
學(xué)學(xué)習(xí)簡(jiǎn)單的練習(xí),學(xué)到后面會(huì)有越來(lái)越多的解法來(lái)寫(xiě)!
作業(yè)的目的是為了讓大家熟悉程序語(yǔ)言,鍛煉將思路轉(zhuǎn)換成程序邏輯。
九九乘法表
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 九九乘法表 對(duì)齊
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) #這里用表達(dá)式(python推薦用)
print(str(j) + '*' + str(i) + '=' + product, end=' ')
print()
print('-' * 30)
# 4 九九乘法表 制表符對(duì)齊
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 對(duì)齊
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}對(duì)應(yīng)i*j,:<2冒號(hào)是分割符號(hào),
# 5 對(duì)齊改進(jìn)
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)
# 其它對(duì)齊
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 ' ')
擴(kuò)展題:
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
請(qǐng)打印成上面的形式
# 打印九九乘法表方陣的上半部分
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)
下面采用右對(duì)齊方式,且分割均勻
for i in range(1, 10):
line = ''
for j in range(i, 10):
line += '{}*{}={:
print('{:>66}'.format(line))
打印如下菱形
*
***
*****
*******
*****
***
*
思路:
看到規(guī)律了嗎?
for i in range(-3,4):
if i<0:
prespace = -i
else:
prespace = i
print(' '*prespace + '*'*(7-prespace*2))
把if語(yǔ)句改成三元表達(dá)式的樣子,也可以使用abs(),內(nèi)建絕對(duì)值函數(shù)
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))))
當(dāng)然菱形也可以居中打印,請(qǐng)自行完成
打印閃電
*
**
***
********
***
**
*
分析如下:
行號(hào) *個(gè)數(shù) 前空格 后空格數(shù) 總空格數(shù) 數(shù)據(jù)
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)
#延時(shí)擴(kuò)展
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)
斐波那契數(shù)列,100以?xún)?nèi)
斐波那契數(shù)列_百度百科
斐波那契數(shù)列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
如果設(shè)F(n)為該數(shù)列的第n項(xiàng)(n∈N*),那么這句話(huà)可以寫(xiě)成如下形式::F(n)=F(n-1)+F(n-2)
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)
這是一個(gè)線性遞推數(shù)列
print(0)
print(1)
a = 0
b = 1
while True :
c = a + b
if c > 100 : break
a = b
b = c
print(c)
求斐波那契數(shù)列第101項(xiàng)
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萬(wàn)內(nèi)的所有素?cái)?shù)
此題的目的是為了讓大家注意效率問(wèn)題
for x in range(2,100):
for i in range(2,x):
if x % i == 0:
break
else:
print(x)
為什么到一個(gè)數(shù)的“一半”就可以了
for x in range(2,100000):
for i in range(2,int(x ** 0.5)+1):
if x % i == 0:
break
else:
print(x)
下面這段代碼是錯(cuò)誤代碼,用x=4測(cè)試,因?yàn)閮?nèi)層循環(huán)缺少2,那么偶數(shù)就出了問(wèn)題
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): # 舍棄掉所有偶數(shù)
for i in range(3, int(x ** 0.5) + 1, 2): # 為什么從3開(kāi)始,且step為2?
if x % i == 0:
break
else:
print(x)
為什么從3開(kāi)始,且step為2?
既然沒(méi)有偶數(shù),就不用和2取模了。
奇數(shù)%偶數(shù)能整除嗎
利用素?cái)?shù)性質(zhì):所有大于10的質(zhì)數(shù)中,個(gè)位數(shù)只有1,3,7,9。
count = 1
for x in range(3, 100000, 2): # 舍棄掉所有偶數(shù)
if x > 10 and x % 10 == 5: # 所有大于10的質(zhì)數(shù)中,個(gè)位數(shù)只有1,3,7,9。意思就是大于5,結(jié)尾是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
如何計(jì)算時(shí)間,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
應(yīng)用在密碼學(xué)領(lǐng)域,都要使用大素?cái)?shù)。
# 兩種算法的對(duì)比的完整代碼
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入門(mén)?感謝關(guān)注程序員題庫(kù)→
程序員用的單詞表→
練習(xí)地址:www.520mg.com/it
以上信息來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系站長(zhǎng)刪除。
總結(jié)
以上是生活随笔為你收集整理的python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数......的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 范伟语录
- 下一篇: 秒启万台主机,腾讯云云硬盘数据调度架构演