python学习笔记

2023.3.28复习

前面学过的简单知识复习一遍。
input函数使用

input()从键盘输入的数据为字符串类型,但可以转换类型,如下
a = int(input()) #转为int型

print函数的格式化输出

print("%06d %.6f") # 控制输出长度
print("格式化字符串" % 变量1)
print("格式化字符串" % (变量1, 变量2……))
print("%d" %变量 * 10)  # 输出10遍
print("%d" %(变量 * 10)) # 输出变量乘以10后的结果 
print("*", end="") #控制台输出最后内容后不会换行
print("") # 单纯换行

逻辑运算

andornot# 逻辑运算在python中很常见,有时由于逻辑运算符连接了多个条件语句,会导致语句很长不美观,可以采用分段来写,见下例
import random
print("1代表石头,2代表剪刀,3代表布")

# c代表computer,p代表player
c = random.randint(1,3)

p = int(input())
print("玩家出的是%d 电脑出的是%d" % (p, c))
if c == p:
    print("平局")
elif ((c == 1 and p == 3)
      or(c == 2 and p == 1)
      or(c == 3 and p == 2)):
    print("玩家胜")
else:
    print("电脑胜")


if语句使用

# if语句不难理解,重要的是注意写代码是格式问题,执行语句与判断条件的缩进。尤其是if嵌套的时候。
if 条件:
	执行语句
elif 条件:      # elif可以没有,也可以有多个
	执行语句
else:
	执行语句

import模块

import是python中的工具包,可以使用import调用许多实用工具。
如上面逻辑运算中的 import random
                  random.randint(1,3) # 就是产生1 2 3这三个整数中的随机一个。       

while循环

while 条件语句/计数器:
	执行语句      #while循环语句与if语句差不多注意缩进就行
	例:求0~100的偶数和
	i = 0
	result = 0
	while i <= 100:
		if i % 2 == 0:
			result += i
			i += 1
		else:
			i += 1
	print(result)	
	

赋值运算符
在这里插入图片描述
break与continue循环常用关键字
break

i = 0
result = 0
while i <= 3:
    if i == 2:
        break
    else:
        result += i
        print(result)
        i += 1
# 运行后你会发现只会输出0 和 1 .说明当i=2时跳出循环了。

continue

i = 0
result = 0
while i <= 3:
    if i == 2:
        i += 1
        continue
        result += i
    else:
        result += i
        i += 1
print(result)
# 运行输出结果是4(1 + 3),因为当i = 2时,continue直接让程序跳到while条件语句那儿了

循环嵌套

# 直接上例子吧,没啥好说的
row = 1
while row <= 9:
    col = 1
    while col <= row:
        pro = col * row
        print("%d ✖ %d = %d" %(col, row,pro),end=" ")
        col += 1
    row += 1
    print("")

在这里插入图片描述
转义字符

2023.3.30复习

函数的构造,与调用

def multiplication_table(): # 注意定义函数后的缩进
    row = 1
    while row <= 9:
        col = 1
        while col <= row:
            pro = col * row
            print("%2d ✖ %2d = %2d" %(col, row,pro),end=" ")
            col += 1
        row += 1
        print("")
import function_01

function_01.multiplication_table( ) #需要注意的是,调用函数的文件与构造函数的文件必须在一个根目录下,即属于同等地位的。

在这里插入图片描述
调试和函数的文档注释

def say_hello():
    print("hello python 1!")
    print("hello python 2!")
    print("hello python 3!")

say_hello()    #把断点设置在这里,分别使用F7和F8调试
print("调试结束了")

F7 可以单步执行代码,如果是函数会进入函数内部,所以用F7调试时,会一行一行的输出hello python。
F8也是单步执行代码,但当它碰到函数是,会认为函数是一行代码,所以会一下子输出三行hello python。

注释:
函数内部可用"“” “”" 来注释,当你想看这个函数的作用时,光标移动到函数位置,用ctrl + q 就可以快速查看。

函数形参实参
函数:把具有独立功能的代码块组织为一个小模块,需要的时候调用。
函数的参数:增加函数的通用性,针对相同数据的处理逻辑,能够适应更多的数据。
形参和实参:定义函数时,小括号中的参数是用来接收参数用的;调用函数时,小括号中的参数是用来把数据传输到函数内部的。

def add(num1, num2):   # 这里的num1和num2就是形参 
    sums = num1 + num2
    print(sums)

a = int(input())
b = int(input())
add(a, b)

列表
列表是python中使用最频繁的数据类型,在其它语言里叫数组

name_list = ["zhangsan", "lisi", "wangwu"]  # 列表的定义方式

列表中的方法
在这里插入图片描述

用法示例

name_list = ["zhangsan", "lisi", "wangwu"]
name2_list = ["Durant", "Irving", "Curry"]
name3_list = ["10", "25", "4"]

print(name_list[1]) #取值

print(name_list.index("wangwu")) # 取索引

name_list[0] = "张三" #修改
print(name_list[0])

name_list.insert(2,"xiaoming") #insert插入,你输入的数字代表该数据加入列表后的索引
print(name_list)

name_list.append("rose") #append 向末尾插入数据
print(name_list)

name_list.extend(name2_list) # extend将2列表的数据追加到列表
print(name_list)

name_list.remove("张三") # 删除第一个出现的该数据
print(name_list)

name_list.pop() # 删除末尾数据,括号里填索引值可以删除指定索引的数据
print(name_list)

# name_list.clear 清空列表此处注释是因为后面还有用法,你可以自己写一下看看

del name_list[5] # 删除指定索引数据
print(name_list)

print(len(name_list)) #len可以得到列表长度

name_list.count("lisi") #数据在列表中出现的次数

name2_list.sort() #排序
print(name2_list)

name3_list.reverse() #逆序,翻转
print(name3_list)

循环遍历

name_list = ["zhangsan", "lisi", "wangwu"]

for name in name_list:
    """循环遍历过程中,从头到尾每次都会从列表中取出一个数据放在变量name里,
    循环体内部可以访问到每一次取出的数据"""

    print(name)

元组
元组的定义:元组与列表相似,但是元组中的元素不能修改。
元组是由多个元素组成的序列,用()定义。数据之间也是用“,”分隔,索引亦是从0开始。

tuple = () # 空元组
tuple1 = ("homie",) # 至于一个元素也要有逗号

元组的常用操作

info_tuple = ("rose", 56, 19)

print(info_tuple.index(56)) # 取索引

print(info_tuple[1]) # 取值

print(info_tuple.count("rose")) # 计算某个数据出现的次数

元组应用场景
①函数的参数和返回值,函数可以有多个参数,也可以一次返回多个数据。
②格式化字符串,格式化字符串%后的()里本质就是一个元组。
③保护列表的数据不被修改。

info_tuple = ("rose", 56, 19)
num_list = ["13", "34", "66"]

print("%s 已经 %d 岁了,他打了 %d 年篮球" % info_tuple) # 验证格式化字符串后的括号为一个元组

info_tuple2 =tuple(num_list) # 列表转换为元组
print(info_tuple2)

num2_list = list(info_tuple2) # 元组转换为列表
print(num2_list)

字典
dictionary是除列表以外最灵活的数据类型在python中,字典同样可以用来存储多个数据。通常是用于描述一个对象的相关信息。

与列表的区别:
**·**列表是有序的对象集合
**·**字典是无序的对象集合
定义方式:

james = {
    "name": "lebronjames",
    "age": 37,
    "work": "basketballplayer",
    "height": 201
}
# 字典使用键值对存储数据,键只能是字符串,数字或元组。值可以是任何类型。
# 键必须是唯一的

字典的增删改查

james = {
    "name": "lebronjames",
    "age": 37,
    "work": "basketballplayer",
    "height": 201
}

james["weight"] = 122 # 增加键值对
print(james)

james["name"] = "勒布朗·詹姆斯" # 如果键值对已经存在,就是修改值
print(james)

james.pop("work") # 删除
print(james)

字典的统计、合并、清空

james = {
    "name": "lebronjames",
    "age": 37,
    "work": "basketballplayer",
    "height": 201
}

james2 = {
    "weight": 122
}
print(len(james)) # 统计键值对数量

james.update(james2) # 合并字典
print(james) # 注意,被合并的字典中如果包含原字典的键值对,则原键值对会被覆盖

james.clear() # 清空字典

字典的循环遍历

james = {
    "name": "lebronjames",  #这里把所有值都设成了字符串类型,便于格式化输出
    "age": "37",
    "work": "basketballplayer",
    "height": "201"
}

for k in james:
    print("%s %s" % (k, james[k]))  # 遍历循环过程取的是键key

字符串定义及常用操作

str1 = "woaidalanqiu !"

python中字符串的内置方法
①判断类型
string.isspace() ,如果 string 中只包含空格,则返回 True
string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True
string.isdecimal()如果 string 只包含数字则返回 True,全角数字
string.isdigit()如果 string 只包含数字则返回 True,全角数字\u00b2
string.isnumeric()如果 string 只包含数字则返回 True,全角数字汉字数字
string.istitle()如果 string 是标题化的(每个单词的首字母大写)则返回 True
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True

str1 = " "
str2 = "\u00b2" # 平方
str3 = "一千零一"

print(str1.isspace()) # 判断是否为空

print(str2.isdecimal()) # 只能判断全角数字
print(str2.isdigit())   # 除了全角数字,还能判断unicode 字符串 ,即通过键盘无法直接打出来的例如平方等。
print(str2.isnumeric()) # 除了上述两种外,还能判断中文数字

print(str3.isdecimal())
print(str3.isdigit())
print(str3.isnumeric())

# 需要注意的上述三个方法在判断全角数字时,都不能判断小数

②查找和替换
string.startswith(str)检查字符串是否是以 str 开头,是则返回 True
string.endswith(str) 检查字符串是否是以 str 结束,是则返回 True
string.find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
string.rfind(str, start=0, end=len(string))类似于 find(),不过是从右边开始查找
string.index(str, start=0, end=len(string))跟 find() 方法类似,不过如果 str 不在 string 会报错
string.rindex(str, start=0, end=len(string))类似于 index(),不过是从右边开始
string.replace(old_str, new_str, num=string.count(old))把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次

string = "hello world!"

print(string.startswith("hel")) # 判断开头

print(string.endswith("old")) # 判断结尾

print(string.find("llo")) # 查找子字符串的索引,要注意它与index的区别是,index再碰到不存在的字符串时会报错,find则会返回-1.

print(string.replace("world", "python")) # replace不会改变原本字符串
print(string)  

在这里插入图片描述
③大小写转换
string.capitalize()把字符串的第一个字符大写
string.title()把字符串的每个单词首字母大写
string.lower()转换 string 中所有大写字符为小写
string.upper()转换 string 中的小写字母为大写
string.swapcase()翻转 string 中的大小写

④文本对齐
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

poem_list = [
    "静夜思",
    "李白",
    "床前明月光",
    "疑是地上霜",
    "举头望明月",
    "低头思故乡"
]

for poem_str in poem_list:
    print(poem_str.center(10))  # center,ljust,rjust 三个在使文本对齐时,fillchar如果没有设置默认都是英文空格,这是可以更改的

⑤去除空白字符
string.lstrip()截掉 string 左边(开始)的空白字符
string.rstrip()截掉 string 右边(末尾)的空白字符
string.strip()截掉 string 左右两边的空白字符

⑥拆分和连接
string.partition(str)把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面)
string.rpartition(str)类似于 partition() 方法,不过是从右边开始查找
string.split(str=“”, num)以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格
string.splitlines() | 按照行(‘\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表
string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

字符串切片
在这里插入图片描述
注意:1. 指定的区间属于 左闭右开[开始索引, 结束索引) => 开始索引 >= 范围 < 结束索引
* 从 起始 位开始,到 结束位的前一位 结束(不包含结束位本身)
2. 从头开始,开始索引 数字可以省略,冒号不能省略
3. 到末尾结束,结束索引 数字可以省略,冒号不能省略
4. 步长默认为 1,如果连续切片,数字和冒号都可以省略

num_str = "0123456789"

print(num_str[2:5]) # 截取2~5位置的字符串

print(num_str[2:]) # 截取2到末尾的字符串

print(num_str[:5]) # 截取开始到5位置的字符串

print(num_str[::2]) # 从开始位置每隔一个字符截取字符串

print(num_str[2:-1]) # 截取从2到末尾-1的字符串

print(num_str[-2:]) #截取末尾两个字符

print(num_str[::-1]) # 逆序

在这里插入图片描述

公共方法
一.python内置函数
在这里插入图片描述

注意:del的两种方式是指,del既可以用作关键字如: del a[1] ,也可以作为函数del(a[1]).

关于比较,python3.x中使用的是比较符。

dict1 = {
    "height" : 180,
    "weight" : 120
}
dict2 = {
    "height" : 199,
    "weight" : 150
}

list1 = [2, 3, 4]
list2 = [3, 4, 5]

str1 = "hello"
str2 = "Hello"

print(str1 < str2) # "h" > "H"

print(list1 < list2)

print(dict1 < dict2) #比较运算符不适用于两个字典之间的比较

在这里插入图片描述

二.运算符
在这里插入图片描述
三.完整的for循环
在这里插入图片描述
TODO注释的功能
在开发时,有一时无法实现的功能但又要提前调试或怎样时,可以用TODO提醒自己,在pycharm等开发工具中,它比普通注释要更醒目些。

if sel in ["1", "2", "3"]:
        if sel == "1":
            pass
            # TODO 新增名片功能

2023.4.15 新知识学习

在函数内部修改一个全局变量

num = 10

def num_pr1():

    num = 99 #这里的是局部变量 改变不了全局变量num的值
    print("num_pr1中的值为 %d" %num)


def num_pr2():
    print("num_pr2中的值为 %d" %num)

num_pr1() # 输出为99 但这里的num是局部变量
num_pr2() # 输出为10 输出的是全局变量num的值

而在num = 99 上面加一行代码

global num  # 这就会使得函数内部的num变成了全局变量,这样两个输出就都为99了。

tips:在python开发中,一些公司要求全局变量命名以g_或gl_开头,就是为了更好的阅读代码

函数的参数与返回值

交换两个数

a = 100
b = 6

# 交换两个数字
# 1.使用临时变量
c = a
a = b
b = c
print(a)
print(b)

# 2.不使用临时变量
a = a + b
b = a - b
a = a - b

# 3.python 专有利用元组
(a,b) = (b,a)
print(a,b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值