【程序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)