学习笔记20:Python基础使用(参数,嵌套,列表,元组,字典,字符串等)

(1)函数的定义:可由字母,下划线和数字组成,但不能以数字开头,且不能与关键字相同

def 函数名():
	函数封装的代码

练习1:第一个函数

#注意定义函数之后只表示代码封装,需主动调用,函数定义必须写在调用之前 


def say_hello():
	'''打招呼'''
    print("hello 1")
    print("hello 2")
say_hello()
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/first_函数.py
hello 1
hello 2

Process finished with exit code 0

注:函数定义上方与其他代码保留两个空行,且将函数说明用引号写在函数内部,在PyCharm中可用Ctrl+Q查看函数相关信息

(2)函数参数的使用:在函数名后面的括号内可填写参数,参数之间使用逗号进行分离;调用函数时按照参数定义(形参)顺序依次写入传递的参数值(实参)
函数的返回值:在函数中使用return关键字可返回函数值;当调用函数时可使用变量来接收函数的返回结果

练习2:两个数字的求和

def sum(number1,number2):
    '''两个数字求和'''
    #调用函数,并使用result变量接收计算结果
    result = number1 + number2
    print("%d + %d = %d" %(number1,number2,result))
sum(1,2)
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/求和.py
1 + 2 = 3

Process finished with exit code 0

练习3:加入函数返回值

def sum(number1,number2):
    '''两个数字求和'''
    result = number1 + number2
    #可以使用返回值得出计算结果
    return result
#可以使用变量来接收函数执行的返回结果
sum_result = sum(1,2)
print("计算结果:%d" %sum_result)

执行结果:

C:\python\0\venv\Scripts\python.exe C:/python/0/求和.py
计算结果:3

Process finished with exit code 0

注意:return 表示返回,会返回到调用函数的位置,函数内return后续的代码不会被执行

(3)函数的嵌套
练习4:函数的嵌套

def test1():

    print("*" * 50)
def test2():

    print("-" * 50)
    test1()
    print("+" * 50)
test2()

#打印任意字符任意次数的分隔线
def print_line(char,times):
    print(char * times)
print_line("&",40)


def print_lines(char,times):
    """
    给函数添加文档注释:打印多条分割线
    :param char:分隔线的字符
    :param times:分隔线的次数
    """
    row = 1
    while row < 3:
        print_line(char,times)
        row = row + 1
print_lines("!",10)
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/函数嵌套.py
--------------------------------------------------
**************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
!!!!!!!!!!
!!!!!!!!!!

Process finished with exit code 0

(4)模块中的函数:使用import导入模块;以py结尾的python源文件都是一个模块;在模块中的全局变量和函数都是模块可直接提供给外界的工具;模块名也是标识符不能以数字开头,不能与关键字重名,若模块名以数字开头则不能导入。

练习5:定义一个函数quadratic(a, b, c),求一元二次方程的方程解

import math
def quadratic(a,b,c):
    if a == 0:
        return TypeError("a不能为0")
    if not isinstance(a,(int,float)) or not isinstance(b,(int,float)) or not isinstance(c,(int,float)):
        return TypeError("Bad operand type")
    delta = math.pow(b,2) - 4*a*c
    if delta < 0:
        return "无实根"
    x1 = math.sqrt((delta)-b)/(2*a)
    x2 = -math.sqrt((delta)+b)/(2*a)
    return x1,x2
a = int(input("请输入a:"))
b = int(input("请输入b:"))
c = int(input("请输入c:"))
print(quadratic(a,b,c))

执行结果:
D:\python\python程序\venv\Scripts\python.exe D:/python/python程序/方程解.py
请输入a:2
请输入b:8
请输入c:4
(1.224744871391589, -1.5811388300841898)

Process finished with exit code 0

练习6:求n的阶乘

def fact(n):
    return fact_iter(n,1)
def fact_iter(num,product):
    if num == 1:
        return product
    return fact_iter(num-1,num * product)
print(fact(6))
执行结果:
D:\python\python程序\venv\Scripts\python.exe D:/python/python程序/阶乘.py
720

Process finished with exit code 0

(5)pyc文件:使用解释器编译过的文件,即二进制文件(python解释器模块的源码转换为字节码,这样当用import导入时可优化执行速度。
(6)python中数据类型:数字型(整型,浮点型,布尔型,复数),非数字型(字符串,元组,列表,字典)

  1. 列表:多用在处理相同的数据类型,在其他语言中对应数组,用 [ ] 定义,数据之间用逗号隔开,列表的索引即位置标号从0开始,取值若超出索引范围则会index out of range出错。

练习7:列表基础使用

#按Ctrl+Q可以查看光标所在具体使用方法
name_list= ["zhangshan","lisi","wangwu"]
#1.取值和取索引
print(name_list[2])
print(name_list.index("wangwu"))#使用index方法时,取值必须存在
#2.修改指定位置数据,列表指定索引不能超出范围
name_list[1] = "李四"
#3.向列表中增加数据
name_list.append("三毛") #列表末尾追加数据
name_list.insert(1,"喃喃")#在列表指定索引位置插入数据
tmp_list = ["哪吒","熬丙","太乙真人"]
name_list.extend(tmp_list)#将其他列表完整内容追加到当前列表
print(name_list)
#4.删除数据
name_list.remove("wangwu")#可从列表中删除指定数据,若数据不只一个,则删除第一次出现的
name_list.pop()#默认删除列表中最后一个元素
name_list.pop(3)#可删除指定索引位置数据
print(name_list)
name_list.clear()#清空列表

name_list1= ["zhangsan","lii","wang"]

del name_list1[1]#del 关键字本质上是将一个变量从内存中删除,后续的代码则不能再使用这个变量,不建议使用
print(name_list1)

#统计
name_list2 = ["zhangs","lii","wangs","uu","uu"]
list_len = len(name_list2)
print("列表中包含%d个元素" %list_len)
print("uu出现了%d次"%name_list2.count("uu"))

#排序
name_list3 = ["bb","cc","tt","ff"]
num1_list = [6,3,9,5,2]
#升序
#name_list3.sort()
#num1_list.sort()
#降序
#name_list3.sort(reverse=True)
#num1_list.sort(reverse=True)
#逆序
name_list3.reverse()
num1_list.reverse()
print(name_list3)
print(num1_list)

#打印python中的关键字,关键字后面不需要括号,如上面的del
import keyword
print(keyword.kwlist)

#使用迭代(iteration)遍历列表,顺序从列表获取数据,每一次循环,数据会保存在name变量
name_list4 = ["zhungs","lri","ue"]
for name in name_list4:
    print("我的名字叫%s" %name)
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/列表.py
wangwu
2
['zhangshan', '喃喃', '李四', 'wangwu', '三毛', '哪吒', '熬丙', '太乙真人']
['zhangshan', '喃喃', '李四', '哪吒', '熬丙']
['zhangsan', 'wang']
列表中包含5个元素
uu出现了2次
['ff', 'tt', 'cc', 'bb']
[2, 5, 9, 3, 6]
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
我的名字叫zhungs
我的名字叫lri
我的名字叫ue

Process finished with exit code 0

2.元组:与列表类似,但元组中的变量均不能修改;元组用()定义,数据与数据之间用逗号隔开;元组的索引也从0开始;当元组中只有一个元素时,需要在元素后加入逗号

练习8:元组基础使用

info_tuple = ("魏无羡",26,1.8)
#1.取值和取索引
print(info_tuple[0])
print(info_tuple.index(1.8))
#2.统计计数
print(info_tuple.count("魏无羡"))
print(len(info_tuple))
#3.使用迭代遍历元组
for my_info in info_tuple:
    print(my_info)#使用格式字符串输出不方便,因为元组中保存的数据类型不同
#4.使用格式化字符输出,格式化字符后面的‘()’本身就是元组
print("%s 年龄是 %d 身高是 %.2f" %("蓝忘机",20,1.8))
info_tuple1 = ("蓝湛",20,1.8)
print("%s 年龄是 %d 身高是 %.2f" %info_tuple1)
info_str = "%s 年龄是 %d 身高是 %.2f" %info_tuple1 #使用元组可用来拼接新的字符串
print(info_str)
#元组和列表之间的转换
info_tuple2 = ("魏婴",26,1.8)
print(list(info_tuple2))
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/元组.py
魏无羡
2
1
3
魏无羡
26
1.8
蓝忘机 年龄是 20 身高是 1.80
蓝湛 年龄是 20 身高是 1.80
蓝湛 年龄是 20 身高是 1.80
['魏婴', 26, 1.8]

Process finished with exit code 0

3.字典:存储多个数据,与列表有序的对象集合不同,字典是无序的;字典用{}定义;用键值对存储数据,键值对之间使用逗号分隔;键key是索引,值value是数据;键和值之间使用冒号分隔;键必须唯一;值可取任何数据类型,但键只能使用字符串,数字或元组

练习9:字典的基础使用

#字典是无序的数据集合,输出的顺序与定义的顺序无关
lanzan = { "name":"蓝湛",
           "age": 20,
           "gender":True,
           "height":1.85
           }
print(lanzan)
weiying_dict = {"name":"魏婴"}
#1.取值
print(weiying_dict["name"])
#2.增加/修改
weiying_dict["age"] = 27
print(weiying_dict)
weiying_dict["name"] = "魏无羡"
print(weiying_dict)
#3.删除
weiying_dict.pop("name")
print(weiying_dict)
#4.统计键值个数
print(len(lanzan))
#5.合并字典
tem_dict = {"weight":74.5,
            "age": 21}
lanzan.update(tem_dict)
print(lanzan)
#6.清空字典
lanzan.clear()
print(lanzan)
#7.循环遍历
weiwuxian_dict = {"name":"魏无羡",
                  "qq":"2423434",
                  "phone":"3432545"}
#k是每一次循环中获取到的键值对的key
for k in weiwuxian_dict:
    print("%s - %s" %(k,weiwuxian_dict[k]))

#字典和列表的联合使用:将多个字典放在一个列表中再进行遍历
card_list = [
    {"name":"魏无羡",
    "qq":"333333",
     "phone":"11111"},
    {"name": "蓝忘机",
     "qq": "222222",
     "phone": "88888"},
]
for card_info in card_list:
    print(card_info)
执行结果:
C:\python\0\venv\Scripts\python.exe C:/python/0/字典.py
{'name': '蓝湛', 'age': 20, 'gender': True, 'height': 1.85}
魏婴
{'name': '魏婴', 'age': 27}
{'name': '魏无羡', 'age': 27}
{'age': 27}
4
{'name': '蓝湛', 'age': 21, 'gender': True, 'height': 1.85, 'weight': 74.5}
{}
name - 魏无羡
qq - 2423434
phone - 3432545
{'name': '魏无羡', 'qq': '333333', 'phone': '11111'}
{'name': '蓝忘机', 'qq': '222222', 'phone': '88888'}

Process finished with exit code 0

4.字符串:可用双引号或者单引号定义;len函数统计字符串长度;count统计子字符串在大字符串中出现的次数,若子字符串不存在则次数为0;index统计字符串在大字串中出现的位置,若子字符串不存在程序会报错。

练习10:字符串的基本使用

str1 = "hello python"
str2 = '我爱看”陈情令"'
print(str2)
print(str1[0])
for char in str2:
    print(char)
print(len(str1))
print(str1.count("o"))
print(str1.index("o"))
space_str = "   \t\n\r" #判断空白字符
print(space_str.isspace())
num_str = "\u00b2"#判断字符串是否只包含数字,下列三种均不能判断小数
print(num_str)#平方
print(num_str.isdecimal())#只能判断单纯的数字
print(num_str.isdigit())#可判断单纯数字和unicode的数字
print(num_str.isnumeric())#可判断单纯数字,中文数字和unicode的数字

hell_str = "hello world"
print(hell_str.startswith("Hello"))#判断是否以字符串开始
print(hell_str.endswith("world"))#判断是否以字符串结束
print(hell_str.find("o"))#判断子字符串在字符串中的位置,与index的区别在于当查找的字符不存在时不报错
print(hell_str.replace("world","boji"))#替换字符串,会返回新字符串,但注意不会改变原有字符串
print(hell_str)

poem = ["\t\n白日依",
        "黄河",
        "入了海流\t\n"
]
for poem_str in poem:
    print("|%s|"% poem_str.strip().center(10," "))#strip去除空白字符,center中心对齐;ljust向左对齐;rjust向右对齐

poem1 = "灯管\t 王之涣 \t白日依山尽 \t \n黄河"
poem_list = poem1.split()#拆分字符串
print(poem_list)
result = " ".join(poem_list)
print(result)

#切片方法适用于字符串,列表,元组,可采用倒序顺序方法
#字符串[开始索引:结束索引:步长]
num_str = "01234567"
print(num_str[2:6])
print(num_str[2:])
print(num_str[:6])
print(num_str[-1:])
print(num_str[:])
print(num_str[::2])
print(num_str[::-1])
C:\python\0\venv\Scripts\python.exe C:/python/0/字符串.py
我爱看”陈情令"
h
我
爱
看
”
陈
情
令
"
12
2
4
True
²
False
True
True
False
True
4
hello boji
hello world
|   白日依    |
|    黄河    |
|   入了海流   |
['灯管', '王之涣', '白日依山尽', '黄河']
灯管 王之涣 白日依山尽 黄河
2345
234567
012345
7
01234567
0246
76543210

Process finished with exit code 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章