一个简单的课后作业

今天上 Python 基础课时候老师留下了一个简单的课后作业。这个作业的题目就是:

给出一个十进制的数,将它装换成二进制,然后在这个十进制数的基础上,
取出最后一个 1 和它后面的所有数,然后将后面的这一段十进制数再装换成二进制输出。
比如十进制数 10 转换成 2 进制数后为 0b1010
然后根据题目的要求取出最后一个 1 及其后面的所有字符所得到的的结果就是:10
然后再将所取出来的这段十进制数(10)装换成二进制,转换后的结果就是为 2
"""
解题思路:
按照题目的意思是会给出一个十进制的整数,然后将十进制的数转换为2进制
在二进制的基础上,只取出最后一个 1 及其后面的数,再将这个二进制转换成10进制输出。
先从控制台获取一个十进制的整数,然后将这个数转换成二进制。
转换成二进制之后,这个变量是字符串类型的,那么这就好办了。
我们利用 Python 中字符串操作的特性,这样我们就可以很好的做出这个题目来了。
既然是从最后一个 1 开始取后面的数,那么我们就从后面的数开始往前面判断,这样我们就可以找出最后一个为 1 的位置。
我们先开始定义一个变量 i 为 -1,利用 while 循环来挨个取出后面的数,每次循环 i 都减去 1。
当取出某个字符为 1 的时候,就跳出循环,这时 i 的位置就是最后一个 1 所在的位置。
我们将取出 i 和它后面位置的所有字符进行进制装换就得出我们想要的结果了。
"""
result = bin(int(input("请输入一个正整数:")))
i = -1
while True:
    if int(result[i]) == 1: break
    i -= 1
print(int(result[i:], 2))

posted on 2022-02-28 19:43  一颗蛋50斤  阅读(33)  评论(0)    收藏  举报

导航