result += str(temp.pop())
关于这道作业,def Dec2Bin(dec):
temp = []
result = ''
while dec:
quo = dec % 2
dec = dec // 2
temp.append(quo)
while temp:
result += str(temp.pop())# result = str(temp.pop()) + result 为什么结果就不一样。。。。 这两个意思应该是一样的啊,,,,求大神解答。。。。
return result
print(Dec2Bin(62))
本帖最后由 jackz007 于 2022-10-13 22:57 编辑
这条语句
result += str(temp.pop())
是这条语句的简写形式
result = result + str(temp.pop())
而后者是
result = str(temp.pop()) + result
二者之间显然存在着差别。前者是把别的字符串添加到了原来字符串的后面,而后者是把别的字符串添加到了原来字符串的前面。
a = 'AB'
b = 'CD'
a = a + b # a = 'ABCD'
a = b + a # a = 'CDAB'
代码写的也太不 Pythonic 了吧,我抛砖引玉。。。
def Dec2Bin(dec):
s = ''
while dec:
s , dec = str(dec % 2) + s , dec // 2
return s
print(Dec2Bin(62))
递归函数版
def Dec2Bin(dec) :
return Dec2Bin(dec // 2) + str(dec % 2) if dec else ''
print(Dec2Bin(62)) jackz007 发表于 2022-10-13 22:32
这条语句
是这条语句的简写形式
但是
result 当第一次循环的时候是 = '0'的如果按照 result = result + str(temp()) 的方式第二次循环 result = ‘01’
而不是 '10' 这个地方我就是没搞懂。。。 fjsboy 发表于 2022-10-13 22:57
但是
result 当第一次循环的时候是 = '0'的如果按照 result = result + str(temp()) 的方式第二次 ...
没错呀,按你说的那种加法,加到最后确实是一个倒序的结果,所以,要按后面那种加法才对。 jackz007 发表于 2022-10-13 23:01
没错呀,按你说的那种加法,加到最后确实是一个倒序的结果,所以,要按后面那种加法才对。
我自己加起来是 '0111111 但是实际是1111110 我就是没搞懂。。。 本帖最后由 jackz007 于 2022-10-13 23:13 编辑
fjsboy 发表于 2022-10-13 23:02
我自己加起来是 '0111111 但是实际是1111110 我就是没搞懂。。。
第1次循环 :result = '' str(temp()) = '0' result = str(temp())+ result = '0' + '' = '0'
第2次循环 :result = '0' str(temp()) = '1' result = str(temp())+ result = '1' + '0' = '10'
第3次循环 :result = '10' str(temp()) = '1' result = str(temp())+ result = '1' + '10' = '110'
第4次循环 :result = '110' str(temp()) = '1' result = str(temp())+ result = '1' + '110'= '1110'
......
result = '111110' jackz007 发表于 2022-10-13 23:11
result += str(temp())是result = result + str(temp()) 的形式而不是 result = str(temp())+ result
前面你也给我解释了 这里我没搞懂。。; 本帖最后由 jackz007 于 2022-10-13 23:21 编辑
fjsboy 发表于 2022-10-13 23:15
result += str(temp())是result = result + str(temp()) 的形式而不是 result = str(temp())+ re ...
是的,实际上就是 a = a + b 还是 a = b + a 的区别,采用后者才是正确的,不过,Python 的字符串倒序超级简单,result[::-1] 就是 result 倒序的结果。 你的代码具体我不太懂,但你说一样的那部分是不一样的,你的str用+是连接,不是运算,比如数学1+2=3 但str字符连接1+2=12
你的 result += str(temp.pop()) 实际是 result =result + str(temp.pop())而不是 str(temp.pop()) + result
int中的+ 和str中的+不一样
前者是数学运算,后者是字符黏在一起 jcpython2 发表于 2022-10-17 10:42
你的代码具体我不太懂,但你说一样的那部分是不一样的,你的str用+是连接,不是运算,比如数学1+2=3 但str ...
谢谢这下懂了。。。
页:
[1]