python基础教程100例题: 29&30

29、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

 30、题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

        今天这两个题可以放在一起,首先可以总体进行分析。首先要了解一个数字是如何被拆分的,也就是如何找到一个数字的每一个位数。我们直接从程序开始讲,以五位数为例。个位:数字 s 除以 10 的余数,然后接下来的每一步该数都除以 10 ,保留商,然后再 除以 10 的余数就分别是十位,百位,千位,最后到万位的时候,商就是万位,不需要再 除以 10 求余数了。

29题:

s = int(input('不多于五位的正整数:'))
a = s % 10 #个位
b = int(s / 10) % 10 #十位
c = int(s / 100) % 10 #百位
d = int(s / 1000) % 10  #千位
e = int(s / 10000)  #万位
if e != 0:
    print('5',a,b,c,d,e,sep='')  #sep是print的一个参数可以改变间隔
elif d != 0:
    print('4',a,b,c,d,sep='')
elif c != 0:
    print('3',a,b,c,sep='')
elif b != 0:
    print('2',a,b,sep='')
else:
    print('1,',a)
s2 = int(input('不多于五位的正整数:'))
s2_m = 0
s2_n = s2
while s2_n != 0:
    s2_m = (s2_m * 10) + (s2_n % 10)
    s2_n = int(s2_n / 10)
print(s2_m)

其实这两个代码表示的是同一个意思。都是把每一位分解出来,依次比较。第一个程序更直观,但是代码更复杂。第二个程序代码有一点难理解,但整体的思路是一样的,也更简洁。

30题: 

s = int(input('五位正整数:'))
a = s % 10 #个位
b = int(s / 10) % 10 #十位
c = int(s / 100) % 10 #百位
d = int(s / 1000) % 10  #千位
e = int(s / 10000)  #万位
if a == e and b == d:
    print('是回文数')
else:
    print('不是回文数')
num = int(input('请输入一个数,判断是否是回文数:'))
num_p = 0
num_t = num
while num_t != 0:  ####一个数字的倒序
    num_p = int(num_p * 10) + int(num_t % 10)
    num_t = int(num_t / 10)
if num == num_p:
    print(num, '是一个回文数')
else:
    print(num, '不是一个回文数')
print(num, num_p)


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值