-3
def three():
    op = ""      
    num = int(input("Input a number:"))
    while num > 0:
        r = num % 2
        num = num // 2
        op = str(r) + op  
    print (op)
  • 有人可以解释代码的第二行,因为它似乎没有设置任何东西吗?
  • 另外,有人还可以解释第二条底线在做什么吗?
4

2 回答 2

3

opr只是一个最初为空的字符串(第 2 行),它由循环内部的字符串表示形式(倒数第 2 行)前置。

假设选择的数字是 5。这些是循环的迭代:

  1. r = 5%2 = 1

    数量 = 5//2 = 2

    操作 =“1”

  2. r = 2%2 = 0

    数量 = 2//2 = 1

    操作 =“0”+“1”=“01”

  3. r = 1%2 = 1

    数 = 1//2 = 0

    操作 =“1”+“01”=“101”

总体而言,循环生成一个字符串,它是输入数字的二进制表示。

于 2013-04-13T14:39:02.737 回答
0

op 需要在 while 循环中使用之前声明为变量;否则会出现语法错误。删除第一行并查看。

它被分配为“”,因为稍后它被添加到(或者更确切地说,替换为一段新的文本及其末尾的当前值)。所以只是做

op = None

不会工作(你不能添加一个str和None)

第二条底线连接起来;r 需要转换为字符串(因为它是一个 int),因此它最终将 r 的值作为字符串添加到 op。

于 2013-04-13T14:39:07.707 回答