枫枫duck 发表于 2020-4-9 22:19:34

如何反转print打出的内容

题目:编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。

def gcd(x):
    list1=[]
    while 1:
      yushu = x%2
      if x < 1:
            break
      x = x//2
      print(yushu,end="")

https://baike.baidu.com/item/%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6
因为要把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列。所以我的字符串是反的,请问如何达到目的

霓虹巨人 发表于 2020-4-9 22:32:53

是要把字符串的内容倒过来了吗?
如果是可以这样:

a = 'yujunpeng'
b = list(reversed(list(a)))
for each in b:
        print(each,end='')

沐羽尘 发表于 2020-4-10 00:02:07

我最近也做了这道题{:10_250:}是递归的吧 我的是这样的
def er(x):
    if x ==0 :
      return '0b'
    elif x%2 == 1:
      return er(x//2)+'1'
    else:
      return er(x//2)+'0'

zltzlt 发表于 2020-4-10 08:02:35

先反转字符串再输出

def gcd(x):
    list1=[]
    while 1:
      yushu = x%2
      if x < 1:
            break
      x = x//2
      print(yushu[::-1], end="")

枫枫duck 发表于 2020-4-10 08:54:07

zltzlt 发表于 2020-4-10 08:02
先反转字符串再输出

我一开始的代码有问题我改了一下,但现在输出的是列表,怎么把以数字输出呢
def gcd(x):
    list1=[]
    while 1:
      yushu = x%2
      if x < 1:
            break
      x = x//2
      list1.append(yushu)
    print(list1[::-1])
      

枫枫duck 发表于 2020-4-10 08:57:55

沐羽尘 发表于 2020-4-10 00:02
我最近也做了这道题是递归的吧 我的是这样的

你的方法很好很巧妙,谢谢分享

zltzlt 发表于 2020-4-10 12:18:30

枫枫duck 发表于 2020-4-10 08:54
我一开始的代码有问题我改了一下,但现在输出的是列表,怎么把以数字输出呢

def gcd(x):
    list1=[]
    while 1:
      yushu = x%2
      if x < 1:
            break
      x = x//2
      list1.append(yushu)
    print(''.join(list1[::-1]))

枫枫duck 发表于 2020-4-10 12:57:35

zltzlt 发表于 2020-4-10 12:18


这样的话会报错sequence item 0: expected str instance, int found
我查了一下,join对象是字符串加个str就好了
def gcd(x):
    list1=[]
    while 1:
      yushu = x%2
      if x < 1:
            break
      x = x//2
      list1.append(str(yushu))
    print(''.join(list1[::-1]))
页: [1]
查看完整版本: 如何反转print打出的内容