当前位置: 澳门新濠3559 > 编程 > 正文

【澳门新濠3559】一种是语言中的两个元素(比如

时间:2019-11-09 19:36来源:编程
字符串 Python中的字符串类型基本知识学习教程,python字符串 如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类

字符串

Python中的字符串类型基本知识学习教程,python字符串

如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类方法,比如什么什么语系之类的。我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句“真理是掌握在少数人的手里”,至少在这里可以用来给自己壮壮胆。

我的分法:一种是语言中的两个元素(比如两个字)拼接在一起,出来一个新的元素(比如新的字);另外一种是两个元素拼接在一起,只是得到这两个元素的并列显示。比如“好”和“人”,两个元素拼接在一起是“好人”,而 3 和 5 拼接(就是整数求和)在一起是 8,如果你认为是 35,那就属于第二类了。

把我的这种分法抽象一下:

一种是:△ + □ = ○
另外一种是:△ + □ = △ □
我们的语言中,离不开以上两类,不是第一类就是第二类。

太天才了。请鼓掌。

字符串 在我洋洋自得的时候,我 google 了一下,才发现,自己没那么高明,看维基百科的字符串词条是这么说的:

字符串(String),是由零个或多个字符组成的有限串行。一般记为 s=a[1]a[2]...a[n]。
看到维基百科的伟大了吧,它已经把我所设想的一种情况取了一个形象的名称,叫做字符串,本质上就是一串字符。

根据这个定义,在前面两次让一个程序员感到伟大的"Hello,World",就是一个字符串。或者说不管用英文还是中文还是别的某种文,写出来的文字都可以做为字符串对待,当然,里面的特殊符号,也是可以做为字符串的,比如空格等。

严格地说,在 Python 中的字符串是一种对象类型,这种类型用 str 表示,通常单引号''或者双引号""包裹起来。

字符串和前面讲过的数字一样,都是对象的类型,或者说都是值。当然,表示方式还是有区别的。

"I love Python." 'I love Python.' 'I LOVE PYTHON.' 'I LOVE PYTHON.'

从这两个例子中可以看出来,不论使用单引号还是双引号,结果都是一样的。

>>> 250
250
>>> type(250)
<type 'int'>

>>> "250"
'250'
>>> type("250")
<type 'str'>

仔细观察上面的区别,同样是 250,一个没有放在引号里面,一个放在了引号里面,用 type()函数来检验一下,发现它们居然是两种不同的对象类型,前者是 int 类型,后者则是 str 类型,即字符串类型。所以,请大家务必注意,不是所有数字都是 int(or float),必须要看看,它在什么地方,如果在引号里面,就是字符串了。如果搞不清楚是什么类型,就让 type()来帮忙搞定。

操练一下字符串吧。

>>> print "good good study, day day up"
good good study, day day up
>>> print "----good---study---day----up"
----good---study---day----up

在 print 后面,打印的都是字符串。注意,是双引号里面的,引号不是字符串的组成部分。它是在告诉计算机,它里面包裹着的是一个字符串。

爱思考的看官肯定发现上面这句话有问题了。如果我要把下面这句话看做一个字符串,应该怎么做?

What's your name?
这个问题非常好,因为在这句话中有一个单引号,如果直接在交互模式中像上面那样输入,就会这样:

>>> 'What's your name?'
File "<stdin>", line 1
 'What's your name?'
  ^
SyntaxError: invalid syntax

出现了 SyntaxError(语法错误)引导的提示,这是在告诉我们这里存在错误,错误的类型就是 SyntaxError,后面是对这种错误的解释“invalid syntax”(无效的语法)。特别注意,错误提示的上面,有一个 ^ 符号,直接只着一个单引号,不用多说,你也能猜测出,大概在告诉我们,可能是这里出现错误了。

在 python 中,这一点是非常友好的,如果语句存在错误,就会将错误输出来,供程序员改正参考。当然,错误来源有时候比较复杂,需要根据经验和知识进行修改。还有一种修改错误的好办法,就是讲错误提示放到 google 中搜索。
上面那个值的错误原因是什么呢?仔细观察,发现那句话中事实上有三个单引号,本来一对单引号之间包裹的是一个字符串,现在出现了三个(一对半)单引号,computer 姑娘迷茫了,她不知道单引号包裹的到底是谁。于是报错。

解决方法一:双引号包裹单引号

>>> "What's your name?"
"What's your name?"

用双引号来包裹,双引号里面允许出现单引号。其实,反过来,单引号里面也可以包裹双引号。这个可以笼统地成为二者的嵌套。

解决方法二:使用转义符

所谓转义,就是让某个符号不在表示某个含义,而是表示另外一个含义。转义符的作用就是它能够转变符号的含义。在 Python 中,用 作为转义符(其实很多语言,只要有转义符的,都是用这个符号)。

>>> 'What's your name?'
"What's your name?"

是不是看到转义符 的作用了。

本来单引号表示包括字符串,它不是字符串一部分,但是如果前面有转义符,那么它就失去了原来的含义,转化为字符串的一部分,相当于一个特殊字符了。

变量和字符串 前面讲过变量无类型,对象有类型了,比如在数字中:

>>> a = 5
>>> a
5

其本质含义是变量 a 相当于一个标签,贴在了对象 5 上面。并且我们把这个语句叫做赋值语句。

同样,在对字符串类型的对象,也是这样,能够通过赋值语句,将对象与某个标签(变量)关联起来。

>>> b = "hello,world"
>>> b
'hello,world'
>>> print b
hello,world

还记得我们曾经用过一个 type 命令吗?现在它还有用,就是检验一个变量,到底跟什么类型联系着,是字符串还是数字?

>>> type(a)
<type 'int'>
>>> type(b)
<type 'str'>

有时候,你会听到一种说法:把a称之为数字型变量,把 b 叫做字符(串)型变量。这种说法,在某些语言中是成立的。某些语言,需要提前声明变量,然后变量就成为了一个筐,将值装到这个筐里面。但是,Python 不是这样的。要注意区别。

拼接字符串 还记得我在本节开篇提出的那个伟大发现吗?就是将两个东西拼接起来。

对数字,如果拼接,就是对两个数字求和。如:3+5,就计算出为 8。那么对字符串都能进行什么样的操作呢?试试吧:

>>> "Py" + "thon"
'Python'

跟我那个不为大多数人认可的发现是一样的,你还不认可吗?两个字符串相加,就相当于把两个字符串连接起来。(别的运算就别尝试了,没什么意义,肯定报错,不信就试试)

>>> "Py" - "thon"  # 这么做的人,是脑袋进水泥了吧?

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'

用 + 号实现连接,的确比较简单,不过,有时候你会遇到这样的问题:

>>> a = 1989
>>> b = "free"
>>> print b+a

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

这里引入了一个指令:print,意思就是打印后面的字符串(或者指向字符串的变量),上面是 Python2 中的使用方式,在 Python3 中,它变成了一个函数。应该用 print(b+a)的样式了。
报错了,其错误原因已经打印出来了(一定要注意看打印出来的信息):cannot concatenate 'str' and 'int' objects。原来 a 对应的对象是一个 int 类型的,不能将它和 str 对象连接起来。怎么办?

原来,用 + 拼接起来的两个对象,必须是同一种类型的。如果两个都是数字,毫无疑问是正确的,就是求和;如果都是字符串,那么就得到一个新的字符串。

修改上面的错误,可以通过以下方法:

>>> print b + `a`  
free1989

注意, 是反引号,不是单引号,就是键盘中通常在数字1左边的那个,在英文半角状态下输入的符号。这种方法,在编程实践中比较少应用,特别是在 Python3 中,已经把这种方式弃绝了。我想原因就是这个符号太容易和单引号混淆了。在编程中,也不容易看出来,可读性太差。

常言道:“困难只有一个,解决困难的方法不止一种”,既然反引号可读性不好,在编程实践中就尽量不要使用。于是乎就有了下面的方法,这是被广泛采用的。不但简单,更主要是直白,一看就懂什么意思了。

>>> print b + str(a) 
free1989

用 str(a)实现将整数对象转换为字符串对象。虽然 str 是一种对象类型,但是它也能够实现对象类型的转换,这就起到了一个函数的作用。其实前面已经讲过的 int 也有类似的作用。比如:

>>> a = "250"
>>> type(a)
<type 'str'>
>>> b = int(a)
>>> b
250
>>> type(b)
<type 'int'>

提醒列位,如果你对 int 和 str 比较好奇,可以在交互模式中,使用 help(int),help(str)查阅相关的更多资料。
还有第三种:

>>> print b + repr(a) #repr(a)与上面的类似
free1989 

这里 repr()是一个函数,其实就是反引号的替代品,它能够把结果字符串转化为合法的 python 表达式。

可能看官看到这个,就要问它们三者之间的区别了。首先明确,repr()和 是一致的,就不用区别了。接下来需要区别的就是 repr()和 str,一个最简单的区别,repr 是函数,str 是跟 int 一样,一种对象类型。

Python 转义字符 在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号本来的含义,而采用另外一含义了。下面表格中列出常用的转义符:

转义字符 描述
(在行尾时) 续行符
反斜杠符号
' 单引号
" 双引号
a 响铃
b 退格(Backspace)
e 转义
00
n 换行
v 纵向制表符
t 横向制表符
r 回车
f 换页
oyy 八进制数,yy 代表的字符,例如:o12 代表换行
xyy 十六进制数,yy 代表的字符,例如:x0a 代表换行
other 其它的字符以普通格式输出

以上所有转义符,都可以通过交互模式下 print 来测试一下,感受实际上是什么样子的。例如:

>>> print "hello.I am qiwsir.     # 这里换行,下一行接续
... My website is 'http://qiwsir.github.io'."
hello.I am qiwsir.My website is 'http://qiwsir.github.io'.

>>> print "you can connect me by qq\weibo\gmail" #\ 是为了要后面那个 
you can connect me by qqweibogmail

raw_input 和 print 分别在交互模式下,将这个两个函数操练一下。

>>> raw_input("input your name:")
input your name:python
'python'

输入名字之后,就返回了输入的内容。用一个变量可以获得这个返回值。

>>> name = raw_input("input your name:")
input your name:python
>>> name
'python'
>>> type(name)
<type 'str'>

而且,返回的结果是 str 类型。如果输入的是数字呢?

>>> age = raw_input("How old are you?")
How old are you?10
>>> age
'10'
>>> type(age)
<type 'str'>

返回的结果,仍然是 str 类型。

再试试 print(),看前面对它的说明,是比较复杂的。没关系,我们从简单的开始。在交互模式下操作:

>>> print("hello, world")
hello, world
>>> a = "python"
>>> b = "good"
>>> print a
python
>>> print a,b
python good

比较简单吧。当然,这是没有搞太复杂了。

特别要提醒的是,print()默认是以 n 结尾的,所以,会看到每个输出语句之后,输出内容后面自动带上了 n,于是就换行了。

有了以上两个准备,接下来就可以写一个能够“对话”的小程序了。

#!/usr/bin/env python
# coding=utf-8

name = raw_input("What is your name?")
age = raw_input("How old are you?")

print "Your name is:", name
print "You are " + age + " years old."

after_ten = int(age) + 10
print "You will be " + str(after_ten) + " years old after ten years."

对这段小程序中,有几点说明

前面演示了 print()的使用,除了打印一个字符串之外,还可以打印字符串拼接结果。

print "You are " + age + " years old."

注意,那个变量 age 必须是字符串,如最后的那个语句中:

print "You will be " + str(after_ten) + " years old after ten years."

这句话里面,有一个类型转化,将原本是整数型 after_ten 转化为了 str 类型。否则,就包括,不信,你可以试试。

同样注意,在 after_ten = int(age) + 10 中,因为通过 raw_input 得到的是 str 类型,当 age 和 10 求和的时候,需要先用 int()函数进行类型转化,才能和后面的整数 10 相加。

这个小程序,是有点综合的,基本上把已经学到的东西综合运用了一次。请看官调试一下,如果没有通过,仔细看报错信息,你能够从中获得修改方向的信息。

原始字符串 所谓原始字符串,就是指字符串里面的每个字符都是原始含义,比如反斜杠,不会被看做转义符。如果在一般字符串中,比如

>>> print "I like npython"
I like 
python

这里的反斜杠就不是“反斜杠”的原始符号含义,而是和后面的 n 一起表示换行(转义了)。当然,这似乎没有什么太大影响,但有的时候,可能会出现问题,比如打印 DOS 路径(DOS,有没有搞错,现在还有人用吗?)

>>> dos = "c:news"
>>> dos
'c:news'  # 这里貌似没有什么问题
>>> print dos # 当用 print 来打印这个字符串的时候,就出问题了。
c:
ews

如何避免?用前面讲过的转义符可以解决:

>>> dos = "c:\news"
>>> print dos
c:news

此外,还有一种方法,如:

>>> dos = r"c:news"
>>> print dos
c:news
>>> print r"c:newspython"
c:newspython

状如 r"c:news",由 r 开头引起的字符串,就是原始字符串,在里面放任何字符都表示该字符的原始含义。

这种方法在做网站设置网站目录结构的时候非常有用。使用了原始字符串,就不需要转义了。

Lesson_3


【5】位运算符

位运算符:按位运算符是把数字看做二进制数来进行计算
& 按位与运算符

相应的位数都为1,则该位的结果是1,否则为0

print(5 & 7)
'''
5 ->101
7 ->111


101
111
————
101

101->5
'''
>>>5

字符串或串(String)是由数字、字母、下划线组成的一串字符,用双引号或单引号包裹的为字符串

您可能感兴趣的文章:

  • Python字符串、元组、列表、字典互相转换的方法
  • Python字符串特性及常用字符串方法的简单笔记
  • 详解Python字符串对象的实现
  • 分享Python字符串关键点
  • python开发之字符串string操作方法实例详解
  • Python编程中字符串和列表的基本知识讲解
  • 在Python中的Django框架中进行字符串翻译
  • Python字符串转换成浮点数函数分享
  • python转换字符串为摩尔斯电码的方法
  • 在Python中用split()方法分割字符串的使用介绍

如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的...

| 按位或运算符

两个二进制位有一个位1时,结果为1

print(5 | 7)

'''
101
111
---
111
'''

>>>7
1 >>> "hello world"
2 'hello world'
3 >>> 'hello world'
4 'hello world'
5 >>> "250"
6 '250'
7 >>> type("200")
8 <type 'str'>

^ 按位异或运算符

二进制的两位相异时,结果为1

print(5 ^ 7)

'''
101
111
---
010
'''
>>>2

   下面示例:

~ 按位翻转运算符

将二进制数+1之后乘以-1

print(~5)
'''
~101
___
(101+1) * -1
___
(0110) * -1
___
-0110
>>>-6

  语法错误 第一行出现三个单引号,Python 解析器匹配不上成对的引号,所以报错。

<< 左移动运算符

各二进制位全部左移动若干位,由<<右侧的数字决定,高位丢弃,低位补0

方法: X<<N 将一个数字X所对应的二进制数向左移动N位.

print(2 << 2)

'''
 0010
___
 1000
'''

>>>8

  解决方法:1、可使用双引号包裹 2、可以使用反斜杠 转义字符

>> 右移动运算符

各二进制位全部右移动若干位,由>>右侧的数字决定

方法: X>>N 将一个数字X所对应的二进制数向右移动N位.

print(8 << 2)

'''
 1000
___
 0010

'''

>>>2
 1 >>> 'What's your name?'
 2   File "<stdin>", line 1
 3     'What's your name?'
 4           ^
 5 SyntaxError: invalid syntax
 6 >>> "What's your name?"
 7 "What's your name?"
 8 >>> 'What's your name?'
 9 "What's your name?"
10 >>>

【6】比较运算符

比较运算符根据表达式值得真假返回布尔值。

格式: 表达式1 关系运算符 表达式2

== != > < >= <=

python在布尔值处理上有些不同,True等于整数1,False等于整数0

#全等于,包括数据类型,布尔型的
print(1 == 2)      >>>False
print(1 == '1')    >>>False
print(1 == True)   >>>True
#不等于
print(1 != 2)      >>>True
print(0 != False)  >>>False
print(1 != '1')    >>>True
#大于
print(1 > 2)       >>>False
print(True > False) >>>True
#小于
print(3 < 8)       >>>True
print(True < False) >>>False
#大于等于
print(True >= False) >>>True
print(1 >= True)  >>>True
#小于等于
print(3.14 <= 3.14)  >>>Ture
print(math.ceil(math.pi) <= math.floor(math.pi)) >>>False

  字符串 、数字互转

逻辑运算符

逻辑操作符包括andornot

逻辑与:and操作符左边的操作符为真,右边也为真,那么结果为真。

and执行的是一个串联的短路原则,一个地方坏了都换了(悲观原则)

a = 0
b = 1
print(a==0 and b==1)
print(a==0 and b==2)

>>>True
>>>False

逻辑与:or操作符只需要左边或右边有一个为真,那么结果为真。

or是一个并联的原则,其它的短路了我这里依然是好的,只要一个是好的那就是好的(乐观原则)

a = 0
b = 1
print(a==2 and b==12)
print(a==0 or b==2)

>>>False
>>>True

逻辑非:not操作符是一个一元操作符,它的作用是得到一个和操作符相反的布尔类型。

a = 0

print(not a==1)
print(not a==0)

#这里相当于 !=

>>>True
>>>False

  内置函数int()  str() float()

【7】成员运算符

成员运算符包括innot in,从字义上可以看,他是判断在什么里面和不在什么里面,返回一个布尔值。

格式: x in y x not in y

a = 'qwert'

print('e' in a)
print('e' not in a)

>>>True
>>>False
 1 >>> a = int("200")
 2 >>> a
 3 200
 4 >>> type(a)
 5 <type 'int'>
 6 >>> b = str(200)
 7 >>> type(b)
 8 <type 'str'>
 9 >>> c = float("200.5")
10 >>> type(c)
11 <type 'float'>
12 >>>

【8】身份运算符

身份运算符包括isis not,判断标识符是不是引用同一个对象。

格式: x is y x is not y

a = None
b = 333
c = 233
print(a is None)
print(b is not None)
print(c is 233)


>>>True
>>>True
>>>True

  转义符

第六章

 第5行出现 n 换行

【1】字符串

到目前为止,我们所认知的在字符串就是引号内的一切东西,我们把字符串叫做文本,文本和数字是截然不同。

python创建字符串的时候,必须要加上引号,单引号也可以双引号也可以,python一点也不挑,
但是你不能一边用单引号,一边用双引号,这样语法就会报错了。

print('python")

>>>SyntaxError: EOL while scanning string literal

我们以前提到过拼接,两个数字叫相加,两个字符串相加叫拼接。

print('5' + '8')

>>>58

那如果在字符串内容中需要用到单引号怎么办了?

print('Let's go')


>>>SyntaxError: invalid syntax

有一种方法,只要用上不同的引号,python就不会误解你的意思了

print("Let's go")

>>>Let's go

 解决方法:使用反斜杠 或者在原始字符串前+r ,会显示原始字符串

【2】原始字符串

反斜杠是一个好东西,但是我们试一试C:now

print('C:now')

>>>C:
>>>ow

#因为 n  在计算机里是 回车键

那如何才能正常的去打印?

print('C:\now')

>>>C:now

# 反斜杠()代表转义的意思

但是如果一个路径里面有很多的那我么一个一个的输入就不乐意了,这时候我们就可以使用 原始字符串 了,
只需要在字符串前面加一个英文字母r即可:

string = r'C:nowstart'

print(string)

>>>C:nowstart

使用字符串的时候需要注意一点:无论是否是原始字符串,都不能以反斜杠结尾。(反斜杠放在字母的结尾表示还没有结束,换行继续的意思)

如果你继续操作就会报错:

string = r'C:nowstart'
print(string)

>>>SyntaxError: EOL while scanning string literal
1 >>> print "c:\news"
2 c:news
3 >>> print r"c:news"
4 c:news
5 >>> print "c:news"
6 c:
7 ews

【3】长字符串

如果你希望得到一个跨多行的字符串,例如:

从明天起, 做一个幸福的人 
喂马, 劈柴, 周游世界 
从明天起, 关心粮食和蔬菜 
我有一所房子, 面朝大海, 春暖花开  
从明天起, 和每一个亲人通信 
告诉他们我的幸福 
那幸福的闪电告诉我的 
我将告诉每一个人 
给每一条河每一座山取一个温暖的名字 
陌生人, 我也为你祝福 
愿你有一个灿烂的前程 
愿你有情人终成眷属 
愿你在尘世获得幸福 
而我只愿面朝大海, 春暖花开

这是一首好诗,但是如果要打印出来,那就需要用到很多的换行符:

print("从明天起, 做一个幸福的人n喂马, 劈柴, 周游世界n从明天起, 关心粮食和蔬菜n我有一所房子, 面朝大海, 春暖花开nn从明天起, 和每一个亲人通信n告诉他们我的幸福n那幸福的闪电告诉我的n我将告诉每一个人nn给每一条河每一座山取一个温暖的名字n陌生人, 我也为你祝福n愿你有一个灿烂的前程n愿你有情人终成眷属n愿你在尘世获得幸福n而我只愿面朝大海, 春暖花开")

这样会给我们带来很多困扰,好在python里面有长字符串,只需要三个引号包裹起来,不管是三个单引号还是双引号。

print('''
从明天起, 做一个幸福的人 
喂马, 劈柴, 周游世界 
从明天起, 关心粮食和蔬菜 
我有一所房子, 面朝大海, 春暖花开  
从明天起, 和每一个亲人通信 
告诉他们我的幸福 
那幸福的闪电告诉我的 
我将告诉每一个人 
给每一条河每一座山取一个温暖的名字 
陌生人, 我也为你祝福 
愿你有一个灿烂的前程 
愿你有情人终成眷属 
愿你在尘世获得幸福 
而我只愿面朝大海, 春暖花开
''')

字符串相加

【4】字符串运算

 字符串相加是将两个字符串拼接在一起

字符串拼接

str1 = '你好'
str2 = '世界'
str3 = str1 + str2

print(str3)

>>>你好世界
 1 >>> "3" + "6"
 2 '36'
 3 >>> "py" + "thon"
 4 'python'
 5 >>> 8 + "6"
 6 Traceback (most recent call last):
 7   File "<stdin>", line 1, in <module>
 8 TypeError: unsupported operand type(s) for +: 'int' and 'str'  不支持 int 和字符串相加,我们可以将其转换
 9 >>> 8 + int("6")
10 14
11 >>> str("8")+ "6"
12 '86'

重复字符串

str1 = '你好'
str2 = '世界'
str3 = str1 + str2

print(str3 * 3 )

>>>你好世界
>>>你好世界
>>>你好世界

 

访问字符串中的某一个字符

通过索引下标查找字符,索引从0开始

str1 = 'hello word,hello shanghai'
print(str1[1])
print(str1[-1])

>>>e
>>>i

字符串的不可变性质

str1 = 'hello word,hello shanghai'
str1[1] = 'a'
print(str1)

>>>TypeError: 'str' object does not support item assignment

返回截取字符串中的一部分

语法 str[start:length:skip]

start表示从下表几开始,length表示截取长度,skip表示隔几位截取一次

str1 = 'hello word,hello shanghai'
print(str1[0:7])     #从0开始取7个
print(str1[0::2])    #从0开始取全部,隔2个取一次
print(str1[::3])     #默认从0开始,隔3个取一次
print(str1[-10::2])  #从倒数第10个开始,隔2个取一次,如果是倒取得话,不能取指定长度


>>>hello w
>>>hlowr,el hnhi
>>>hlwdeohgi
>>>osaga

返回翻转字符串结果

str1 = 'hello word,hello shanghai'

print(str1[::-1])

>>>iahgnahs olleh,drow olleh

#翻转以后不影响原来的str1内存中的值,而是使用一次以后就被回收了

返回去除的空格结果

str1 = ' aleX '
print(str1.lstrip()) #left strip  去除左边的空格
print(str1.rstrip()) #right strip  去除右边的空格
print(str1.strip())  #strip 去除两边的空格

判断是不是以什么开头

str1 = 'abcde'

print(str1.startswith('ab')) #结果正确返回布尔值

>>>True

判断以什么结尾

str1 = 'abcde'

print(str1.endswith('de')) #结果正确返回布尔值

>>>True


>>>True

返回替换字符

语法:str. replace(i,j,k)

i代表被替换字符,j代表准备替换的字符,k代表替换的次数,替换的方向是自左向右去查找

str1 = 'abcdeabcd'

print(str1.replace('a','A'))
print(str1)

>>>AbcdeAbcd
>>>abcdeabcd

#默认替换所有的

str1 = 'abcdeabcd'

print(str1.replace('a','A',1))
print(str1)

>>>Abcdeabcd
>>>abcdeabcd

#替换了一次

返回分割字符

语法:str.split(i,k)

i代以什么为分割符的,k代表分割次数,分割自左向右运行,返回一个列表(类型)后面会学习到,被设定为分隔符的字符不会出出现在列表中。

str1 = 'abcdeabcd'

print(str1.split('d'))

>>>['abc', 'eabc', '']

#默认全部分割

str1 = 'abcdeabcd'

print(str1.split('d',1))

>>>['abc', 'eabcd']

#添加第二个参数,分割一次

返回全大写

str1 = 'abcdeabcd'

print(str1.upper())

>>>ABCDEABCD

返回全小写

str1 = 'ABCDEABCD'

print(str1.lower())

>>> abcdeabcd

返回首字母大写

str1 = 'abcdabcd'

print(str1.capitalize())

>>>Abcdabcd

str1 = 'ABCDABCD'

print(str1.title())

>>> Abcdabcd

str1 = 'abcdabcd'

print(str1[0].upper()+str1[1:])

>>> Abcdabcd

返回首字母小写

str1 = 'ABCDABCD'

print(str1[0].lower()+str1[1:])

>>>aBCDABCD

判断是否是全大写

返回布尔值,如果是空字符串返回False

str1 = 'ABCDABCD'

print(str1.isupper())

>>>Ture

判断是否是全小写

返回布尔值,如果是空字符串返回False

str1 = 'abcdabcd'

print(str1.islower())

>>>Ture

判断首字母大写

返回布尔值,如果是空字符串返回False

但是python没有给我们提供iscapitalize()的方法

str1 = 'Abcdabcd'

print(str1.istitle())

>>>Ture

返回以什么分割的字符

语法:'i'.jion(j)

i代表分割的符号,j代表被分割的字符

str1 = 'abcdabcd'

print(','.join(str1))

>>>a,b,c,d,a,b,c,d

#以逗号分割

【5】占位符

为什么需要占位符,因为变量在引号里面会被看成一个字符串,那么python就不会解析。

语法格式:

'字符串 %s' % 变量或'字符'

'字符串%s %d %f'%(变量1,变量2,变量3)

python的占位符包括:

%s   #代表str

%d   #代表int

$f   #代表float

打印字符串

num = 'Tom'
print ("His name is %s"%num)

>>>His name is Tom

#如果变量里面是个数字那么使用了%s也会解析成字符

打印整数

num = 2
print ("1 +1 = %d"%num)

>>>1 +1 = 2

#如果变量里面是个字符串那么使用了%d会 报类型错

打印浮点数

num = 2.5
print ("1.5 +1 = %f"%num)

>>>1.5 +1 = 2.500000

#如果变量里面是个字符串那么使用了%f会 报类型错,如果是整数会自动转换成浮点数

打印浮点数(指定保留小数点位数)

语法:'字符串 %1.1f' % 变量

num = 2.5
num1 = 16.5
print ("1.5 +1 = %.1f"%num)
print ("15.5 +1 = %0.2f"%num1)

>>>1.5 +1 = 2.5
>>>15.5 +1 = 16.50

#如果是整数相加,并且使用%.0f,那么会四舍五入
#双进度的不会影响整数部分

<font color='red'>注意:</font>

python 在四舍五入的时候会出现奇怪的问题,0.5问题,整数部分为偶数,0.5则被舍去,整数部分为奇数,0.5则进1,这只是单精度的浮点数问题。

num1 = 1.5
num2 = 2.5
num3 = 3.5
num4 = 4.5

print ("0.5 +1 = %.0f"%num1)
print ("1.5 +1 = %.0f"%num2)
print ("2.5 +1 = %.0f"%num3)
print ("3.5 +1 = %.0f"%num3)

>>>0.5 +1 = 2
>>>1.5 +1 = 2
>>>2.5 +1 = 4
>>>3.5 +1 = 4

双进度的浮点数问题(了解)

双进度的浮点问题和但进度不一样

python的 BigDecimal.ROUND_HALF_UP与ROUND_HALF_DOWN机制(了解)

由于 python3 包括python2.7 以后的round策略使用的是decimal.ROUND_HALF_EVEN 
即Round to nearest with ties going to nearest even integer. 也就是只有在整数部分是奇数的时候, 小数部分才逢5进1; 偶数时逢5舍去。 这有利于更好地保证数据的精确性, 并在实验数据处理中广为使用。

但如果一定要decimal.ROUND_05UP 即Round away from zero if last digit after rounding towards zero would have been 0 or 5; otherwise round towards zero. 也就是逢5必进1需要设置float为decimal.Decimal, 然后修改decimal的上下文

import decimal
context=decimal.getcontext() # 获取decimal现在的上下文
context.rounding = decimal.ROUND_05UP

print(round(decimal.Decimal(2.55), 1)) # 2.6
print(format(decimal.Decimal(2.55), '.1f')) #'2.6'
print ("3.5 +1 = %.0f"%decimal.Decimal(2.55)) #3

指定占位符宽度

print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))

指定占位符宽度(左对齐)

左对齐就是在%后面加-

print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))

指定占位符(只能用0当占位符)

如果坚持用其它的字符或数字作占位符,那么输出的时候为空

print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))

科学计数法(以前提过)

format(0.0015,'.2e')

条件分支

大家在前面的学习已经接触过if-else了,它就是一个条件分支。

比如在网络游戏中,打在在NPC领取任务,在领取任务的时候都会给你几个选择或者是退出,那它是怎么实现的了,就是通过条件分支

我们先来个小游戏

规则:给你一个随机数字,你猜到就夸你一句,你猜错了讽刺就你一句;

#首先我们引入随机库
from random import randint

ran = randint(1,100)  

guess =  int(input("你猜猜我有几根手指:"))   #用户输入的数字传递进来以后默认是字符串,所以要转成int

if guess == ran:
    print("Y*^_^*Y 哇你猜对了 给你一个
	

编辑:编程 本文来源:【澳门新濠3559】一种是语言中的两个元素(比如

关键词:

  • 上一篇:没有了
  • 下一篇:没有了