函数定义和参数

2018-01-03  本文已影响0人  C1awn_

1. 函数定义

def fun():
    print "hello"
In [3]: fun()
hello
In [4]: def fun():
   ...:     sth = raw_input("input a num: ")
   ...:     try:
   ...:         if type(int(sth)) == type(1):
   ...:             print "%s is a num " %sth
   ...:     except:
   ...:         print "%s is not a num" %sth

try和excpet用来判断

执行结果:

In [5]: fun()
input a num: 1a
1a is not a num

In [6]: fun()
input a num: 5
5 is a num 

2. 函数参数

In [14]: def fun(x,y):
   ....:     if x >= y:
   ....:         print "%s is bigger" %x
   ....:     else:
   ....:         print "%s is bigger" %y
   ....:         

执行结果:

In [15]: fun(3,3)
3 is bigger

In [16]: fun(3,4)
4 is bigger

In [17]: fun(3,2)
3 is bigger
#!/usr/bin/python
# -*- coding:utf8 -*-
# author: chawn
# date:
import sys
def isNum(n):  #定义函数最好类似这么写
    for i in n:
        if i in "0123456789":
            pass    #占位
        else:
            print "%s is not a num" %n
            sys.exit()  #跳出整个程序
    else:
         print "%s is a num" %n
isNum(sys.argv[1])

sys.argv[1]输出第一个参数,[0]是程序名本身,[1]是第一个参数,以此类推

执行结果:

[root@t1 py]# python 1.py 5
5 is a num
[root@t1 py]# python 1.py 5a
5a is not a num

打印所有的pid,利用os.listdir('/proc')

os.listdir(‘’)的参数是目录,返回值是列表

#!/usr/bin/python
# -*- coding:utf8 -*-
# author: chawn
# date:
import sys
import os    #要调用os.listdir
def isNum(n):
    for i in n:
        if i in "0123456789":
            pass
        else:
            break
    else:
         print n,
for i in os.listdir('/proc'):    #调用函数
    isNum(i)

对比和之前的不同,执行结果:

[root@t1 py]# python 1.py 
1 2 3 7 8 9 10 11 12 13 17 18 19 20 21 22 23 24 25 26 32 33 34 35 36 44 46 47 49 68 103 243 244 245 253 254 255 256 257 258 259 285 286 287 288 289 290 291 292 293 294 371 396 400 417 473 474 475 476 477 478 479 480 497 521 524 527 529 535 538 542 544 567 579 583 843 845 861 863 936 938 940 988 997 1131 1132 1212 1215 1216 1217 1218 1219 1220 1221 1416 2007 2107 2169 2354 2357 2361 2362 2363 2364 2365 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2424 2441 27313 27377 27606 30097 30241 31524 31551 31568 31570 31631 31922 31924 31941 31972 31974 31991 32071 32358 32359 32361 32378 32404 32415 32417 32454 32455 32480 32488

3. 默认参数(缺省参数)

In [21]: def fun(x=2,y=3):
   ....:     print x+y
   ....:     

In [22]: fun()
5

In [23]: fun(1)  #输入一个参数的话,默认是对应左边的
4

In [24]: fun(1,2)
3

举例:

In [28]: def fun(x=2,y):
   ....:     print x+y
   ....:     
  File "<ipython-input-28-b384b65a328a>", line 1
    def fun(x=2,y):
SyntaxError: non-default argument follows default argument

不能这样定义def fun(x=2,y)
举例:

In [29]: def fun(x,y=2):
   ....:     print x+y
   ....:     

In [30]: fun(1,4)
5

In [31]: fun(1)
3

对比上面

4.练习

习题

  1. 设计一个函数,统计任意一串字符串中数字字符的个数
    例如:
    "adfdfjv1jl;2jlk1j2" 数字个数为3个
  1. 设计函数,统计任意一串字符串中每个字母的个数,不区分大小写
    例如:
    "aaabbbcccaae111"
    a 5个
    b 3个
    c 3个
    e 1个

1.解答。可以扩展写:
首先来看两个函数,

s=input("please inupt string") 
    print(s.isdigit()) #用isdigit函数判断是否数字 
    print(s.isalpha()) #isalpha判断是否字母 
    print(not (s.isalpha() or s.isdigit()) and s.isalnum()) #isalnum判断是否数字和字母的组合

代码:

#!/usr/bin/python
# -*- coding:utf8 -*-
# author: chawn
# date:
intCount = 0  #用来记录列表中的int元素个数
strCount = 0 #记录str元素个数
otherCount = 0
a = raw_input("plz input a string:")
# 使用for循环遍历字符串,每次循环判断当前获取的元素的类型,并给对应计数器计数
for i in a:
    if i.isdigit(): #判断i是不是int
        intCount += 1
    elif i.isalpha(): #判断i是不是str
        strCount += 1
    else:
        otherCount += 1
print "数字=%d,字母=%d,其他=%d" % (intCount,strCount,otherCount)

执行结果:

C:\Users\chawn\PycharmProjects\pyex\venv\Scripts\python.exe C:/Users/chawn/PycharmProjects/pyex/180103/判断字符串的数字个数.py
plz input a string:111aaaadffg**++++
数字=3,字母=8,其他=6

Process finished with exit code 0
  1. 解答
def getLettersCount(text):
    text = text.upper()     #转换成大写
    dict1 = dict()      #创建空字典
    for i in string.ascii_uppercase:
        dict1.setdefault(i, 0)      #将26个字母当做key增加到字典中,value为0
    
    for i in xrange(0, len(text)):       #遍历字符串
        if text[i] in string.ascii_uppercase:       #如果在26个字母中
            dict1[text[i]] += 1                     #value加1

    for k in dict1:
        if dict1[k] != 0:       #不为0的字母,打印出来
            print("{0} {1}".format(k, dict1[k]))
上一篇下一篇

猜你喜欢

热点阅读