技术标签: python 字符串 编程语言 程序人生 函数闭包
接下来,我们来一起学习计算机编程里应该了解的基本数据,我们来开始啦
• 是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
• 类似数学公式 (eg. 1 + 1 = 2, 7 * 8 = 56… )
• 表达式特点
• 表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响
• 如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
- 一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成
- 语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果
- 程序中一般用语句完成某种功能
代码化后,要嘛执行,要嘛都不执行: eg.
a = 0
if a < 5:
print(‘Hello’)
print(‘World!’)
- 程序是由一条一条的语句和一条一条的表达式构成的。
概念:标识符(identifier) 是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。编程语言中,是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
在python中,标识符由 英文字母、数字以及下划线(_)组成,但不能以数字开头。
python中的标识符是 区分大小写的。
以下划线开头的标识符是有特殊意义的。
单下划线开头(_foo)的代表不能直接访问的类属性(类中定义的变量),需通过类提供的接口进行访问,不能用“from xxx import ”而导入 ;
双下划线开头的(__foo) 代表类的私有成员;以双下划线开头和结尾的(__f oo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。
- python一些具有特殊功能的标识符,这就是所谓的关键字(keyword),是python已经内定使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符,以免混乱。eg. if, for, while, print, class, True, False, break, return, else, and
- 可以有两个方式检查看内置函数:
- 到官网***python.org, library reference, built-in function*** 查看
- 在python环境输入:
import keyword print(keyword.kwlist)
- 一般上开发人员在程序中自定义的一些符号和名称。标识符是自己定义的, 如 变量名 、函数名 、类名 等
- 由26个英文大小写字母,0-9的数字 ,符号: _, $组成
- 标识符命名有固定规则:
- 标识符中可以包含字母、数字、_,不能使用数字开头 例如:name1, name_1, _name1, (1name 数字在前面就不行)
- Python中不能使用内置关键字和保留字来作为标识符
命名方式:
- 命名法:
- 小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
- 下划线命名法:程序员中还有一种命名法比较流行,就是用下划线“_” 来连接所有的单词,比如 get_url buffer_size。
关于下划线在名字之前或之后eg. _abc, __time, _end_, 这种命名只属于结构函数里固有模式,刚进入学习阶段的我们就不要这样命名啦。
- 数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值,而这些值本身所处的类型。
- 整数 : 所有整数 例如 : a = 1, b = 100,c = 999 都是int整数类型,如果数字太大,输入时可以下划线模式分割:d = 123_456_789
- 小数 : 所有小数或称浮点数,例如 a = 1.2, b=6.66 ,c = 3.0,用float浮点类型表示, 注:浮点数相运算时有时不会绝对精准,eg. 0.1 + 0.2 = 0.300000000004; 0.1 + 0.1 + 0.1 - 0.2 = 0.100000000003; 这是 因为计算机运算二进制和十进制转换误差所致。
- 布尔值(bool): 布尔值适用于程序里的逻辑判断,布尔只有2个值:True(判断返回对),False(判断返回错)
在程序运行是,不同的数据类型不能结合运行运算 eg. print( 1 + "票“) - 不同数据类会报错,一个是数值一个是字符串
可用此函数检查数据类型:type()
但布尔有时代表某个数值0, 1:
eg.
print(1 + True) # = 2
print(3 + False) # = 3
由此可见,True也代表1,False也代表0
- None值:或称 “空值”。只有一个数值:None
- 变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变,通俗的说变量就是给数据赋予一个名字 eg. a = 3
- 变量命名规则
• 变量名由字母、数字、下划线组成,且要符合标识符的命名规范
• 数字不能作为开头
• 不能使用关键字 eg. print, else, return, if…
• 注意 :
- 两个对象相等和两个对象是同一个对象,是两个不同概念
以下运行可以知道,s1和s2虽然输出结果一样,但是存储区块不是同一个对象
s1 = {
'Jerry':'Python'}
import copy
s2 = copy.deepcopy(s1)
print(s2) # {
'Jerry': 'Python'}
print(id(s1),id(s2))
每一个单独的 存储区块有着这三个要素:
- 身份 id
- 数据类型 type
- 数值 value
- 变量的运算就是正常的四则运算 ,需要注意的是在运算过程中含有浮点数,那么它返回的就是一个浮点数类型
- 字符串是由数字、字母、下划线组成的一串字符,Python中用一对双引号或者一对单引号包裹的内容就是字符串 eg. ‘hello’ 在计算机底层里存储的方式是: ‘h’,‘e’,‘l’,‘l’,‘o’,执行表达时扣在一起,就像串起来一样,所以称’ 字符串’
- 注意:
• 单引号和双引号不能混合使用 eg. ‘注意",print("Hello World’)
• 所有python程序里的符号必须用英文输入法的符号 eg. ‘my name’, ‘my name’(这是中文输入法输入的引号,表面很难看出但是执行会报错)
- 长字符串 又叫做文档字符串 我们使用三重引号来表示一个长字符串
eg ‘’’ ‘’’ 或,
‘’’ i love python
i use python
i care python
‘’’- 三重引号可以换行,并且会保留字符串中换行的格式
转义字符是一种特殊的字符常量。转义字符以反斜线""开头, 后跟一个或几个字符。转义字符具有特定的含义, 不同于字符原有的意义,故称**“转义”字符**
总结
• \t 表示 制表符 eg ‘p\tython’ = p ython
• \n 表示 换行符 eg ‘my \nhome’ =
my
home
• \\ 表示 反斜杠 eg ‘c:\\’ = c:\
• \' 表示 ’ eg 'what\‘s time’ = what’s time (不然会跟外围单引号混乱)
• \ '' 表示 ‘’ eg ” 他说\“您好\“! ” = 他说“您好“!
以下还有格式化字符串和占位符,大略列下如下:细节资料会陆续上传:
格式化字符串有以下形式来实现:
- 第一种格式化字符串:拼串
eg. print(’s = ‘ + d + ‘岁’) # 将字符串以"+"拼接上来- 第二种格式化字符串:参数传递
eg. print(’s = ‘, d,‘岁’, ‘数’) # 参数传递, 可输出多个参数- 第三种格式化字符串:占位符
• %s 字符串占位
• %f 浮点数占位 # %.3f 设定为三个小数点位数 eg. 1.637
• %d 整数占位- 第四种格式化字符串:两种表达式:
- f’{变量}’ #多用于有已知定义的值
- str.format #多用于没有已知定义的值
eg.
s = 'python, '
t = 'java, '
u = 'c++'
# 第一种格式化字符串:
print(s + t + u)
# 第二种格式化字符串:
print(s,t,u)
# 第三种格式化字符串:
x = 'python, '
y = 5
z = 0.5
a = '我学 %s %d年 %f个月 ' %(x, y, z)
# 前段: "我学 %s %d年 %f个月" #定义占位数据格式
# 后段:%(x, y, z)
#将x,y,z赋值给前段的占位点,必须符合占位数量
#如前段有3个占位,后段需给予3个数据传入
#也可以分两行表达:
a ='我学 %s %d年 %.2f个月' #小数为可设定eg.%.4f,%.6f
print(a %(x, y, z)) #a为前段,加传入后段值
# 第四种格式化字符串:表达式1
a = f"{s}{t}{u}" #f为format缩写,多用于已定义的值
print(a)
# 第四种格式化字符串:表达式2
# 此方式多用于没有已知定义的值
a = '{}{}{}'.format(s, t, u)
b = '{0}{1}{2}'.format(s, t, u)
b = '{0}{1}{0}'.format(s, t) #0为第一值,1为第二个值
或者分两行表示:
b = '{0}{1}{2}'
print(b.format(s, t, u))
• len() 返回字符串的长度(个数),序列或列表内容的数量
• in 此关键字查看字符是否在这个字符串中
• max() 找出一组序列或列表中的最大ASCII值
• min() 找出一组序列或列表中的最小ASCII值
• split() 分割字符串,返回一个列表
• join(seq) 拼接字符串
eg.
a = [1,3,5,2,7]
b = ['a', 'b', 'd', 'e', 'x', 'q']
c = 'I am Spiderman in black'
d = 'abc'
print(len(a),len(b))
print(min(a), max(b))
print('S' in c)
print('-'.join(b)) # b 里的元素以“-“链接
print('-'.join(d))
print(c.split()) # c 里被空格分开的字抓成列表元素
结果:
5 6
1 x
True
a-b-d-e-x-q
a-b-c
['I', 'am', 'Spiderman', 'in', 'black']
去空格
• str.strip() 左右两边去空格
• str.lstrip() 去左边空格
• str.rstrip() 去右边空格
eg.
a = '----HELLO---'
print(a.strip('-'))
print(a.lstrip('-'))
print(a.rstrip('-'))
结果:
HELLO
HELLO---
----HELLO
字符串大小写
• str.upper() 全部改成大写
• str.lower() 全部改成小写
• str.isupper() 判断字符串是不是大写,返回True/False
• str.islower() 判断字符串是不是小写,返回True/False
eg.
a = 'Superman'
b = 'TELL ME'
c = 'erhhhhhh'
print(a.upper(), a.lower()) # 把a改为大小写
print(b.isupper(), c.isupper()) #b,c是否大写
print(b.islower(), c.islower()) #b,c是否小写
结果:
SUPERMAN superman
True False
False True
- 该函数用来 获取用户的输入
- input()调用后,会立即暂停这以下的程序运行,直到等待用户输入资料
- 用户输入完内容以后,点击回车程序才会继续向下执行
- 用户输入完成以后,其所输入的的内容会以返回值的形式返回 字符串
- 使用此函数来输出对象
- 输出内容可以是数字和字符串(使用引号刮起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将计算结果输出。
- Python中,默认情况下,一条print()语句输出后会自动换行, 如果想要一次输出多个内容而不换行,可将内容使用英文逗号分隔。
- 若print()函数加上end=’’ 分隔符参数,即以分隔符取代换行
- 也可输出到指定文件
name = input('请输入您的名字:')
print(name)
结果:
请输入您的名字: #就定格在这里,等待用户输入资料
请输入您的名字:超级赛亚人 #输入资料点击回车
超级赛亚人 #输出函数将对象输出显示
for i in range(5):
print(i, end=' ')
结果:
0 1 2 3 4
a = 5
b = 20
print(a*b) #运算后输出
print(a if a>b else b) #判断计算后输出
print(a, b,a) #输出多个内容
结果:
100
20
5 20 5
#输出到指定文件
fb = open(r'D:\test.txt', 'a+')
print('会python的人是超级赛亚人', file=fp)
fp.close()
<<< 2x00 Python的要点
数字雕刻软件ZBrush在雕刻的同时能够完美的解决颜色和材质的问题,每当激活任何变换模式,对激活的颜色/材质改变都会即刻应用到当前物体上,使用Color调控板改变当前激活物体的颜色,用Material调控板改变材质。它是指定的颜色或材质填充到物体因此它会保存这些变化,本文将提供一个简单的例子作为说明,以便初学者能够快速入门。
数组的创建使用 array 函数通过传入 list 或 tuple 来创建 NumPy 的 array 对象。 import numpy as np arr1 = np.array([1, 2, 3]) # 列表 arr2 = np.array((1, 2, 3)) # 元组 arr3 = np.array([[1, 2, 3], [1, ...
Hello大家好,本次在网协小课堂中,我打算展示一次新的推送内容,一点点的教会大家用C语言写一个扫雷的初始化原理用来给大家增添一下编程的乐趣(不会C语言的小伙伴可以在推送下方留言,我会视情况推出python版)话不多说,直接上思路在编写扫雷小游戏之前,我们先站在程序猿的角度再重新审视一下这款小游戏吧~扫雷OUR CHILDHOOD(是不是有一种回到童年的赶脚呐)那要怎么玩...
重新装系统后,先后安装VS2005, Microsoft Platform SDK for Windows XP SP2,并注册SP2 sdk至Visual Studio。 发现之前所有的Vs2005的项目都不能编译了。错误:error PRJ0003 : 生成“cl.exe”时出错。 检查Vs2005->工具->选项->项目与解决方案->VC++目录,可执行文件中只剩
建立MDK工程并添加DSP库这里我的硬件平台选择STM32F407 软件选择的keil5 串口程序选择的XCOM这里我选择一个key键点亮LED的例程进行进行改编1.首先添加文件(DSP的库文件)2.添加头文件路径3.添加宏定义:4.开启FPU另外根据ARM官方DSP库的要求,还需要设置宏__FPU_PRESENT为1,不过这个宏已经在文件 stm32...
极其不建议用MAC编译aosp!!!Mac磁盘和CPU限制较大,需要花费更多的精力。从零开始,一共编译了4次,花了一周多的时间。大量的时间都花在了down源码和编译上了,所以强烈推荐用一个CPU强劲的电脑。第一遍,我默认选择了master分支,并且在lunch后选择了2.aosp_arm64-eng。之后发现这个是用来跑模拟器的。第二遍,还是master分支,编译了16. aosp_arm64-e...
调试debug出现Connected to the target VM, address: ‘localhost:8600’, transport: ‘socket’List item
(参考资料:菜菜的sklearn)重要参数,属性及接口criterion1)输入"mse"使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失 。2)输入“friedman_mse”使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差3)输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1
一、HTTP协议1. 请求消息:客户端发送给服务器端的数据,数据格式: 1. 请求行 2. 请求头 3. 请求空行 4. 请求体2. 响应消息:服务器端发送给客户端的数据,数据格式:响应行|-. 组成:协议/版本 响应状态码 状态码描述|- 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。响应头:|- 格式:头名称: 值C...
表达式求值是栈这种数据结构的一个很经典的应用,恰逢是数据结构期末实践题目,经过一定的努力终于也是实现了这个算法,所以分享下我的思路和经验,希望正准备尝试解决这个问题的同学可以少走些弯路,有所借鉴和收获。个人水平有限,文笔拙劣,有所意见和建议欢迎指出我们日常使用的四则运算式如 1+1 被称为中缀表达式,即所有的运算符号都在运算数的中间出现,我们在初学编程时都练习过简单的二元运算,但当求值问题...
服务器在使用pthread_cond_wait的时候遇到一个问题。具体描述如下一个主进程,给n个从线程发送计算请求,主进程会等待n个线程返回,在执行下一步从线程计算完毕后,最后一个线程会通知主线程。如下是示意性代码main_process(){ for(int i = 0; i < n; ++i) { ...
在从MSDN、VMware等站点下载软件时,如果使用普通的网页下载时(如图1所示),如果时间过长,正在下载的文件会过期,导致不能继续下载(如图2所示)。经常许多软件下载了很长时间,到90%多的时候连接中断,只能重新从头下载,这种事情很让人头疼。图1 使用浏览器下载图2 下载中断无法继续以前的时候,我会使用迅雷离线下载功能,如果迅雷的服务器上有同样的文件,会直接离线成功并取回本地,如图3所示。图3 ...