Python之路(第二篇):Python基本数据类型字符串(一)

一、基础
1、编码
UTF-8:中文占3个字节
GBK:中文占2个字节
Unicode、UTF-8、GBK三者关系

ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用码,规定采用2个字节对世界各地不同文字进行编码,gbk是针对中国汉字提出的编码标准,用2个字节对汉字进行表示。utf8是对unicode的升级改进版,但是unicode到utf-8并不是直接的对应。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。

ascii和unicode可以相互转换,gbk和unicode可以相互转换。



2、input()函数

n = input(" ")
>>>hello
>>>n
>>>'hello'

  

n = input(" ")
>>>10
>>>n
>>>'10'

  

输入数字10,这里的n是字符串'10',而非数字10
这里如果
n * 10将输出
'10101010101010101010'
如果将字符串转换数字,可以用Int( )

new_n = int(n)


3、while循环、continue、break

while 条件语句1:功能代码1
else 条件语句2:功能代码2

  

while循环也可以加else

例子:使用while循环输入 1 2 3 4 5 6 8 9 10

n = 1
while n < 11:if n == 7 :passelse:print(n)n = n + 1

  


或者

count = 1
while count < 11if count == 7:count = count + 1continueprint(count)count = count + 1

 

当while执行到if count ==7时,遇到continue,下面的print语句和count=count + 1不会被执行,重新跳回while语句

 

再比如

 

count = 1
while count < 11:count = count + 1continueprint('123')
print('end')

  

这里的print('123')永远不能被执行到

第二个例子

count = 1
while count < 11:count = count + 1print(count)breakprint('123')
print('end')

 

输出结果

2
end

  

这里的print('123')也不能被执行到,遇到break语句直接跳出循环,只能执行一次循环,即输出一次print(count)语句
此程序完整执行过程如下图

 

总结:continue终止当前循环进行下次循环,break终止整个循环


4、算术运算符
+       -     *     /      %        **         //
加   减   乘   除   取余   乘方    取整数商

5、字符串

name = "马大帅"
if "马" in name :print("ok")
else:print("error")

  

'马大帅' 称为字符串
'马' 成为一个字符
'马大'或者'大帅'称为子字符串,也可以叫做子序列,注意这里的字符要连续的,而'马帅'不能称之为子字符串

6、成员运算:
判断某个字符在某个字符串用in 或者not in

name = "马大帅"
if "吗" not in name :print("ok")
else:print("error")

  

7、布尔值

if语句和while语句都使用布尔值作为条件。
布尔值只有两种情况:
真 True 假 False

if 条件判断语句功能代码某块

 

这里的条件判断语句最终会产生一个布尔值,或者是True 或者False

name = "马大帅"
p ="吗" not in name
print(p)
if p:print("ok")
else:print("error")

  

输出结果

True
ok

  

布尔操作符:and or not

在 Python 看来,只有以下内容会被看作假(注意冒号括号里边啥都没有,连空格都不要有!):False None 0 "" '' () [] {}

其他一切都被解释为真!

 

 

举个例子

i = 10
while i:print ("我爱学习!")
print("end")

  


输出结果

我爱学习!
我爱学习!
我爱学习!
我爱学习!
我爱学习!
我爱学习!
我爱学习!
我爱学习!
我爱学习!
...(这里代表一直输出"我爱学习")

  


这个程序会一直输出"我爱学习",除非按下CTRL+C停止执行程序
而print("end")语句永远不会被执行到。
再比如

i = 10
while i:print ("我爱学习!",i)i = i -1
print("end")

  


输出结果

我爱学习! 10
我爱学习! 9
我爱学习! 8
我爱学习! 7
我爱学习! 6
我爱学习! 5
我爱学习! 4
我爱学习! 3
我爱学习! 2
我爱学习! 1
end

  


通过观察"我爱学习"后的数字变化,我们可以看到,这个循环的执行过程,当i循环到0时 ,即while 0 :,0为False,终止循环。开始执行
print("end")语句。

8、比较运算符:判断大小符号
== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于

 

9、运算的优先级


先计算括号内,复杂的表达式推荐使用括号
一般的执行顺序:从左到右
布尔运算优先级
从高到低:not and or
例子:

user = 'nicholas'
psswd ='123'
v = user == 'nicholas' and passwd == '123' or 1 == 2 and pwd == '9876'
print(v)

  

分析:
v = true and true or
此时不用继续计算即可得出v为真的结果,不用考虑布尔运算的优先级,注意这个运算是从左到右的,**而非看到and自动进行运算而后从左到右运算**

一些结论:
从左到右
(1)第一个表达式 or
True or ————>>得出结果True
(2)第一个表达式 and
True and ————>>继续运算
(3)第一个表达式 or
False or ————>>继续运算
(4)第一个表达式 and
False and ————>>得出结果False

即**短路逻辑**

短路逻辑
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出
 or 左侧表达式 (即True)。

 表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到
 or 的左侧,参与接下来的逻辑运算。

 若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

 

 

10、赋值运算符
>= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值给c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

 

二、基本数据类型
(1)数字 int
a = 1
a = 2

int整型(整数类型)
python3中用int表示,没有范围
python2中int有一定范围
超过一定范围,Python2中有长整型即long
python3中只有整型,用int,取消了long类型

**①**、int()将字符串转换为数字

a = "123"
type(a)
b = int(a)
print(b)
type(b)

  

输出

<class 'str'>
123
<class 'int'>

 

type()即可查看变量类型

但是
a = "123n"
b = int(a)
此时是无法用int()转换字符串为数字的。

num = "c"
v = int(num,base = 16) 
print(v)


注释: v = int(num,base = 16) 将num以16进制看待,将num转为10进制的数字。这里是可以的。

②bit_lenghth
当前数字的二进制,至少用n位表示

age = 5
r = age.bit_length()
#当前数字的二进制,至少占用了n位表示
print(r)

  输出结果

3

  即5在二进制中表示为101,至少需要3个位置来表示



(2)字符串 str
a ='hello'
a= 'ssssdda'

字符串方法介绍

a--capitalize()

# capitalize() 首字母大写
test = "lingou"
v1 = test.capitalize( )
print(v1)

  

输出结果

Lingou

  

b--casefold( )、lower()

#lower() 所有变小写
# casefold( ) 所有变小写,与lower相比casefold更牛逼,很多未知(不是英文的,如法文、德文等)的对相应变小写

#lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。

 

test = "LinGou"
v2 = test.casefold( )
print(v2)
v3 =test.lower()
print(v3)

  输出结果

lingou
lingou

  

c--center( )

#center( ) 设置宽度,并将内容居中,这里的"*"可以不写,默认为空白。
#这里的30是总宽度,单位字节

 

test = "LinGou"
v4 = test.center(30,"*" )
print(v4)


输出结果

************LinGou************

 

空白情况

test = "LinGou"
v5 = test.center(30 )
print(v5)


输出结果

           LinGou            

 注:这个输出结果LinGou左右是有空格的

  



d--count( )

#count( ) 去字符串中寻找,寻找子序列的出现次数

#count(sub[, start[, end]])

#count( 子序列,寻找的开始位置,寻找的结束位置)

#count( sub, start=None, end=None) None默认表示此参数不存在

 

test = "LinGouLinGengxin"
v6 = test.count("in" )
print(v6)
v7 = test.count("in",3,6)
#这里的3,6 是对字符串"LinGouLinGengxin"的索引编码,从第三个开始到第六个结束
#L i n G o u L i n G  e  n  g  x  i  n
#0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
print(v7)
v8 = test.count("in",3)#从第3个位置开始找
print(v8)

输出结果

3
0
2

  

e--endswith()、startswith()

#endswith() 以什么什么结尾

#startswith()以什么什么开始



test = "LinGouLinGengxin"
v9 = test.endswith("in" )
v10 = test.startswith("in")
print(v9)
print(v10)


输出结果

 

True
False

  

f--find()、index()

#find()从开始往后找,找到第一个之后,获取其索引位置
#index()功能同上,index找不到,报错,一般建议用find()

 

test = "LinGouLinGengxin"
v11 = test.find("in" )
v12 = test.find("XING" )
v13 = test.index("in")
# v14 = test.index("XING" )
print(v11)
print(v12)
print(v13)
#print(v14)

  

输出结果

 

1
-1
1

  

取消v14 = test.index("XING" )和print(v14)的注释后运行程序会直接报错
因为index找不到"XING",而find()找不到会返回-1


g--format()

#format()格式化,将一个字符串中的占位符替换为指定的值
# { }就是占位符,通过format将占位符替换为指定的值

 

test = "I am {name}"
print(test)
v15 = test.format(name = "LinGou" )
print(v15)

  


输出结果

I am {name}
I am LinGou

  

-第二个

test = "I am {name},age{a}"
print(test)
v16 = test.format(name = "LinGou",a = 19 )
print(v16)

  

输出结果

I am {name},age{a}
I am LinGou,age19

  

-第三个

test = "I am {0},age{1}"
print(test)
v17 = test.format("LinGou",19 )
print(v17)

  

 

输出结果

I am {0},age{1}
I am LinGou,age19

  

当占位符有数字代表,format函数里不再需要具体的name =""
这里是按照先后顺序替换的。

第四个

#format_map()格式化,传入的值
# 书写格式{"name":"LinGou","a":19}

 

test = "I am {name},age {a}"
print(test)
v18 = test.format_map({"name":"LinGou","a":19} )
v19 = test.format(name = "LinGou",a = "19")
print(v18)
print(v19)

  


输出结果

I am {name},age {a}
I am LinGou,age 19
I am LinGou,age 19

  分析:这里的v18和v19是等价的,只是书写方式不一样。format_map后面加的是字典。


h--isalnum( )

#isalnum( )字符串中是否只包含 字母和数字

 

test = "LinGou"
v20 = test.isalnum( )
print(v20)
test2 = "LinGou+"
v21 = test2.isalnum( )
print(v21)

  


输出结果

True
False

  

 

转载于:https://www.cnblogs.com/Nicholas0707/p/8542913.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python ftp下载文件_文件上传下载Python

点击上方蓝字关注我&#xff01;图片来源 pexels.com简单实现文件上传、下载1 Server端 # -*- coding: utf-8 -*-import jsonimport os__author__ sange# Time : 2020/8/17 下午5:26# Author : sange# File : tcpserver_socket.py# Software: PyCharmimport socketserv…

react json转换_Typescript + React 新手篇

极链科技前端工程师茅丹丹前言 TS是什么Type Type (标准JS)。TS的官方网站&#xff1a;Type is a typed superset of Java that compiles to plain Java。Type是一个编译到纯JS的有类型定义的JS超集。 TS优点 TS 最大的优势是它提供了强大的静态分析能力&#xff0c;结合 TSL…

android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

各位看官们&#xff0c;大家好&#xff0c;上一回中咱们说的是Android中UI控件之ListView优化的例子&#xff0c;这一回咱们说的例子是UI控件之RecyclerView。闲话休提&#xff0c;言归正转。让我们一起Talk Android吧&#xff01;看官们&#xff0c;我们在前面章回中介绍了Lis…

Hive的数据模型-外部表

概述 包含External 的表叫外部表 删除外部表只删除metastore的元数据&#xff0c;不删除hdfs中的表数据 外部表 只有一个过程&#xff0c;加载数据和创建表同时完成&#xff0c;并不会移动到数据仓库目录中&#xff0c;只是与外部数据建立一个链接。当删除一个 外部表 时&…

centos默认安装mysql_centos6.x默认安装mysql5.7

1. yum 安装 mysql5.7 yum 源yum localinstall mysql57-community-release-el6-8.noarch.rpm2. 查看是否成功安装MySQL Yum Repositoryyum repolist enabled|grep ""mysql.*-community.*3. 安装mysqlyum install mysql-community-server4.开启数据库服务service mys…

Hive的数据模型-分区表

需求 select * from t1 where xxxx; 这是全表扫描的。实际应用中&#xff0c;有时候不一定需要全表扫描。 比如电信的日志文件&#xff0c;一个表里存了从去年到现在的日志文件&#xff0c;那是很多很大的&#xff0c;实际需求要查今天的&#xff0c;如果用上面的sql&#xf…

arduino 停止程序_建立Arduino机器人,第五部分:障碍规避

欢迎阅读教程系列的第五篇文章&#xff0c;其中我正在构建一个基于遥控Arduino的车辆机器人。这是我到目前为止发表的文章列表&#xff1a;第一部分&#xff1a;硬件组件第二部分&#xff1a;Arduino编程第三部分&#xff1a;组装机器人第四部分&#xff1a;A(不是那样)基本机器…

Yarn简单介绍及内存配置

在这篇博客中&#xff0c;主要介绍了Yarn对MRv1的改进&#xff0c;以及Yarn简单的内存配置和Yarn的资源抽象container。我么知道MRv1存在的主要问题是&#xff1a;在运行时&#xff0c;JobTracker既负责资源管理又负责任务调度&#xff0c;这导致了它的扩展性、资源利用率低等问…

mysql计算时间函数_mysql时间计算函数

当前一个业务需求&#xff0c;需要查找创建在三天以前的数据&#xff0c;表中是存了一个创建时间的&#xff1b;这个需求看起来很简单&#xff0c;直接全部查找出来然后用代码根据时间筛选一下就可以了。但这只是适用于数据量不大的情况下&#xff0c;如果数据量大&#xff0c;…

html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

(给DotNet加星标&#xff0c;提升.Net技能)转自&#xff1a;学习中的苦与乐cnblogs.com/xiongze520/p/10412693.html现在的项目开发基本上都用到了上传文件功能&#xff0c;或图片&#xff0c;或文档&#xff0c;或视频。我们常用的常规上传已经能够满足当前要求了&#xff0c;…

Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job

原文链接&#xff1a;http://blog.csdn.net/dai451954706/article/details/50464036 ----------------------------------------------------------------------------------------------------- 今天&#xff0c;一大清早同事就让我帮他解决Hive的问题&#xff1a;他在Hive中…

git切换用户密码_Git 最基本的命令

本人比较懒&#xff0c;不是很爱学习新东西&#xff0c;之前用Git一直在用GUI SourceTree&#xff0c;今天因为用到Cloud IDEGitHub才迫不得已用一下Git的命令行&#xff0c;如果你是Git的新手&#xff0c;也分享给你最基本的命令。新建一个Git版本库把一个本地文件夹变成一个G…

动态分区装载数据

不开启 一个个分区导入&#xff0c;分区需要做到一对一。 hive (zmgdb)> insert overwrite table p_t3 partition (cityningbo) > select name,post,address from p_t1 where cityningbo; 会启动mapreduce进行导入&#xff0c;mr卡在kill job_xxxx&#…

AI造福设计师:搭配色板这种苦差事交给GAN就好啦(教程)

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;设计师要开工&#xff0c;总是离不开配色方案&#xff0c;也就是色板。 不过&#xff0c;做色板可不是个简单的活&#xff0c;色板生成器Colormind的作者Jack Qiao&#xff08;名字来自Product Hunt&#xff0c;我们下面叫…

mapreduce yarn内存参数

1、yarn-site.xml 设置 1.1 RM设置 RM的内存资源配置&#xff0c;主要是通过下面的两个参数进行的&#xff08;这两个值是Yarn平台特性&#xff0c;应在yarn-sit.xml中配置好&#xff09;&#xff1a; yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocati…

html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布

历经数日的HTML5网页设计大赛初赛已经落下的帷幕激动人心的决赛即将开始你们准备好了吗&#xff1f;①决赛名单在经过评委老师多轮评选后,有以下队伍/(个人)脱颖而出进入决赛&#xff1a;1.施佳镛_故宫旅游网2.王永校_神秘莫测的宇宙3.黄炜岳_广州旅游网站4.吴贵滨_NameLess5.陈…

Hive的数据模型—桶表

概述 桶表是对数据进行哈希取值&#xff0c;然后放到不同文件中存储。 数据加载到桶表时&#xff0c;会对字段取hash值&#xff0c;然后与桶的数量取模。把数据放到对应的文件中。 物理上&#xff0c;每个桶就是表(或分区&#xff09;目录里的一个文件&#xff0c;一个作业产…

delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识

一、矢量瓦片的基本原理和相关格式现阶段&#xff0c;电子地图瓦片主要使用两种方式&#xff0c;一种是传统的栅格瓦片&#xff0c;另外一种是新出的矢量瓦片(Vector Tiles)&#xff0c;前者是采用四叉树金字塔模型的分级方式&#xff0c;将地图切割成无数大小相等的矩形栅格图…

python生成器与迭代器。

生成器 在python 中一边循环一边计算的机制&#xff0c;叫做生成器(generator)。 通过列表生成式&#xff0c;我们可以直接创建一个列表。但是&#xff0c;收到内存的限制&#xff0c;列表容量肯定是有限的。而且&#xff0c;创建一个包含100万个元素的列表&#xff0c;不仅占用…

python怎样将list转化成字典_在python 中如何将 list 转化成 dictionary

原标题&#xff1a;在python 中如何将 list 转化成 dictionary 问题1&#xff1a;如何将一个list转化成一个dictionary&#xff1f; 问题描述&#xff1a;比如在python中我有一个如下的list&#xff0c;其中奇数位置对应字典的key&#xff0c;偶数位置为相应的value解决方案: 1…