您好,登錄后才能下訂單哦!
1.打印一個(gè)邊長(zhǎng)為n的正方形
for i in range (6):
if i%5==0:
print(' '6)
else:
print(' '+' '4+'* ')
a=int(input('<<'))
for i in range (a):
if i%(a-1)==0:
print(' 'a)
else:
print(' '+' '(a-2)+'* ')
#求100內(nèi)所有奇數(shù)的和(2500)
a=0
for i in range(1,100,2):
a=a+i
print (a)
#判斷質(zhì)數(shù)
a=5557
for i in range(2,5557):
if 5557%i==0:
print("no")
break
else:
print("1")
a=int (input(">>>"))
for i in range(2,a):
if a%i==0:
print("no")
break
else:
print("1")
打標(biāo)記用flag。優(yōu)化的話(huà)應(yīng)該是range半數(shù)就可以,除去除2的偶數(shù)只用奇數(shù)應(yīng)該也是優(yōu)化
#打印99乘法表
99 88 77 66 55 44 33 22 11
98 87 76 65 54 43 32 21
97 86 75 64 53 42 31
96 85 74 63 52 41
95 84 73 62 51
94 83 72 61
93 82 71
92 81
9*1
19 29 39 49 59 69 79 89 99
18 28 38 48 58 68 78 88
17 27 37 47 57 67 77
11 12 13 14 15 16 17 18 19
22 23 24 25 26 27 28 2*9
99 98 97 96 95 94 93 92 91
88 8*7
for i in range (1,10):
for j in range (i,10):
print (str(i)+''+str(j)+'='+str(ij),end=' ')
print('\t')
缺點(diǎn)就是不對(duì)齊,有改進(jìn)的方法應(yīng)該。標(biāo)記。不對(duì)齊的方法找到了就是做一個(gè)制表符\t這樣打出來(lái)的會(huì)成為對(duì)齊的方式。直接將改后的放到上面。
#打印一個(gè)菱形
菱形的打印,初步的想法就是把上半部分和下半部分分開(kāi)用print打印這應(yīng)該是最基礎(chǔ)的想法了。讓我們來(lái)一起實(shí)現(xiàn)它。。。其實(shí)好像不好實(shí)現(xiàn),在range函數(shù)當(dāng)中很難實(shí)現(xiàn)完美的打印,這個(gè)是1、3、5、7步進(jìn),空格是3、2、1、0步進(jìn)。如果用1到4來(lái)做的話(huà),格式是空(3-i) 器(2i+1) 空(3-i),這樣仿佛上半部分能夠?qū)崿F(xiàn)
for i in range(1,5):
print(' '(4-i)+''(2i-1)+' '(4-i))
這樣可以實(shí)現(xiàn)上半部分的打印,下半部分同理,全部的代碼可以如下打出,而我們就可以得到了一個(gè)最終的圖形
for i in range(1,5):
print(' '(4-i)+''(2i-1)+' '(4-i))
for j in range(1,4):
print(' 'j+''(7-2j)+' 'j)
****可以鏡像復(fù)制一下也可以出來(lái)就跟打印正方形的那個(gè)方法一樣。暫時(shí)不會(huì),標(biāo)記。
#打印100以?xún)?nèi)斐波那契數(shù)列
斐波那契數(shù)列記著好像是f(2)=f(1)+f(0),查閱了一下發(fā)現(xiàn)是第一項(xiàng)等于1第二項(xiàng)等于1,,嘖嘖,我這個(gè)理解好像是比較深的那個(gè),因?yàn)槿绻玫絩ange函數(shù)就可以從零開(kāi)始記了,前100項(xiàng)就可以用range(0,100)來(lái)實(shí)現(xiàn),第100項(xiàng)也就是到99為止,讓我們來(lái)實(shí)現(xiàn)它吧。代碼是這個(gè)樣子的
a=1
b=1
print(a)
print(b)
for i in range(98):
c=a+b
a=b
b=c
print (c)
額,出現(xiàn)了一個(gè)這樣的問(wèn)題就是在前面傻傻的打了兩行輸出a,b,這樣range函數(shù)就自然到了98就可以停止了。想不到怎么把a(bǔ)和b加載到循環(huán)里。這樣其實(shí)打印第101項(xiàng)就沒(méi)那么難了。嘖嘖,理解錯(cuò)誤了。是100以?xún)?nèi)的,那在這里可以引用while,如果繼續(xù)用for的話(huà),采用break就好了
a=1
b=1
print(a)
print(b)
for i in range(98):
c=a+b
a=b
b=c
if c<100:
print (c)
else:
break
其實(shí)想一想用while true也行。
a=1
b=1
print(a)
print(b)
while True:
c=a+b
a=b
b=c
if c<100:
print (c)
else:
break
#打印斐波那契數(shù)列第101項(xiàng)
a=1
b=1
for i in range(99):
c=a+b
a=b
b=c
print(c)
#求10萬(wàn)內(nèi)所有素?cái)?shù)
這個(gè)就涉及到之前素?cái)?shù)的優(yōu)化問(wèn)題了。要求輸出10萬(wàn)內(nèi)所有素?cái)?shù),首先要做到的就是算法優(yōu)化問(wèn)題,首先肯定能想到的就是偶數(shù)排除掉,2是素?cái)?shù)是不能忘記的。檢驗(yàn)的話(huà)若是一個(gè)一個(gè)實(shí)現(xiàn)有點(diǎn)太慢了,先用最基礎(chǔ)的實(shí)現(xiàn)
3 5 7 9 11 13 15 17 19 21 23 25
其實(shí)實(shí)現(xiàn)不難,但如果用質(zhì)數(shù)和它本身的話(huà)就顯得除以太過(guò)冗余,我有一個(gè)想法就是如果只判斷二倍以上的約數(shù),則在這個(gè)數(shù)本身就少了一半的算數(shù)量。但這自身就一定要套用兩層循環(huán)。大一點(diǎn)的數(shù)還好做計(jì)算,小的數(shù)例如三就不知該從何開(kāi)始計(jì)算起,若要用1,那就是從1開(kāi)始就一定能整除的呀。從二則無(wú)法2步步進(jìn)。我看看拿什么能夠解決,從3開(kāi)始則我想會(huì)出現(xiàn)bug
這樣算出來(lái)會(huì)出現(xiàn)多個(gè)數(shù)輸出的情況
#100000nei suoyou sushu
print (2)
for i in range (3,100000,2):
for j in range(3,(i+1)//2,2):
if i%j==0:
break
else:
print(i)
這是一個(gè)很慢的算法,用之前學(xué)到的方法6的周?chē)欢ㄓ幸粋€(gè)質(zhì)數(shù)可以簡(jiǎn)便算法,但那是之后的事,在那之前我想有沒(méi)有再簡(jiǎn)單一點(diǎn)的算法,這里引入開(kāi)平方的會(huì)更簡(jiǎn)單一些。
print (2)
for i in range (3,100000,2):
for j in range(3,int(i**0.5)+1,2):
if i%j==0:
break
else:
print(i)
這里第二個(gè)循環(huán)加一是為了避開(kāi)數(shù)字過(guò)小的時(shí)候引起錯(cuò)誤。
這些是一點(diǎn)自己的想法
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。