pyhton017函数的课后作业
小菜鸟的学习之路又碰壁了,呜呜呜呜~~~再次希望路过大神不吝赐教{:5_109:}1、利用欧几里得算法,求最大公约数
def gcd(x, y):
while y:
t = x % y
x = y
y = t
return x
print(gcd(4, 6))
这是佳宇老师的答案,我的疑问是:
1、最后循环输出的返回值,难道不是Y嘛,举例gcd(9,2)
t = (9/2的余数)=1
x = 2
y = 1
while循环,t = (2/1的余数)=0
这个时候1就是最大公约数了,而1=y,所以为什么return返回了x呀
2、编写一个十进制转换为二进制的函数,要求用除2取余的方法
def zuoye02(num1, num2):
a = bin(num1 % 2)
b = bin(num2 % 2)
print(num1 ,num2 , "转换为二进制是" , a,b)
这是我写的函数,调用zuoye02()检验的时候,输出值也是对的
def Dec2Bin(dec):
temp = [] #先建立一个列表的初始值
result = '' #建立一个结果的初始值,方便后面计算
while dec: #当参数dec为ture时,开始循环以下内容
quo = dec % 2 #将参数除2的余数赋值给quo的变量名
dec = dec // 2#将参数地板除2的值赋值给dec(向下取整)
temp.append(quo)#将循环计算得出的quo值添加进temp的列表中,默认在末尾,temp列表中现在元素均为余数,但是到这里是在确认什么?或者是为什么要这样做呢?
while temp: #temp为ture时,开始循环以下
result += str(temp.pop()) #结果加上,temp列表中最后一个元素并以字符串的形式显现出来
return result #返回result结果的值
print(Dec2Bin(62))
这是佳宇老师的答案
我不是特别理解,我先说一下我的理解哈,就是我好像理解大部分语句,但是不明白为什么要这样写,天{:5_100:}
第一个问题,循环了吗,y的值不是赋给x了吗?所以返回x
2进制,即只有1,0,逢2进1
10进制,逢10进制。
10转2,例子:8的二进制是1000表示。
8/2->余0等4
4/2->余0等2
2/2->余0等1
1/2->余1等0
余数结合起来就是1000 看看这个吧,以前写的:戳我前进 Stubborn 发表于 2020-10-29 12:31
第一个问题,循环了吗,y的值不是赋给x了吗?所以返回x
2进制,即只有1,0,逢2进1
谢谢大佬!!!!明白惹!!!{:5_109:}
页:
[1]