基础知识1

 

1.       数据类型类型

 

1.1.         原子类型

 

type()函数

>>> type(3.4)

<class 'float'>

>>> type(True)

<class 'bool'>

>>> type(3<4)

<class 'bool'>

1.1.1.           布尔型

True

False

>>> 4>4

False

>>> 3<4

True

1.1.2.           整型

>>> type(2)

<class 'int'>

>>> type(2.0)

<class 'float'>

1.1.3.           浮点型

1.1.4.           字符串型

1.2.         分子类型

 

2.       对象

 

2.1.         变量

 

2.1.1.           有开口的盒子,可以修改里面的数据,但盒子无法改变

2.2.         常量

 

2.2.1.           透明且封闭的盒子,可以看到,无法修改

2.3.         a=5

 

2.3.1.           a是变量名,a仅仅是个名字,是贴在对象盒子上的标签

2.3.2.           变量名必须 数字、字母和下划线组成,不能以数字开头,不能与关键字冲突!

a_2

NOfM

_3

4ac

2.4.         type(thing)语句

type(4)

type('4')

type(3<4)

type(4.0)

type(Ture)

3.       整数

 

3.1.         运算

 

3.1.1.           算数运算+、-、*、/、//、%、**

 

>>> a=4

>>> b=3

>>> a/b

1.3333333333333333

>>> a//b

1

>>> a%b

1

>>> a**b

64

>>> a**0.5

2.0

>>> a**-1

0.25

3.1.1.1.            /,结果浮点数

3.1.1.2.            //,结果整数

3.1.1.3.            %,取余

3.1.1.4.            **,幂运算

 

3.1.1.4.1.             可以小数和负数幂次

3.1.2.           divmod(),结果为元祖(tuple)

>>> divmod(a,b)

(1, 1)

>>> divmod(b,a)

(0, 3)

3.2.         进制

 

3.2.1.           0b 或 0B 代表二进制(以 2 为底)
0o 或 0O 代表八进制(以 8 为底)
0x 或 0X 代表十六进制(以 16 为底)

>>> 0b1111

>>> 0o7777

>>> 0xfff

>>>

3.3.         类型转换

 

3.3.1.           int()

 

>>> int(True)

1

>>> int(False)

0

>>> int(2.123)

2

3.3.1.1.            布尔型 0,1

3.3.1.2.            浮点型,截去小数部分

3.3.1.3.            字符串型,仅仅能处理只包含正负号和数字的整数形式

>>> int('2')

2

>>> int('-2')

-2

3.4.         取值范围,任意大小!

4.       浮点型

 

4.1.         运算

 

4.1.1.           +、-、*、/、//、%、**、divmod()

>>> -1.2**2

-1.44

>>> (-1.2)**2

1.44

4.2.         科学计数法,前缀e

>>> 4.1234e4

41234.0

4.3.         float()

 

4.3.1.           布尔型 0.0,1.0

>>> float(True)

1.0

>>> float(False)

0.0

4.3.2.           整型,增加小数部分

4.3.3.           字符串型,仅仅能处理只包含正负号、数字、小数点和前缀e的

>>> float('2.4')

2.4

>>> float('1e2')

100.0

5.       字符串

 

5.1.         创建字符串

 

5.1.1.           将一系列字符包裹在“ ”或' '中

>>> 'Snap'

'Snap'

>>> "Crackle"

'Crackle'

>>> "'Nay,' said the naysayer."

"'Nay,' said the naysayer."

>>> 'The rare double quote in captivity: ".'

'The rare double quote in captivity: ".'

>>> 'A "two by four" is actually 1 1⁄2" × 3

5.1.2.           使用三个单引号或双引号创建多行字符串

>>> poem = '''There was a Young Lady of Norway,

... Who casually sat in a doorway;

... When the door squeezed her flat,

... She exclaimed, "What of that?"

... This courageous Young Lady of Norway.'''

>>> 

5.2.         空字符串

s=""

5.3.         str()类型转换

>>> str(98.6)

'98.6'

>>> str(1.0e4)

'10000.0'

>>> str(True)

'True'

5.4.         转义字符 \

 

5.4.1.           \n 换行
\t 制表符
\' 和 \"
\\

5.5.         使用+号拼接字符串

>>> 'Release the kraken! ' + 'At once!'

'Release the kraken! At once!'

>>> a = 'Duck.'

>>> b = a

>>> c = 'Grey Duck!'

>>> a + b + c

'Duck.Duck.Grey Duck!'

5.6.         使用*号复制字符串

>>> start = 'Na ' * 4 + '\n'

>>> middle = 'Hey ' * 3 + '\n'

>>> end = 'Goodbye.'

>>> print(start + start + middle + end)

5.7.         in, not in判断是否为子串

s = "hello",

print('he' in s)

print('aa' in s)

print('he' not in s)

5.8.         使用 [偏移量] 提取字符

 

>>> letters = 'abcdefghijklmnopqrstuvwxyz'

>>> letters[0]

'a'

>>> letters[1]

'b'

>>> letters[-1]

'z'

>>> letters[-2]

'y'

>>> letters[100]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

IndexError: string index out of range

5.8.1.           第一个字符(最左侧)的偏移量为 0

5.8.2.           最后一个字符(最右侧)的偏移量也可以用 -1 表示

5.9.         使用[start:end:step]分片

 

>>> letters = 'abcdefghijklmnopqrstuvwxyz'

5.9.1.           [:] 提取从开头到结尾的整个字符串

>>> letters[:]

'abcdefghijklmnopqrstuvwxyz'

5.9.2.           [start:] 从 start 提取到结尾

>>> letters[20:]

'uvwxyz'

>>> letters[10:]

'klmnopqrstuvwxyz'

>>> letters[-3:]

'xyz'

5.9.3.           [:end] 从开头提取到 end - 1

5.9.4.           [start:end] 从 start 提取到 end - 1

>>> letters[12:15]

'mno

>>> letters[18:-3]

'stuvw'

>>> letters[-6:-2]

'uvwx'

5.9.5.           [start:end:step] 从 start 提取到 end - 1,每 step 个字符提取一个

>>> letters[::7]

'ahov'

>>> letters[4:20:3]

'ehknqt'

>>> letters[19::4]

'tx'

>>> letters[:21:5]

'afkpu'

>>> letters[::-1]

'zyxwvutsrqponmlkjihgfedcba'

5.9.6.           练习

提取倒数10 个字符:

提取从倒数第11 到倒数第10 个字符:

从开头提取到偏移量为9 的字符:

从偏移量为7的字符提取到偏移量为17的字符:

5.10.     len()长度

>>> len(letters)

26

>>> empty = ""

>>> len(empty)

0

5.11.     split()分割

 

5.11.1.      可以基于分隔符将字符串分割成由若干子串组成的列表

>>> color='green,blue,yellow,red,orange,purple,pink'

>>> color.split(',')

['green', 'blue', 'yellow', 'red', 'orange', 'purple', 'pink']

>>> 'abcdefg'.split()

 ['abcdefg']

 >>> 'a,b,c,d,e,f,g'.split()

 ['a,b,c,d,e,f,g']

>>> 'a,b,c,d,e,f,g'.split(',')

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> 'a b c d e f g'.split()

['a', 'b', 'c', 'd', 'e', 'f', 'g']

5.12.     join()合并

 

5.12.1.      join() 函数与 split() 函数正好相反:它将包含若干子串的列表分解,并将这些子串合成一个完整的大的字符串

>>> n=['1', '2', '3', '4', '5', '6', '7']

>>> '*'.join(n)

'1*2*3*4*5*6*7'

5.13.     其它字符串函数

 

5.13.1.      startswith()是否以()开始
endswith()是否以()结尾

str8 = "Hello Walt Smith"

print(str8.startswith("Hello"))

5.13.2.      isalnum()判断字符串是否完全由字母或数字组成
isalpha()判断字符串是否完全由字母组成
isdigit()判断字符串是否完全由数字组成

5.13.3.      isupper()判断字符串当中的字母是否完全是大写
islower()判断字符串当中的字母是否完全是小写
isspace()判断字符串是否完全由空格组成

5.13.4.      find()查找位置
rfind()从后向前查找位置
找不到返回 -1

>>>s='abcdedjcjdlslk'

>>>s1='abc'

>>>s.find(s1)                      

0

>>>s.find('j')                   

6

>>>s.find('j',2)                 

6

>>>s.find('j',7)                  

8

>>>s.find('j',10)                   

-1

5.13.5.      count()出现次数

5.13.6.      capitalize()字符串首字母大写,其余字母全部小写
title()所有单词首字母大写,其余字母全部小写
istitle()判断字符串是否满足title格式

str0 = 'I aM waLt smith'

print(str4.capitalize()

str5 = "I am walt smith!"

print(str5.title())

5.13.7.      upper()所有大写
lower()所有小写
swapcase()所有大小写转换

str10 = "Hello Walt Smith"

print(str10.lower())

5.13.8.      strip()去除头尾某个字符

>>> s="  **abc**  "

>>> s.strip()

'**abc**'

>>> s.strip('*')

'  **abc**  '

>>> s=s.strip()

>>> s

'**abc**'

>>> s.strip('*')

'abc'

5.13.9.      replace()子串替换,可指定替换多少处

str0 = 'hello world hello world'

str1 = 'world'

str2 = 'waltsmith'

print( str0.replace(str1, str2) )

print( str0.replace(str1, str2, 1) )

5.13.10.  chr()和ord()

chr(u)   x为Unicode编码,返回其对应的字符

ord(x)  x为字符,返回其对应的Unicode编码

5.14.     练习题

 

5.14.1.      输入:1-7的整数,表示星期几
输出:输入整数对应的星期字符串
例如:输入3,输出 星期三

5.14.2.      输入一行字符,统计其中有多少个单词,每两个单词之间以空格隔开。如输入: This is a c++ program. 输出:There are 5 words in the line.

5.14.3.      输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

5.14.4.      给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如:“hello xiao mi”-> “mi xiao hello”

5.14.5.      字符串 a = "aAsmr3idd4bgs7Dlsf9eAF"。请将 a 字符串的数字取出,并输出成一个新的字符串。

 

上一篇:[LeetCode] 917. Reverse Only Letters 只翻转字母


下一篇:(Medium) Shifting Letters - LeetCode