Python学习总结(一)常用语法与高级数据类型

注意: python代码的书写格式需要非常规范,目前所学 ex.

  • 单行注释的文字内容与 # 之间需要空出一个格
  • 如果在一行代码后面写注释,注释的 # 符号需要与代码间隔两个空格
  • 每句代码占一行,不能把多个语句写在一行中,程序会报错
  • 运算符与运算符两边的 数字/变量 之间需要有空格
  • 同层次的语句必须有相同的缩进空白,单个语句需要顶格
  • if elif else while for def等的大括号均用:代替,同等缩进位于一层

这大概也是python设计哲学的体现:优雅、明确、简单


下面的细节部分详见代码注释


(1)运算符以及查看变量类型

# 下面是运算符以及类型部分
price = 8.5
money = 365
print(9 // 2)
print((9 - 2 // 1 + 3) % 4 / 3)  # 0.6667
print(type(price))  # type(value)可以查看变量的类型
print(type(money))

int_ = 2 ** 32  # 2^32
print(type(int_))
long_ = 2 ** 64
print(type(2 ** 64))   # python2.x对int long 有区分 , python3.x没有区分

# print(2 ** 1000)  # python的计算能力非常强
print(price * False)

name_1 = "My "
name_2 = "Name"
name_2 = name_1 + name_2    # 和C++类似,python也可以使用+进行两个字符串的拼接
print(name_2)
print(name_2 * 2)  # 显示为My NameMy Name, python可以通过 * 号输出多个相同字符/字符串

(2) 格式化输出与强制输入类型转换

# 格式化输出与强制输入类型转换
# password = int(input("请输入密码:"))  # 输入原型为str,强制类型转换为int类型
password = "123456"
print(type(password))
print("type of %s:%s" % (password, type(password)))  # 多个输出,类比于C语言的格式控制符,注意多个变量用()括起来
price = 5.05
print("price = %f(%.2f), after transform:%.2f%%" % (price, price, price))
# 上面:全部显示、小数点后两位、两个%可以输出为百分号
price = int(price)
print("共6位整数,不足位数用0补齐:%06d\n" % price)

(3)判断语句的使用

# 判断语句的使用
age_1 = 23
age_2 = -1
if age_1 >= 18 and age_2 >= 18:
    # and取并,or取或,not取非
    print("你们的年龄分别是:%03d岁,%03d岁,你们都已经成年" % (age_1, age_2))
    print("欢迎欢迎,热烈欢迎!")
elif age_1 <= 0 or age_2 <= 0:
    print("are you kidding me?")
else:
    print("你还未成年!")
print("此处一定会执行")

is_employee = True
if not is_employee:  # 判断非
    print("False", end = "")  # end默认为换行,这样写会使两个输出紧挨
else:
    print("True", end = " ")

(4)while 循环以及随机数

# 随机数以及循环
import random  # import导入工具包,感觉就像是写了一个C++类之后封装,然后就可以使用它的方法,后面再思考
i = 1
cnt = 0
cnt = float(cnt)
while i <= 100000:
    if random.randint(0, 65535) <= 32767:
        cnt += 1
    i += 1
print("the probability for value under a half:\n%.3f %%" % (cnt / 1000))  # 利用随机数验证中心极限
# break和continue用法可想而知

(5)函数

注意:

  1. 使用def function_name():定义函数,
    定义好函数以后,只表示这个函数封装好了一段代码而已,如果不主动调用函数,函数是不会主动执行的。
  2. 需要事先定义一个函数才能够调用,如果把函数定义放到调用之后,python会报错
  3. 使用import导入工具包,从而可以使用其中的函数
  4. 一个函数的定义与其上面代码需要间隔两行

代码:
hm_02_MySecond.py

def sum_2_num(num1, num2):
    """函数的注释这样写,使用Ctrl+Q可以从调用处查看函数注释"""
    return num1 + num2

调用

num1 = 3
num2 = 4
import hm_02_MySecond
result = hm_02_MySecond.sum_2_num(num1, num2)
print("%d + %d = %d" % (num1, num2, result))

(6)模块

模块是 python 程序架构的一个核心概念

  • 模块 就好比是 工具包,要想使用这个工具包,就需要用关键字import导入
  • 每一个以扩展名py结尾的python源代码都是一个模块
  • 在模块中定义的 全局变量函数 都是模块能够提供给外界直接使用的工具

上面的代码已经体现了模块的用法,这里不再赘述。
另外,如果对一个方法不知道它的作用,可以将鼠标放在该方法上,按Ctrl+Q即可查看注释


高级数据类型

1.列表list(在其他编程语言中也叫做数组)

初始化ex.:name_list = [“123”, “456”, “789”]
方法:
使用 ipython3 查看,使用.Tab即可看到列表的全部方法
在这里插入图片描述

增删改查
name_list = ["zhangsan", "lisi", "wangwu"]
temp_list = ["sunwukong"]
# 和C++类似,同样可以采用下标索引index

# 查
print(name_list.index("zhangsan"))  # 返回找到的第一个索引

# 改
name_list[1] = "zhaoliu"

# 增
name_list.append("wangxiaoer")  # 尾部追加
name_list.insert(1, "xiaomei")  # 指定位置插入
name_list.extend(temp_list)  # 将另一列表内容完全追加到自身

# 删
name_list.remove("wangwu")  # 删除掉"wangwu", 只删除遇到的第一个
name_list.pop()  # 默认弹出列表末尾元素
name_list.pop(3)  # 删除指定索引的元素
del name_list[1]  # 从内存上删除,作用同上
name_list.clear()  # 清空列表

统计与排序
name_list = ["zhangsan", "zhangsan", "lisi", "wangwu"]

# 统计
length = len(name_list)  # 返回列表的长度
cnt = name_list.count("zhangsan")  # 返回指定元素数量

# 排序
name_list.sort()  # 升序排列
name_list.sort(reverse=True)  # 降序排列
name_list.reverse()  # 元素翻转


2.元组tuple(值固定,可存储多种类型)

元组中可以存放不同数据类型,且元组中的值是不可变的。
初始化ex.:
info_tuple = (“zhangsan”, 18, 1.75)

相关操作

info_tuple = ("zhangsan", 18, 1.75)
print(info_tuple[0])  # 索引
print(info_tuple.index(18))  # 查找元素索引
print(info_tuple.count("zhangsan"))  # 统计元素个数
for my_info in info_tuple:  # 使用迭代遍历
    print(my_info)

在开发中的应用场景:

  • 作为函数的 参数返回值,一个函数可以接收任意多个参数,或者 一次返回多个数据
  • 格式化字符串,格式化字符串后面的()本质上就是一个元素
  • 让列表不可被修改,以保护数据安全

列表与元组的相互转换
info_tuple = list(name_list)
list_name = tuple(info_tuple)


3.字典dictionary(无序,键-值对应,灵活)

可以类比于C++的映射,字典就是键和值相对应,一个键对应一个值。
键作为索引,值用来存储。
另外,值 可以是任意类型,但是 键 只能使用字符串、数字或元组。

初始化ex.:
xiaoming = {"name": "小明",
			"age": 18,
			"is_boy": True,
			"high": 1.75}
增删改查
xiaoming_dict={"name": "xiaoming",
               "is_boy": True}

# 增
xiaoming_dict["age"] = 18
# 改
xiaoming_dict["age"] = 20
# 删
xiaoming_dict.pop("name")
# 查
print(xiaoming_dict["age"])

list类似,使用clear清空,len(dict_name)测量长度,而合并操作为:
dict_name.update(temp)

迭代遍历
for it in xiaoming_dict:
    print("%s - %s" % (it, xiaoming_dict[it]))

注:列表与字典可以嵌套使用,就像是一个对象数组,里面包含每个对象的属性


4.字符串

单引号双引号均可用来表示字符串。
一种情况:str2 = '我的外号是"大西瓜"'这种情况下,为了避免识别符号出错,采用单双引号结合的表示方法。

相关操作
say_hi = "hello hello"
print(say_hi.count("hello"))  # 返回子字符串的个数
print(len(say_hi))  # 返回字符串的长度
print(say_hi.index("hello"))  # 返回找到的第一个子字符串的位置

tips:
如果一个字符串中包含\n(只作两个单个字符理解而不是换行符),一般情况下需要使用转义字符/,而在python字符串中,可以通过在字符串前加r的方式来使字符串自动转化为原始格式,‘r’ means raw

string = "\nmy_string"
print(string)  # 输出: (换行)my_string
string = r"\nmy_string"
print(string)  # 输出: \nmy_string

5.公共方法

函数描述备注
len(item)计算容器中元素个数
del(item)删除元素两种方式
max(item)返回容器中元素最大值如果是字典,只对key进行比较
min(item)类比max
cmp(item1, item2)类比C++的strcmp()返回值Python3.x取消了此函数

切片
原型:string[start: end: step]

  • 切片方法只适用于 字符串、列表、元组
  • 切片从大切出小字符串
  • 开始索引与结束索引均可省略(默认从头/到尾),但冒号不能省略;默认0step=1,此冒号可省
  • 最后一个元素的索引为-1,但如果指定则访问不到最后一个元素,如果采用默认(空)即可访问到

如何通过切片获取逆序的列表?
语句:list_name[::-1]
在这里插入图片描述
另外,我测试了一下发现,如果一个列表进行切片的end大于len,得到的切片仍然是到end。

运算符
+*in /not in比较运算符均可适用于列表、元组、字符串
另外,in /not in同样适用于字典,只判断key是否存在


完整的for循环语句

for 变量 in 集合:
	循环体代码
else:
	没有通过break退出循环,则执行该部分

实例
可用于判断是否检索到想要检索的元素(之前的编程中我会采用flag来判断),这里如果检索到便跳出,不执行else里面的语句,否则会提示查无此值–这样更为方便。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值