鱼C论坛

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

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

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

  9.     if number>255 or number<1 :
  10.         print("输入有误!")
  11.     else:
  12.         pass
  13.    
  14.    
  15.     while i<len(add_bin):
  16.         
  17.         g.append(add_bin[i])
  18.         
  19.         if sum(g) >number:
  20.             
  21.             g.remove(add_bin[i])
  22.             i+=1
  23.     print(g)
  24. while True:   
  25.     try:
  26.         num = int(input("请输入要转换的数字"))
  27.     except ValueError:
  28.         print("请输入数字!")
  29.         
  30.     bintype(num)
复制代码

返回的是一个列表
小甲鱼最新课程 -> https://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)
   
好像大家的算法都很简单我这个递归……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-5 08:44:52 From FishC Mobile | 显示全部楼层
学习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  10. if __name__ == '__main__':
  11.     x = int(input('Enter a number between 1 to 255:'))
  12.     print(automatic_addition(x))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:56:21 | 显示全部楼层
看看别人的思路
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  10. print(fun(3))
  11. print(fun(155))
  12. print(fun(8))

  13. >>>
  14. 1 + 2
  15. 1 + 2 + 8 + 16 + 128
  16. 8
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2.     list1 = [128,64,32,16,8,4,2,1]
  3.     list2 = []
  4.     list3 = []
  5.    
  6.     if (x >= 1) and (x <= 255):
  7.    
  8.         for i in list1:
  9.             if x >= i:
  10.                 list2.append(i)
  11.                 x = x - i
  12.                
  13.         list2.sort()
  14.             
  15.         for x in list2:
  16.             list3.append(str(x))
  17.         
  18.         print(' + '.join(list3))
  19.         
  20.     else:
  21.         print('请重新输入数字,数字的范围是1~255')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 22:26:25 From FishC Mobile | 显示全部楼层
看看
小甲鱼最新课程 -> https://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)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 11:20:49 | 显示全部楼层
回复
小甲鱼最新课程 -> https://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)))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-19 16:38:17 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://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)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-21 12:36:59 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-27 21:21:49 | 显示全部楼层
本帖最后由 子沙 于 2018-8-27 21:35 编辑
  1. def fun_92(m):
  2.     a=list(bin(m))
  3.     a.pop(0)
  4.     a.pop(0)
  5.     b=[]
  6.     print('%d='%(m),end='')
  7.     for i in range(len(a)):
  8.         if a[i]=='1':
  9.             b.append(str(2**(len(a)-i-1)))
  10.     print('+'.join(b),end='')
  11. fun_92(255)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 23:02:15 | 显示全部楼层
  1. print("---------广告位出租-----------")
  2. a=b=c=d=e=f=g=h='0'
  3. num=input("请输入一个1-255的数字")
  4. i=num
  5. num=int(num)
  6. if isinstance(num,int) and 1 <= num <= 255:
  7.     if num>128:
  8.         num=num-128
  9.         a='1'
  10.     if num>=64:
  11.         num=num-64
  12.         b='1'
  13.     if num>=32:
  14.         num=num-32
  15.         c='1'
  16.     if num>=16:
  17.         num=num-16
  18.         d='1'
  19.     if num>=8:
  20.         num=num-8
  21.         e='1'
  22.     if num>=4:
  23.         num=num-4
  24.         f='1'
  25.     if num>=2:
  26.         num=num-2
  27.         g='1'
  28.     if num>=1:
  29.         num=num-1
  30.         h='1'
  31.     print(a+"*128+"+b+"*64+"+c+"*32+"+d+"*16+"+e+"*8+"+f+"*4+"+g+"*2+"+h+"*1="+i)
  32. else:
  33.     print("调皮哦")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-28 10:52:03 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

  11. print(fun91(155))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  9. if __name__ == '__main__':
  10.     while True:
  11.         x = int(input('输入1-255整数:'))
  12.         if x < 1 or x > 255:
  13.             print('数值超出范围!')
  14.         else:
  15.             print(fun92(x))
  16.             break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  8.     return "+".join(lst)

  9. print(f_92(155))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 18:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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