0. 你有听说过 DRY 吗?
DRY 是程序员们公认的指导原则: Don't Repeat Yourself.
快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了
1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?
使用函数 :
0) 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要 N 倍代码)
1) 可以降低维护成本(函数只需修改 def 部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
2) 使序更容易阅读
2. 函数可以有多个参数吗?
可以的, 理论上你想要有多少个就可以有多少个, 只不过如果函数的参数过多, 在调用的时候出错的机率就会大大提高, 因而写这个函数的程序员也会被相应的问候祖宗, 所以, 尽量精简吧,在 Python 的世界里,精简才是王道!
3. 创建函数使用什么关键字,要注意什么
使用“ def ”关键字,要注意函数名后边要加上小括号“ 然后小括号后边是冒号“ () ”, : ”,然后缩进部分均属于函数体的内容。
4. 请问这个函数有多少个参数?
def MyFun((x, y), (a, b)):
return x * y - a * b
如果你回答两个,那么恭喜你错啦,答案是 0,因为类似于这样的写法是错误的!
我们分析下, 函数的参数需要的是变量, 而这里你试图用“元祖”的形式来传递是不可行的。
5 下列函数的输出为 heelo world!
def hell():
print("hello world!")
return
print("welcome to my home!")
a = hell()
当 Python 执行到 return 语句的时候, Python 认为函数到此结束, 需要返回了 (尽管没有任何返回值)
##求最大公约数
"""
def gcd( x, y ):
temp = x + 1
if ( x > y) :
temp = y + 1
list = []
for i in range(2, temp):
if( x % i == 0 and y % i == 0 ) :
list.append(i)
print(list)
list = sorted(list, reverse = True)
if ( len(list) != 0 ) :
print(list[0])
else :
print(1)
#d1 = gcd(5,15)
#d2 = gcd(20,15)
d3 = gcd(50,30)
"""
"""
def gcd(x, y):
while y:
t = x % y
x = y
y = t
return x
d4 = gcd(4,9)
print(d4)
"""
#十进制转为二进制,达到bin函数的效果
def decToBin(num):
arry = [] #定义一个空数组,用于存放2整除后的商
while True:
arry.append(str(num % 2)) #用列表的append方法追加
num = num // 2 #用地板除求num的值
if num == 0: #若地板除后的值为0,那么退出循环
break
return "".join(arry[::-1]) #列表切片倒叙排列后再用join拼接
print(decToBin(10))
print(decToBin(11))
##二进制转为十进制
def binToDec(binary):
result = 0 #定义一个初始化变量,后续用于存储最终结果
for i in range(len(binary)):
#利用for循环及切片从右至左依次取出,然后再用内置方法求2的次方
result += int(binary[-(i + 1)]) * pow(2, i)
return result
print(binToDec("1010"))
参考:
Python for 循环语句