1. 程式人生 > >關於python的30個小實驗(一)

關於python的30個小實驗(一)

題目:輸入一個正整數,輸出各個位數之和

num=input('請輸入一個自然數')
print(sum(map(int,num)))

map函式根據提供的函式對指定的序列做對映,定義:map(function, sequence[,sequence,...])--->list;對sequence中的item依次執行function(item),見執行結果組成一個List返回

執行結果:

題目:輸入一個自然數,輸出它的二進位制,八進位制,十六進位制

#python提供了非常簡單的進位制轉換功能,bin(),oct(),hex()
num = int(input('請輸入一個自然數:'))
print('二進位制:', bin(num))
print('八進位制:', oct(num))
print('十六進位制:', hex(num))

執行結果:

題目:模擬蒙特.卡羅計算方法計算圓周率的近似值

#蒙特卡羅的方法計算圓周率
from random import random
times=int(input("請輸入擲飛鏢的次數:"))
hits=0
for i in range(times):
    x=random()
    y=random()
    if x*x+y*y<=1:
        hits+=1
print('擊中次數',hits)
print('圓周率近似值',4.0*hits/times)

執行結果:

題目:輸入一個大於2的自然數,輸出小於該數的所有素陣列成的列表

Max_Num=int(input('請輸入一個大於2的自然數: '))
lst=list(range(2,Max_Num))
#輸入的數的最大平方根
m=int(Max_Num**0.5)
#enumerate是python的內建函式,意思是列舉、列舉,用於遍歷序列中的元素以及它們的索引。
#filter函式對指定的序列進行過濾操作。定義:filter(function or None, sequence) -> list, tuple, or string
#對sequence中的item依次執行function(item),將執行結果為True的item組成一個List/String/Tuple(取決於sequence的型別)返回
for index,value in enumerate(lst):
    #如果當前數字已大於最大整數的平方根,結束
    if value>m:
        break
    #對該位置之後的元素進行過濾
    lst[index+1:]=filter(lambda x:x%value!=0,lst[index+1:])
print(lst)
#指定enumerate的索引從1開始
for index,value in enumerate(lst,1):
    #如果當前數字已大於最大整數的平方根,結束
    if value>m:
        break
    #對該位置之後的元素進行過濾
    lst[index:]=filter(lambda x:x%value!=0,lst[index:])
print(lst)
#lambda:這是Python支援一種有趣的語法,它允許你快速定義單行的最小函式,類似與C語言中的巨集,這些叫做lambda的函式,是從LISP借用來的,可以用在任何需要函式的地方

執行結果: