1.求“水仙花”数,即一个三位数,其每位数字的立方和等于该数本身。
for i in range (100,1000):
sum = 0
temp = i #赋值临时变量,避免污染源数据,因为i是一个数集不是变量,保持i的原始值不变
while temp: #当temp的值为0时退出循环
sum = sum + (temp % 10) ** 3 #temp % 10获取个位数,sum储存每个个位数的三次方
temp //= 10 #temp // 10 减一位数
if sum == i:
print(i)
2.判断整数是否为“回文数”,即正序(从左到右)和倒序(从右到左)读都是一样的整数。
参考代码
- x = int(input("请输入一个正整数:"))
- if x < 0 or (x % 10 == 0 and x != 0):
- print("不是回文数。")
- else:
- revertedNumber = 0
- while x > revertedNumber:
- revertedNumber = revertedNumber * 10 + x % 10
- x //= 10
- if x == revertedNumber or x == revertedNumber // 10:
- print("是回文数。")
- else:
- print("不是回文数。")
但是我觉得有更简便的方法,把数字转换成字符串,利用切片功能生成相反顺序的字符串,再对比就好了
x = int(input("请输入一个正整数:"))
a = str(x) #把x转换成字符串
b = a[::-1] #从字符串的末尾到开头以步长为-1的方式提取子序列,得到字符串的相反顺序
if x < 0:
print("不是回文数")
else:
if a == b:
print("是回文数")
else:
print("不是回文数")