鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 92(答题领鱼币)

[复制链接]
发表于 2017-9-30 06:46:27 | 显示全部楼层
本帖最后由 timeislife 于 2017-9-30 06:49 编辑
def bintype(number):
    
    i = 0
    g = []
    f = 0
    
    add_bin = [128,64,32,16,8,4,2,1]
        

    if number>255 or number<1 :
        print("输入有误!")
    else:
        pass
    
    
    while i<len(add_bin):
        
        g.append(add_bin[i])
        
        if sum(g) >number:
            
            g.remove(add_bin[i])
            i+=1
    print(g)
while True:    
    try:
        num = int(input("请输入要转换的数字"))
    except ValueError:
        print("请输入数字!")
        
    bintype(num)
返回的是一个列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-5 08:27:07 | 显示全部楼层
list0=[1,2,4,8,16,32,64,128]

def fun(number):
    if number==1:
        print(1,end="");
    elif number==2:
        print(2,end="");
    else:
        list1=list0+[number]
        list1.sort()
        order_number=list1.index(number)
        y=list1[order_number]-list1[order_number-1]
        fun(y);
        print(" + " + str(list1[order_number-1]),end="")
   

x=int(input("请输入一个1~255之间的数字:"))

fun(x)
   
好像大家的算法都很简单我这个递归……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-5 08:44:52 From FishC Mobile | 显示全部楼层
学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-2 15:47:13 | 显示全部楼层
def automatic_addition(x):
    num_list = [128,64,32,16,8,4,2,1]
    result_list = []
    for i in num_list:
        if x >= i:
            x -= i
            result_list.append(str(i))
        if x == 0:
            return ' + '.join(result_list)

if __name__ == '__main__':
    x = int(input('Enter a number between 1 to 255:'))
    print(automatic_addition(x))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:56:21 | 显示全部楼层
看看别人的思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-2 02:49:03 | 显示全部楼层
def fun(number):
    a = [1,2,4,8,16,32,64,128][::-1]
    factors = []
    for i in a:
        if number >= i:
            factors.append(i)
            number -= i
    factors = sorted(factors)
    return ' + '.join([str(i) for i in factors])

print(fun(3))
print(fun(155))
print(fun(8))

>>> 
1 + 2
1 + 2 + 8 + 16 + 128
8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 16:52:26 | 显示全部楼层
本帖最后由 majia1015 于 2018-3-12 18:12 编辑
def fun1(x):

    list1 = [128,64,32,16,8,4,2,1]
    list2 = []
    list3 = []
    
    if (x >= 1) and (x <= 255):
    
        for i in list1:
            if x >= i:
                list2.append(i)
                x = x - i 
                
        list2.sort()
            
        for x in list2:
            list3.append(str(x))
        
        print(' + '.join(list3))
        
    else:
        print('请重新输入数字,数字的范围是1~255')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 22:26:25 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-23 11:10:27 | 显示全部楼层
def fun(num):
    num_list = [1, 2, 4, 8, 16, 32, 64, 128]
    num1 = []
    for i in range(len(num_list) - 1,  -1, -1):
        if num >= num_list[i]:
            num1.append(str(num_list[i]))
            num -= num_list[i]
        #print(num_list[i])
    print("+".join(num1))
fun(253)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 11:20:49 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-3 16:08:33 | 显示全部楼层
def fun(n):
    x = [1, 2, 4, 8, 16, 32, 64, 128]

    result = []
    for each in reversed(x):
        if n >= each:
            result.append(str(each))
            n -= each

    return ' + '.join(list(reversed(result)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-19 16:38:17 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-21 12:04:32 | 显示全部楼层
def fun(shuzi):
    ans=[]
    num=[128 , 64 , 32 , 16 , 8 , 4 , 2 ,1]
    for i in num:
        if shuzi >= i:
            shuzi = shuzi - i
            ans.append(str(i))
    ans.reverse()
    return ' + '.join(ans)

c = input("请输入1-255之间的一个整数:")
shuzi = int(c)
d = fun(shuzi)
print("%d = "%shuzi + d)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-21 12:36:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-27 21:21:49 | 显示全部楼层
本帖最后由 子沙 于 2018-8-27 21:35 编辑
def fun_92(m):
    a=list(bin(m))
    a.pop(0)
    a.pop(0)
    b=[]
    print('%d='%(m),end='')
    for i in range(len(a)):
        if a[i]=='1':
            b.append(str(2**(len(a)-i-1)))
    print('+'.join(b),end='') 
fun_92(255)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 23:02:15 | 显示全部楼层
print("---------广告位出租-----------")
a=b=c=d=e=f=g=h='0'
num=input("请输入一个1-255的数字")
i=num
num=int(num)
if isinstance(num,int) and 1 <= num <= 255:
    if num>128:
        num=num-128
        a='1'
    if num>=64:
        num=num-64
        b='1'
    if num>=32:
        num=num-32
        c='1'
    if num>=16:
        num=num-16
        d='1'
    if num>=8:
        num=num-8
        e='1'
    if num>=4:
        num=num-4
        f='1'
    if num>=2:
        num=num-2
        g='1'
    if num>=1:
        num=num-1
        h='1'
    print(a+"*128+"+b+"*64+"+c+"*32+"+d+"*16+"+e+"*8+"+f+"*4+"+g+"*2+"+h+"*1="+i)
else:
    print("调皮哦")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-28 10:52:03 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-5 17:59:50 | 显示全部楼层
def fun91(num):
    list1 = [64,32,16,8,4,2,1]
    list2 = []
    temp = num

    for each in list1:
        if temp >= each:
            temp -= each
            list2.append(str(each))

    str1 = " + ".join(list2[::-1])[:-3] + " = " + str(num)
    return str1

print(fun91(155))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-9 11:44:43 | 显示全部楼层
from itertools import *

def fun92(x):
    num = [1,2,4,8,16,32,64,128]
    for i in range(1,9):
        for j in combinations(num,i):
            if sum(j) == x:
                result = ' + '.join([str(m) for m in j])
                return '%s = %s'%(result,x)

if __name__ == '__main__':
    while True:
        x = int(input('输入1-255整数:'))
        if x < 1 or x > 255:
            print('数值超出范围!')
        else:
            print(fun92(x))
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 11:20:59 | 显示全部楼层
def f_92(num: int):
    lst = []
    num_for_loop = num
    for i in [128, 64, 32, 16, 8, 4, 2, 1]:
        if num_for_loop >= i:
            lst.append(str(i))
            num_for_loop -= i

    return "+".join(lst)

print(f_92(155))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 02:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表