1. 程式人生 > >Python練習筆記 - -水仙花數

Python練習筆記 - -水仙花數

Python練習筆記 - - 水仙花數

題目描述

春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的: “水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=1^3 + 5^3 + 3^3。 現在要求輸出所有在m和n範圍內的水仙花數。

輸入描述:

輸入資料有多組,每組佔一行,包括兩個整數m和n(100 ≤ m ≤ n ≤ 999)。

輸出描述:

對於每個測試例項,要求輸出所有在給定範圍內的水仙花數,就是說,輸出的水仙花數必須大於等於m,並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開;
如果給定的範圍內不存在水仙花數,則輸出no;
每個測試例項的輸出佔一行。

示例1

輸入
100 120
300 380
輸出
no
370 371

解題思路&程式碼段

該方法事先計算好水仙花數,存放到daffodil_number列表中,然後遍歷判斷[m,n]區域內是否有水仙花數。該解題思路將計算水仙花數轉換為查詢,當然遍歷計算也不錯,只不過跟這種方法比起來增大了計算量,花費更多的時間。

python3

# 按"空格"拆分,並對映給m,n
m,n = map(int,input().split())
# 水仙花數,事先計算好放到解表中
daffodil_number = [153, 370, 371, 407]
# 初始化一個新的列表results,存放水仙花數
results = []
# 遍歷水仙花數是否在[m,n]區間內
for temp in daffodil_number:
    if temp in range(m,n):
        #將找到的水仙花數存放到列表中
        results.append(temp)
        
#如果[m,n]區間沒有水仙花數輸出“no”,否則按格式輸出對應的水仙花數
if len(results)==0: print("no") else: print(" ".join(str(result) for result in results))

函式小結

map()函式

語法:
map(function, iterable, …)

描述:
map() 會根據提供的函式對指定序列做對映。
第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表。

引數說明:
function – 函式
iterable – 一個或多個序列

返回值:
Python 3返回迭代器。
**注意:**Python3中想要輸出map()結果,需要轉化為list()。

例1:利用map()函式求列表平方:

def fun(x):
    return x*x
print(list(map(fun, [1, 2, 3, 4, 5, 6, 7, 8, 9])))

輸出結果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

split()函式

語法:
str.split(str="", num=string.count(str))

描述:
split()通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串

引數說明:
str – 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表符(\t)等。
num – 分割次數。

返回值:
返回分割後的字串列表。

例2:分割字串:

str = "this is string example....wow!!!"
print (str.split( ))

輸出結果:

[‘this’, ‘is’, ‘string’, ‘example…wow!!!’]

append()函式

語法:
list.append(obj)

描述:
append() 方法用於在列表末尾新增新的物件。

引數說明:
obj – 新增到列表末尾的物件。

返回值:
該方法無返回值,但是會修改原來的列表。

例3:新增列表:

list1 = ['Google', 'Huawei', 'Taobao']
list1.append('Baidu')
print ("New list : ", list1)

輸出結果:

New list : [‘Google’, ‘Huawei’, ‘Taobao’, ‘Baidu’]

join()函式

語法:
’sep’.join(seq)

引數說明:
sep:分隔符。可以為空
seq:要連線的元素序列、字串、元組、字典
上面的語法即:以sep作為分隔符,將seq所有的元素合併成一個新的字串

返回值:
返回一個以分隔符sep連線各個元素後生成的字串

例4:新增列表:

str = "this is string example....wow!!!"
print ('-'.join(str.split( )))

輸出結果:

this-is-string-example…wow!!!

str()函式

語法:
class str(object=’’)

描述:
str() 函式將物件轉化為string格式。

引數說明:
object – 物件。

返回值:
返回一個物件的string格式。

例5:新增列表:

x=987456123
y = str(x)
print(type(x))
print(type(y))

輸出結果:

<class ‘int’>
<class ‘str’>