Python编程:在键盘上输入两个字符串,判断一个字符串是否为另一个字符串的子串?

在使用python的开发过程中,常常需要判断,字符串中是否存在子串的问题,

似乎就需要借助for做循环判断,那么这种情况有没有更pythonic的方法呢?

判断一个字符串中是否存在某一个子串
判断一个字符串中是否存在子串通常使用in关键词,如下:

in关键词可以用来判断一个字符串中是否含有一个子串

判断一个字符中是否含有多个子串中的一个

只要有其中的任意一个就输出True,应该怎么判断呢?

我们发现,代码结构看起来还是不够pythonic

有没有更加优雅的写法呢?

可以使用内置的any()函数。

  1. 描述 某次科研调查时得到了n个自然数,每个数均不超过(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结 ...

  2. Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...

原来 0 组就是整个正则式 , 包括没有被包围到组里面的内容。当获取 0 组的时候,你可以不写这个参数。 m.group(0) 和 m.group() 的效果是一样的: 接下来看看更多的 Match 对象的方法,看看我们能做些什么。 expand( template ) 根据一个模版用找到的内容替换模版里的相应位置 这个功能比较有趣,它根据一个模版来用匹配到的内容替换模版中的相应位置,组成一个新的字符串返回。它使用 /g<index|name> 或 /index 来指示一个组。 除了以上这些函数外, Match 对象还有些属性 pos 搜索开始的位置参数 endpos 搜索结束的位置参数 这两个是使用 findall 或 match 等函数时,传入的参数。在上面这个例子里,我们没有指定开始和结束位置,那么缺省的开始位置就是 0, 结束位置就是最后。 re 产生这个匹配的 Pattern 对象,可以认为是个逆引用 得到了产生这个匹配的规则 string 匹配的目标字符串 5. 由26个大写英文字母组成的字符串:^[A-Z]+$ 6. 由26个小写英文字母组成的字符串:^[a-z]+$ 8. 由数字、26个英文字母或者下划线组成的字符串:^w+$ 或 ^w{3,20}$ 10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]w{5,17}$ 15. 钱的输入格式: 17. 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$ 19. 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$ 24. 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里 27. 双字节字符:[^x00-xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)) 28. 空白行的正则表达式:ns*r (可以用来删除空白行) 30. 首尾空白字符的正则表达式:^s*|s*$或(^s*)|(s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

内容来源于网络如有侵权请私信删除


input():接收命令行下输入

1)在py2下:如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用。

2)在py3下:相当于py2的raw_input(),得到的都是字符串,而非数值


特别说明:条件后面的冒号不能少,同样必须是英文字符。

特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。python用这种方法替代了其他很多编程语言中的{}。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。

以缩进代替{},第一个缩进 为{,第一个不缩进为}


注意:循环体内的语句,缩进相同。if也是如此。


  range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数

如果想让这5个*在同一行,python2的话就在print语句后面加上逗号

第二个print的缩进和内层的for是一样的,这表明它是外层for循环中的语句,每次i的循环中,它会执行一次。

print()没有写任何参数,是起到换行的作用


通过函数,可以在程序里重用代码;通过模块,则可以重用别的程序中的代码。

模块可以理解为是一个包含了函数和变量的py文件。在你的程序中引入了某个模块,就可以使用其中的函数和变量。

import random:import语句告诉python,我们要用random模块中的内容。然后便可以使用random中的方法(调用方式“模块名.方法名”),比如:

场景:如果只是用到模块中的一个函数或变量时

调用方式:方法名(或变量名),不需要加模块名。

    randint(5, 10)将会产生一个5到10之间(包括5和10)的随机整数


    1、必须以字母下划线(_)开头其余部分可以是字母、下划线(_)或数字(0-9)

    2、大小写敏感

一、Python中的数据类型有数字、字符串,列表、元组、字典、集合等。有两种方法判断一个变量的数据类型

2、通过与其他已知类型的常量进行对比:type()


转义符\,三个引号(''')

\的用途:1)转义,2)在源码换行(在代码中换行,而不影响输出的结果)

这个字符串仍然只有一行,和"this is thesame line"是一样的,只是在代码中换了行。当你要写一行很长的代码时,这个会派上用场(只是在源码中换行,实际数据不换行)。

三个引号(''')或者("""):在三个引号中,可以方便地使用单引号和双引号(不需要转义符\),并且可以直接换行(实际数据中换行)


1、str():将数字转化为字符串

2、%:对字符串进行格式化

1)%d:替换整数,%dw会被%后面的整数替换

2)%f:替换小数,%.2f会保留2位小数


在python中,其他类型转成 bool 类型时,以下值会被认为是False:

其他的值都认为是True

None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样。

在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如

这在编程中是很常见的一种写法。效果等同于


关键字def,格式如下:

return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。

以上函数,name 参数可忽略

3、如果参数有默认值,则可只传部分参数,按位置匹配(在前)和按参数名匹配可以结合使用。如:

  在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple(元组)对象中,赋值给形参。在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。需要注意,tuple 是有序的,所以 args 中元素的顺序受到赋值时的影响。

5、func(**kargs) 把参数以键值对字典的形式传入。如:

  字典是无序的,所以在输出的时候,并不一定按照提供参数的顺序。同样在调用时,参数的顺序无所谓,只要对应合适的形参名就可以了。于是,采用这种参数传递的方法,可以不受参数数量、位置的限制。

6、参数调用方式混合使用。例:

在混合使用时,首先要注意函数的写法,必须遵守先后顺序:无默认值形参,默认值形参,元组形参,字典形参。

带有默认值的形参(arg=)须在无默认值的形参(arg)之后;元组参数(*args)须在带有默认值的形参(arg=)之后;字典参数(**kargs)须在元组参数(*args)之后。可以省略某种类型的参数,但仍需保证此顺序规则。

调用时也需要遵守先后顺序 :不指定参数名,指定参数名。

指定参数名称的参数要在无指定参数名称的参数之后;不可以重复传递,即按顺序提供某参数之后,又指定名称传递。

在函数被调用时,参数的传递过程为:不指定参数名匹配,指定参数名匹配,多余的不指定参数名为元组参数,多余的指定参数名为字典参数。

1.按顺序把无指定参数的实参赋值给形参;

2.把指定参数名称(arg=v)的实参赋值给对应的形参(非元组、非字典);

3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args);

4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)。


list是以[]包围、逗号分隔的一组数据,数据之间的类型可以不同。

range(1,10)在py2中产生一个list;在py3中返回一个可以循环遍历的range对象,可以通过list()函数转换成列表。

1、以索引访问,从0开始

1)如果索引为负数,则表示从后往前倒数:

l[-1]表示l中的最后一个元素。

l[-3]表示倒数第3个元素。

2)切片操作符,以:分隔的一对数字

冒号前的数字表示开始位置(从0开始),冒号后的数字表示 结束位置。[起始位置:结束位置),即包含起始位置,不包含结束位置

如果不指定第一个数,切片就从列表第一个元素开始。

如果不指定第二个数,就一直到最后一个元素结束。

都不指定,则返回整个列表的一个拷贝。

切片中的数字可以为负数。

3、删除list中的元素:del命令


split默认是按照空白字符(包括空格、换行符\n、制表符\t)进行分割,得到一个list。另外可以揎分割符。

join()是连接符的方法,参数是list


 字符串的遍历与访问,与list类似

通过for...in可以遍历字符串中的每一个字符。

通过[]加索引的方式,访问字符串中的某个字符。

通过两个参数,截取一段子串,具体规则和list相同。

join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。


基本格式是(key是键,value是值):

2.键只能是简单对象,比如字符串、整数、浮点数、bool值。lis就不能作为键,但是可以作为值。

1、python字典中的键/值对没有顺序,无法用索引访问字典中的某一项,而是要用键来访问。

2、通过for...in遍历(遍历的变量中存储的是字典的键):

增加一项(给一个新键赋值):score['慕容复'] = 88

新建一个空的字典:d = {}


元组(tuple)也是一种序列,和list类似,只是元组中的元素在创建之后就不能被修改。

都是元组的实例。它有和list同样的索引、切片、遍历等操作

得到这个函数的返回值有两种形式,一种是根据返回值元组中元素的个数提供变量:

还有一种方法是用一个变量记录返回的元组:



文件名可以用文件的完整路径,也可以是相对(代码的)路径。

python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入f = open('output.txt', 'w')

  • 'w'就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。
  • 不加参数时,open为你默认为'r',reading,只读模式,文件必须存在,否则引发异常。
  • 还有一种模式是'a',appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。

read() #把文件内所有内容读进一个字符串中

  必须以w或a模式打开文件,才能写入


 pass是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句。

我要回帖

更多关于 python判断两个字符串是否相等 的文章

 

随机推荐