def three():
op = ""
num = int(input("Input a number:"))
while num > 0:
r = num % 2
num = num // 2
op = str(r) + op
print (op)
- 有人可以解释代码的第二行,因为它似乎没有设置任何东西吗?
- 另外,有人还可以解释第二条底线在做什么吗?
op
r
只是一个最初为空的字符串(第 2 行),它由循环内部的字符串表示形式(倒数第 2 行)前置。
假设选择的数字是 5。这些是循环的迭代:
r = 5%2 = 1
数量 = 5//2 = 2
操作 =“1”
r = 2%2 = 0
数量 = 2//2 = 1
操作 =“0”+“1”=“01”
r = 1%2 = 1
数 = 1//2 = 0
操作 =“1”+“01”=“101”
总体而言,循环生成一个字符串,它是输入数字的二进制表示。
op 需要在 while 循环中使用之前声明为变量;否则会出现语法错误。删除第一行并查看。
它被分配为“”,因为稍后它被添加到(或者更确切地说,替换为一段新的文本及其末尾的当前值)。所以只是做
op = None
不会工作(你不能添加一个str和None)
第二条底线连接起来;r 需要转换为字符串(因为它是一个 int),因此它最终将 r 的值作为字符串添加到 op。