【程式13】打印出所有的“水仙花數”,運算子和表示式
所謂“水仙花數”是指一個三位數,它的每個位上數字的立方和等於該數,例如:153=1³+5³+3³=1+125+27
水仙花數只是自冪數的一種。
其他自冪數為:
一位自冪數:獨身數
兩位自冪數:沒有
三位自冪數:水仙花數
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
七位自冪數:北斗七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數
知識點:python運算子和表示式
操作符 |
名稱 |
用途 |
舉例 |
---|---|---|---|
+ |
加 |
使兩運算元相加 |
3 + 5 得到 8. 'a' + 'b' 得到 'ab'. |
- |
減 |
求出前後兩數之差。若第一個運算元未寫則預設為0。 |
-5.2 得道一個負數, 50 - 24得到26。 |
* |
乘 |
得出兩數乘積或返回重複若干次的字串。 |
2 * 3得到6。'la' * 3得到'lalala'. |
** |
冪 |
返回x的y次冪。 |
3 ** 4得到81 ( 3 * 3 * 3 * 3) |
/ |
除 |
將x除以y。 |
4 / 3 得到 1.3333333333333333。 |
// |
取整除 |
返回最大的整數商。 |
4 // 3 得到 1。 |
% |
取模 |
返回餘數。 |
8% 3 得到2。 -25.5% 2.25得到1.5. |
<< |
左位移 |
將運算元向左移動若干bit位。(數字在記憶體中以二進位制表示) |
2 << 2 得到 8。 2在二進位制中表示為10 。左位移兩bit位後得到1000,十進位制中表示為8。 |
>> |
右位移 |
將運算元向右移動若干bit位。 |
11 >> 1得到5, 11二進位制下表示為1011,右位移一位後得到101,十進位制中表示為5。 |
& |
按位與 |
數的按位與。 |
5 & 3 得到 1。 |
| |
按位或 |
數的按位或。 |
5 | 3得到7。 |
^ |
按位異或 |
數的按位異或。 |
5 ^ 3得到6。 |
~ |
按位翻轉 |
x的按位翻轉是-(x+1)。 |
~5得到-6。 |
< |
小於 |
返回x是否小於y。所有比較運算子返回布林值True或False。請注意布林值大小心敏感。 |
5 < 3得到False,3 < 5得到True. 比較運算子可任意連線,如3 < 5 < 7得到True. |
> |
大於 |
返回x是否大於y。 |
5 > 3 得到True。如果兩個操作符都是數字,直譯器會將其轉換到同一型別後再比較。若否則返回False。 |
<= |
小於等於 |
返回x是否小於等於y。 |
x = 3; y = 6; x <= y返回True。 |
>= |
大於等於 |
返回x是否大於等於y。 |
x = 4; y = 3; x >= 3得到True。 |
== |
等於 |
比較兩運算元是否相等。 |
x = 2; y = 2; x == y得到True。 x = 'str'; y = 'stR'; x == y得到False。 x = 'str'; y = 'str'; x == y得到True。 |
!= |
不等於 |
比較兩運算元是否不相等。 |
x = 2; y = 3; x!= y得到True。 |
not |
布林非 |
若X為True則返回False,反之亦然。 |
x = True; not x返回False。 |
and |
布林與 |
無論y值為何,若X為False則x and y 返回False。 |
x = False; y = True; x and y由於x為False返回False。此例中Python因為已知and左值為False而不會計算整個布林表示式,這是短路求值法。 |
or |
布林或 |
若x為True則返回True,否則返回y的布林值。 |
x = True; y = False; x or y返回True。布林或同樣使用短路求值。 |
程式碼如下:
for n in range(100,1000):
i = n // 100
j = n // 10 % 10
k = n % 10
if i * 100 + j * 10 + k == i ** 3+ j ** 3 + k ** 3:
print("%d" % n)