鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 6

关于自定义函数的问题

[复制链接]
发表于 2020-2-17 05:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
虽然想到了解决办法,但是不明白为什么会错系列
自定义bin函数系列


def bin(x):
    list1 = []
    while x >0:
        s = x%2
        x = x//2
        list1.insert(0,s)
    list1.insert(0,'0b')
    return list1

s= bin(789)
for i in s:
        print(i,end = '')
这是正解的答案。
最初的版本就是多个1,是这样的

def bin(x):
    list1 = []
    while x >0:
        s = x%2
        x = x//2
        list1.insert(0,s)
    list1.insert(0,'0b')
    for i in list1:
        print(i,end = '')
    return i

print(bin(789))


死活多个1,我感觉问题出在return i上面,但是想不明白这多的1从哪来。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-17 07:56:27 From FishC Mobile | 显示全部楼层
i的值非0即1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 08:41:52 | 显示全部楼层
不需要 return i,而且直接 bin(789) 就可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-22 10:31:31 | 显示全部楼层

为啥i的值非0即1, 我一直都不太搞得明白这里这种for loop里面的i,可以细说一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-22 10:42:55 | 显示全部楼层
西八妹子 发表于 2020-2-22 10:31
为啥i的值非0即1, 我一直都不太搞得明白这里这种for loop里面的i,可以细说一下吗?

二进制 里 不是0 就是1  没有其他元素

for  i  in  xxx  此类模式  xxx代表一个迭代   i 则代表其中一个元素
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-22 12:11:56 | 显示全部楼层
我也是新手,试着帮你解答一下
关于为什么 i 非 0 即 1 :题意里 list1 是一个二进制的数字,二进制里只有 0 和1 两个数字,而 for 循环是遍历用法,或者可以理解为把里面的东西一个一个列举出来,所以 i 非 0 即 1 (这里他可能没有考虑到你把 0b 放进去了)
关于为什么会多一个1:显然,在你最后生成的列表里的最后一位是 1 ,这个时候如果添加了 return 就会返回遍历的最后一项,最后你再用 print 运行 return,那最后的这个 1 就会在 print(i,end = '') 之后又被 return 一遍。
解决方法:去掉 return ,然后不需要打印,直接 bin(789)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-22 12:16:19 | 显示全部楼层
如果觉得不加 return 显得怪怪的,也可以这样改,用字符串代替列表,就可以直接把字符串 return 出来,也简单了很多(用 print 来展示 return 的结果)
  1. def bin(x):
  2.     str_bin = ''
  3.     while x >0:
  4.         s = x%2
  5.         x = x//2
  6.         str_bin = str(s) + str_bin
  7.     return '0b' + str_bin
  8. print(bin(789))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-22 13:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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