长风破浪正其时,Python天堑变通途(6)(小螺丝:函数:(1))

1.创建函数:

>>> def function():
	print('123')

>>> function() #调用函数
123

加参数的函数:

>>> def compare(num1,num2): #写好函数的意义,参数的意义
	if num1 < num2:
		return(num1)
	else:
		return(num2)

>>> compare(123123123,5341345445355241)
123123123

2.DRY:
DRY是程序员们公认的指导原则:Don’t Repeat Yourself.快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了!

3.bin函数作业:

自己编的:

#bin函数:
binyuan = input('请输入整数:')
binyuan = int(binyuan)
def bin1(x):
    binlist = []
    while x>1:#当运算完的x≤1时即可结束循环
        binlist.append(x%2)
        x = x//2
        #小坑:此处应用floor除法
    binlist.reverse()
    binlist.insert(0,1)
    #insert为list内置函数,insert函数括号内的索引值不需要加中括号
    binlist2 = [str(each) for each in binlist]
    #把列表里的每一个整数全都转化为字符串
    shuchu = ' '.join(binlist2)
    #把列表中的元素放在空串中,注意:列表里的元素一定都是字符串
    return(shuchu)
print('转化成二进制的数为:' + bin1(binyuan))

范例:

#bin函数
def Dec2Bin(dec):
    temp = []
    #创建空列表
    result = ''
    #创建空字符串
    while dec:
        quo = dec % 2
        dec = dec // 2
        #除2取余操作相同
        temp.append(quo)
        #将余数添加到列表中
    while temp:
        result += str(temp.pop())
        #这一步我tm惊为天人,pop函数可以直接取最后一个函数,就不用将列表倒序了
        #然后这一步非常简洁的将列表形式转化为字符串,不需要再把列表中的每一个元素转化为字符串了
    return result
print(Dec2Bin(62))

 4.pow函数作业太简单就不放了

5.gcd函数作业:

我写的:

#gcd:算出输入的两个数的最大公约数的函数:
print('欧几里得算法公约数:')
temp1 = input('请输入第一个数:')#第一个数x
temp2 = input('请输入第二个数:')#第二个数y
#欧几里得算法:x = a*y + b
#最大公约数b就是较大数x/较小数y的余数
def gcd(x,y):
    if x > y:#比较输入数大小,确定
        small = y
        big = x
    else:
        small = x
        big = y
    return(big%small)
temp1 = int(temp1)
temp2 = int(temp2)
print('它们的最大公约数是:',gcd(temp1,temp2))

范例:

print('欧几里得算法公约数:')
temp1 = input('请输入第一个数:')#第一个数x
temp2 = input('请输入第二个数:')#第二个数y
def gcd(x, y):
    while y:
        t = x % y
        x = y
        y = t
    return x
temp1 = int(temp1)
temp2 = int(temp2)
print('它们的最大公约数是:',gcd(temp1,temp2))

 6.形式参数,实际参数:

形式参数:定义时括号里的参数 

实际参数:调用函数时,传递进来的实际的函数的值是实际参数

7.函数文档:
‘’里的叫函数文档,不会被打印:

>>> def jiafa(x,y):
	'函数文档:这是一个加法的函数'
	#注释:和注释有点区别,但是都不会被打印出来
	he = x + y
	return(he)

>>> jiafa(1,2)
3
>>> jiafa.__doc__ #函数的默认属性
'函数文档:这是一个加法的函数'
>>> 

7.关键字参数:

>>> def xianshi(num1,num2):
	num1 = str(num1)
	num2 = str(num2)
	print('第一个数字:' + num1)
	print('第二个数字:' + num2)

>>> xianshi(num2=456,num1=123)
第一个数字:123
第二个数字:456

8.默认参数:

定义了默认值的参数,()不带参数时显示的值

>>> def xianshi(num1=123,num2=456):
	num1 = str(num1)
	num2 = str(num2)
	print('第一个数字:' + num1)
	print('第二个数字:' + num2)

>>> xianshi()
第一个数字:123
第二个数字:456

9.收集参数:不知道有几个参数时使用

>>> def test(*temp):
	print('参数的长度是:',len(temp))
	print('第三个参数是:',temp[2])

>>> test(1,2,3,4,5,6,7,8,9,0)
参数的长度是: 10
第三个参数是: 3
>>> def test(*temp,exp):
	print('参数的长度是:',len(temp),exp)
	print('第三个参数是:',temp[2])

	
>>> test(1,2,3,4,5,exp=12345)
参数的长度是: 5 12345
第三个参数是: 3

10.查找函数:

def findstr(str1,str2):    
    '统计第一个字符串参数(长度为2)在第二个字符串参数出现次数'    
    length = len(str2)    
    count = 0    
    if str1 not in str2:    
        print('在目标字符串中未找到子字符串!')    
    else:    
        for each in range(length - 1):    
            if str2[each] == str1[0]:    
                if str2[each + 1] == str1[1]:    
                    count += 1    
    print('子字符串在目标字符串中共出现%d次' %count)    

11.Python只有函数,没有过程:

12.返回值:可以返回多个值:

13.局部变量,全局变量:

局部变量:出了这个函数,变量是无效的

全局变量:作用范围:整个文件,函数内部修改它无用,可以在函数内部访问它

14.

for主要应用在遍历中:逐个循环一遍

while主要用于判断符合条件下循环

15.回文联函数:

我的:

#回文联
# 0 1 2 
# -3-2-1  -(len-x) 3-0
temp = input('传入字符:')
list1 = []
list2 = []
#写一个遍历循环,使每个元素均满足回文条件
for each in temp:
    list1.append(each) #这个是反的,下面要reverse
for each in temp: #将sort的数据储存在list1中
    list2.append(each) 
list2.reverse()
i = 0
while i < len(temp):
    if list1[i] != list2[i]:
        zhuang = 0
        break
    zhuang = 1
    i += 1
if zhuang == 1:
    print('是回文联')
else:
    print('不是回文联')

范例:list的reverse()方法是返回None的,只会对列表内的元素逆序排序。而string的reserved()方法是会返回逆序后的字符串的。

def huiwen(string): 
    '判断传入的字符串是否为回文联' 
    list1 = list(string)  
    list2 = list(reversed(string))  #reversed返回的是字符串
    if list1 == list2:  
        return '是回文联'  
    else:  
        return '不是回文联'  
  
print(huiwen('上海自来水来自海上'))  
list3 = [1,2,3]
print(list3.reverse())

16.统计函数:

我的:

def tong(str1,str2):
    '这是一个统计输入的参数的各种字符类型的函数'
    #因为输入的是字符串是一个个的元素的缘故,要把它们拆成一个个字符串放在列表里
    list1 = []
    for each1 in str1:
        list1.append(each1)
    for each2 in str2:
        list1.append(each2)
    alpha = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    number = ['1','2','3','4','5','6','7','8','9','0']
    #写个遍历,加计数器
    alp = 0
    num = 0
    space = 0
    special = 0
    for each in list1:
        if each in alpha:
            alp += 1
        elif each in number:
            num += 1
        elif each == ' ':
            space += 1
        else:
            special += 1
    print('输入的字母共有:',alp)
    print('输入的数字共有:',num)
    print('输入的空格共有:',space)
    print('输入的符号共有:',special)
tong('1 love y0u~~~','i am better 1314 ### &1') #3241

范例:

def tongji(*param):
    '判断传入的参数中英文字母,空格,数字,其他字符的个数'  
    length = len(param)  
    for i in range(length): #循环的次数等于参数的个数
        letters = 0  
        space = 0  
        number = 0  
        other = 0  
        for each in param[i]:  
            if each.isalpha(): #使用字符串的判断类型,而不是全部列出 
                letters += 1  
            elif each.isspace():  
                space += 1  
            elif each.isdigit():    
                number += 1    
            else:    
                other += 1    
        print('第%d个字符串共有:%d个英文字母,%d个空格,%d个数字,%d个其他字符'%(i+1,letters,space,number,other))     
        #用格式化打印
tongji('1 love y0u~~~','i am better 1314 ### &1')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值