您好,登錄后才能下訂單哦!
1.打印一個邊長為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內所有奇數的和(2500)
a=0
for i in range(1,100,2):
a=a+i
print (a)
#判斷質數
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")
打標記用flag。優化的話應該是range半數就可以,除去除2的偶數只用奇數應該也是優化
#打印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')
缺點就是不對齊,有改進的方法應該。標記。不對齊的方法找到了就是做一個制表符\t這樣打出來的會成為對齊的方式。直接將改后的放到上面。
#打印一個菱形
菱形的打印,初步的想法就是把上半部分和下半部分分開用print打印這應該是最基礎的想法了。讓我們來一起實現它。。。其實好像不好實現,在range函數當中很難實現完美的打印,這個是1、3、5、7步進,空格是3、2、1、0步進。如果用1到4來做的話,格式是空(3-i) 器(2i+1) 空(3-i),這樣仿佛上半部分能夠實現
for i in range(1,5):
print(' '(4-i)+''(2i-1)+' '(4-i))
這樣可以實現上半部分的打印,下半部分同理,全部的代碼可以如下打出,而我們就可以得到了一個最終的圖形
for i in range(1,5):
print(' '(4-i)+''(2i-1)+' '(4-i))
for j in range(1,4):
print(' 'j+''(7-2j)+' 'j)
****可以鏡像復制一下也可以出來就跟打印正方形的那個方法一樣。暫時不會,標記。
#打印100以內斐波那契數列
斐波那契數列記著好像是f(2)=f(1)+f(0),查閱了一下發現是第一項等于1第二項等于1,,嘖嘖,我這個理解好像是比較深的那個,因為如果用到range函數就可以從零開始記了,前100項就可以用range(0,100)來實現,第100項也就是到99為止,讓我們來實現它吧。代碼是這個樣子的
a=1
b=1
print(a)
print(b)
for i in range(98):
c=a+b
a=b
b=c
print (c)
額,出現了一個這樣的問題就是在前面傻傻的打了兩行輸出a,b,這樣range函數就自然到了98就可以停止了。想不到怎么把a和b加載到循環里。這樣其實打印第101項就沒那么難了。嘖嘖,理解錯誤了。是100以內的,那在這里可以引用while,如果繼續用for的話,采用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
其實想一想用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
#打印斐波那契數列第101項
a=1
b=1
for i in range(99):
c=a+b
a=b
b=c
print(c)
#求10萬內所有素數
這個就涉及到之前素數的優化問題了。要求輸出10萬內所有素數,首先要做到的就是算法優化問題,首先肯定能想到的就是偶數排除掉,2是素數是不能忘記的。檢驗的話若是一個一個實現有點太慢了,先用最基礎的實現
3 5 7 9 11 13 15 17 19 21 23 25
其實實現不難,但如果用質數和它本身的話就顯得除以太過冗余,我有一個想法就是如果只判斷二倍以上的約數,則在這個數本身就少了一半的算數量。但這自身就一定要套用兩層循環。大一點的數還好做計算,小的數例如三就不知該從何開始計算起,若要用1,那就是從1開始就一定能整除的呀。從二則無法2步步進。我看看拿什么能夠解決,從3開始則我想會出現bug
這樣算出來會出現多個數輸出的情況
#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)
這是一個很慢的算法,用之前學到的方法6的周圍一定有一個質數可以簡便算法,但那是之后的事,在那之前我想有沒有再簡單一點的算法,這里引入開平方的會更簡單一些。
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)
這里第二個循環加一是為了避開數字過小的時候引起錯誤。
這些是一點自己的想法
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。