dir?
dir(__builtin__)
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 'EOFError',
 'Ellipsis',
 'EnvironmentError',
 'Exception',
 'False',
 'FileExistsError',
 'FileNotFoundError',
 'FloatingPointError',
 'FutureWarning',
 'GeneratorExit',
 'IOError',
 'ImportError',
 'ImportWarning',
 'IndentationError',
 'IndexError',
 'InterruptedError',
 'IsADirectoryError',
 'KeyError',
 'KeyboardInterrupt',
 'LookupError',
 'MemoryError',
 'ModuleNotFoundError',
 'NameError',
 'None',
 'NotADirectoryError',
 'NotImplemented',
 'NotImplementedError',
 'OSError',
 'OverflowError',
 'PendingDeprecationWarning',
 'PermissionError',
 'ProcessLookupError',
 'RecursionError',
 'ReferenceError',
 'ResourceWarning',
 'RuntimeError',
 'RuntimeWarning',
 'StopAsyncIteration',
 'StopIteration',
 'SyntaxError',
 'SyntaxWarning',
 'SystemError',
 'SystemExit',
 'TabError',
 'TimeoutError',
 'True',
 'TypeError',
 'UnboundLocalError',
 'UnicodeDecodeError',
 'UnicodeEncodeError',
 'UnicodeError',
 'UnicodeTranslateError',
 'UnicodeWarning',
 'UserWarning',
 'ValueError',
 'Warning',
 'WindowsError',
 'ZeroDivisionError',
 '__IPYTHON__',
 '__build_class__',
 '__debug__',
 '__doc__',
 '__import__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'abs',
 'all',
 'any',
 'ascii',
 'bin',
 'bool',
 'bytearray',
 'bytes',
 'callable',
 'chr',
 'classmethod',
 'compile',
 'complex',
 'copyright',
 'credits',
 'delattr',
 'dict',
 'dir',
 'display',
 'divmod',
 'enumerate',
 'eval',
 'exec',
 'filter',
 'float',
 'format',
 'frozenset',
 'get_ipython',
 'getattr',
 'globals',
 'hasattr',
 'hash',
 'help',
 'hex',
 'id',
 'input',
 'int',
 'isinstance',
 'issubclass',
 'iter',
 'len',
 'license',
 'list',
 'locals',
 'map',
 'max',
 'memoryview',
 'min',
 'next',
 'object',
 'oct',
 'open',
 'ord',
 'pow',
 'print',
 'property',
 'range',
 'repr',
 'reversed',
 'round',
 'set',
 'setattr',
 'slice',
 'sorted',
 'staticmethod',
 'str',
 'sum',
 'super',
 'tuple',
 'type',
 'vars',
 'zip']
dir(int)
['__abs__',
 '__add__',
 '__and__',
 '__bool__',
 '__ceil__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__divmod__',
 '__doc__',
 '__eq__',
 '__float__',
 '__floor__',
 '__floordiv__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__index__',
 '__init__',
 '__init_subclass__',
 '__int__',
 '__invert__',
 '__le__',
 '__lshift__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__neg__',
 '__new__',
 '__or__',
 '__pos__',
 '__pow__',
 '__radd__',
 '__rand__',
 '__rdivmod__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rfloordiv__',
 '__rlshift__',
 '__rmod__',
 '__rmul__',
 '__ror__',
 '__round__',
 '__rpow__',
 '__rrshift__',
 '__rshift__',
 '__rsub__',
 '__rtruediv__',
 '__rxor__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__sub__',
 '__subclasshook__',
 '__truediv__',
 '__trunc__',
 '__xor__',
 'bit_length',
 'conjugate',
 'denominator',
 'from_bytes',
 'imag',
 'numerator',
 'real',
 'to_bytes']

变量

a  = 1
a
1
type(a)
int

name = value

命名规则

.不能使用中文
.大小写
.有意义的单词
.不与关键词重复
.连接符
.全大写一般作为全局变量
number = 3 
num = 4
number 
3
num
4
name = "coop"
name 
'coop'
type(name)
str
type(num)
int
result = 1 + 4
result
5

数字

.why 计算 日常数字 游戏 图像
. what 
.how :对比py2
# 数学计算
3 + 5
8
3-3.5
-0.5
3-3.345
-0.3450000000000002
3*5
15
3*t
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

 in ()
----> 1 3*t

NameError: name 't' is not defined
3*'t'
'ttt'
 #取整数
3//5
0
3 % 5
3
type(2.5)
float
type(4)
int
number = 111_222_333
# 一样是表示数字
number
111222333
type(True)
bool
type(False)
bool

内置类型,内置函数和标准库

import random
random.randint(2,9) # 返回2和9之间的随机整数
2
import random
random.choice?
round(3.4)
3
import math
math.floor(3.6)  # 取小
3
math.ceil(3.2) #取大
4
math.pi
3.141592653589793
math.pow(3,2)  # 默认是小数
9.0
math.sin(30)
-0.9880316240928618
math.hypot(3,4)  # 勾股定理
5.0
math.sin(30)
-0.9880316240928618
math.exp(3)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

 in ()
----> 1 math.exp(3)

NameError: name 'math' is not defined
import math
math.log2(8)
3.0

name = input('name:')

name = input("name:")
name:
name
''

新建

"""
asdfa
adf
adsf # 三引号可以换行
"""
'\nasdfa\nadf\nadsf # 可以换行\n'
"第一行\
第二行\
第三行"  # 右斜线也可以用来换行
'第一行第二行第三行'

基本数据结构list

kv:list -> what why how

数据类型->

.增

.删

.改

.查

type([])
list
# 创建 增加
my_list = [1,2,3,4,5,6]
my_list
[1, 2, 3, 4, 5, 6]
my_list2 = list([1,2,3,4,5]) # 与上面的等价
my_list2
[1, 2, 3, 4, 5]
my_list3 = list((1,2,3,4))
my_list3
[1, 2, 3, 4]
multi_list = ['coop',2018,'1.2',True]
multi_list  # 不建议使用,列表中一般都是同一类型的数据
['coop', 2018, '1.2', True]
more_list = [1,2,3,4,[5,6,7],9,10]
more_list
[1, 2, 3, 4, [5, 6, 7], 9, 10]
arr = [[1,2,3],[4,5,6],[7,8,9]]  # 矩阵
arr
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
str_list = []  # 列表名称,数据为字符串
str_list
[]
str_list.append('abc')  # 可以在.之后单击tab键,可以显示都有哪些方法
str_list
['abc', 'abc', 'abc', 'abc']
str_list = ['c'*3]  # 列表的增加
str_list
['ccc']
str_list = [['c']*3]  # 列表的增加
str_list
[['c', 'c', 'c']]

列表的插入:insert

my_list
[1, 123, 123, 2, 3, 4, 5, 6]
my_list.insert(-1,-1)
my_list
[1, 123, 123, 2, 3, 4, 5, -1, 6]
my_list.insert?

my_list # 切片 [开始:结束 :步长]
[1, 123, 123, 2, 3, 4, 5, -1, 6]
my_list[1]
123
my_list[-1]
6
my_list[-2]
-1
len(my_list)  # 列表长度
9
my_list.count(123)  # 计算某个元素出现的次数
2
my_list[:3]
[1, 123, 123]
my_list[3:]
[2, 3, 4, 5, -1, 6]
my_list
[1, 123, 123, 2, 3, 4, 5, -1, 6]
my_list[1::2]
[123, 2, 4, -1]
names = ['coop','xxx','world','murphy']
names
['coop', 'xxx', 'world', 'murphy']
names[3]
'murphy'
names.index('world')
2

names
['coop', 'xxx', 'world', 'murphy']
names[2] = 'china'
names
['coop', 'xxx', 'china', 'murphy']
names[-1]  = 'zhao'
names
['coop', 'xxx', 'china', 'zhao']
names.reverse() # 反转数据,会将列表修改
names
['zhao', 'china', 'xxx', 'coop']
names[::-1]
['coop', 'xxx', 'china', 'zhao']
names
['zhao', 'china', 'xxx', 'coop']

删除

names
['zhao', 'china', 'xxx', 'coop']
names.pop(1)
'xxx'
names
['zhao', 'coop']
names
['zhao', 'coop']
names = []  # 删除整个列表
names
[]

字符串的增加

'coop'*5
'coopcoopcoopcoopcoop'
"cop "*5
'cop cop cop cop cop '
# 直接加
name = 'coop'
city = 'beijing'
info = name +' '+ city
info
'coop beijing'
# % c style
'name:%s,city:%s' %(name,city)  #ctrl +左右箭头  ctrl+shift +左右箭头
#字符串里面加%s,表示占位符,后面%跟()表示变量
'name:coop,city:beijing'
# {} format
'name:{},city:{}' .format(name,city)
'name:coop,city:beijing'
'name:{},city:{}' .format(city,name)
'name:beijing,city:coop'
'name:{name123},city:{city123}'.format(name123=name,city123=city)
#第一个name表示字符串,name123表示增加的变量.format里面的name表示变量,即coop"""
'name:coop,city:beijing'
# f-string  f'{}' 拼接字符串very important
f'{name}:{city}'
'coop:beijing'
f"my name is {name} and i'm in {city}"
"my name is coop and i'm in beijing"

删除字符串

name = 'coop'
name
'coop'
name = ''
name
''

字符串各种修改

name = 'coop'
name.upper()
'COOP'
name
'coop'
name = 'ABCDEFG'
name
'ABCDEFG'
name.lower()
'abcdefg'
names = name.lower()
names
'abcdefg'
name
'ABCDEFG'
names
'abcdefg'
names.capitalize()
'Abcdefg'
name = 'python is cool'
name.title()
'Python Is Cool'
name.strip('python')  # 去除给定开头和结尾的字符串,或者去除字符串两端的空格
' is cool'
name.strip()
'python is cool'
email = '123#qq.com'  # replace 替换指定的字符串
email.replace('#','@')
'[email protected]'
len(email)
10
email.zfill(15)  # 左边补0,凑齐15个字符串,小于字符串长度的话,不添加0
'00000123#qq.com'
email.zfill(5)
'123#qq.com'
email.ljust(15)  # 用于格式化输出,括号里面指定它的宽度,不够的可以是空格不全,也可以是其他的补全
'123#qq.com     '
email.ljust(15,'$')
'123#qq.com$$$$$'
email.center(15,'*')
'***123#qq.com**'
name
'python is cool'
name.isupper()
False
py = 'python is cool'
py.index('is')
7
py.index('o')  # 指定字符的位置
4
py.find('is')
7
py.find('asldhfk')
-1
dir(py)jjjjkk
['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rmod__',
 '__rmul__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 'expandtabs',
 'find',
 'format',
 'format_map',
 'index',
 'isalnum',
 'isalpha',
 'isdecimal',
 'isdigit',
 'isidentifier',
 'islower',
 'isnumeric',
 'isprintable',
 'isspace',
 'istitle',
 'isupper',
 'join',
 'ljust',
 'lower',
 'lstrip',
 'maketrans',
 'partition',
 'replace',
 'rfind',
 'rindex',
 'rjust',
 'rpartition',
 'rsplit',
 'rstrip',
 'split',
 'splitlines',
 'startswith',
 'strip',
 'swapcase',
 'title',
 'translate',
 'upper',
 'zfill']
name = input('name:')
name:coop   
len(name)
7
type(name)
str
len(name.strip())
4
py = 'python2 python3 python4 python8'
py[3]
'h'
py[-1]
'8'
py[:6]
'python'
py.index('2')
6
py[:py.index('2')]  #切片的嵌套操作
'python'
something = 'abcdefg1234567'
something[1:6:3]
'be'
something[:4]
'abcd'
something[4:]
'efg1234567'
something[4::4]  # 步长就是第n个,隔n-1个
'e26'

something

something.index('e')
4
email
'123#qq.com'
email.split('#')  # 以#号为分隔符,生成一个列表
['123', 'qq.com']
email.index('#')  # 少用,建议用find
3
email[:email.index('#')]
'123'
email.split("#")[0]
'123'
email[:email.find('#')]
'123'
email[email.find('#'):]
'#qq.com'
email[email.find('#')+1:]
'qq.com'
email.find('@')
-1

数字和字符串的判断

type(8)
int
num = 'coop'
num.isdigit()
False
num.isalpha()
True
number = '三'
number.isdigit()
False
number.isalpha()
True
number =  '3'
number.isdecimal()
True
number.isnumeric()
True
number.isdigit()
True
type(number)
str
number
'3'
number.isdigit()
True

判断数字范围

isnumeric(能数数的)> isdigit(数字)>isdecimal(十进制)

num = 'coop007'
num.isalpha()  # 判断是否是字母
False
num.isnumeric()  # 判断是否是数字
False
type(num)
str
num = input('give me a number:')
give me a number:1213
num
'1213'
num.isdigit()
True

学习要点:

- 逗号,引号,中英文切换

- 字符串 数字转换

- 列表

- 重复的事情交给电脑

- range

- for

- print格式化输出

for i in range(9,0,-1):   # 减号表示反向排列,数字1 表示步长,因为默认是从0开始,现在是从9到0,所以应该加个减号,表示反向。
    for j in range(1,i+1):
        print(f'{j}*{i}={i*j}',end=" ")
    print()
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*4=4 2*4=8 3*4=12 4*4=16 
1*3=3 2*3=6 3*3=9 
1*2=2 2*2=4 
1*1=1 
for j in range(8,0,-1):
    for i in range(1,j):
        print(i,end='')
    print()
1234567
123456
12345
1234
123
12
1
for i in range(9,0,-1):   #控制行数
    for j in range(1,i+1):   #控制列数
        print(f'{j}*{i}={i*j:2}',end=' ')  #控制打印输出,f'{j}*{i}={i*j:2}'中的2表示控制输出的位数
    print()
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 
1*4= 4 2*4= 8 3*4=12 4*4=16 
1*3= 3 2*3= 6 3*3= 9 
1*2= 2 2*2= 4 
1*1= 1 
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{i}*{j}={i*j:2}',end=" ")
    print()
1*1= 1 
2*1= 2 2*2= 4 
3*1= 3 3*2= 6 3*3= 9 
4*1= 4 4*2= 8 4*3=12 4*4=16 
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 
for i in range(9,0,-1):
    for j in range(1,i+1):
        print(f'{j}*{i}={str(j*i).ljust(2)}',end=' ')  #ljust是列表的方法,所以先使用str将数字改为列表。
    print()
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25 
1*4=4  2*4=8  3*4=12 4*4=16 
1*3=3  2*3=6  3*3=9  
1*2=2  2*2=4  
1*1=1  
ch_numbers = ['','一','二','三','四','五','六','七','八','九','零']
numbers = ['','1','2','3','4','5','6','7','8','9','0']
for i in range(9,0,-1):
    for j in range(1,i+1):
        result = str(i*j).ljust(2)
        left = ch_numbers[numbers.index(result[0])]
        right = ch_numbers[numbers.index(result[0])]
        print(f'{ch_numbers[j]}*{ch_numbers[i]}={left}{right}',end=' ')
    print()
一*九=九九 二*九=一一 三*九=二二 四*九=三三 五*九=四四 六*九=五五 七*九=六六 八*九=七七 九*九=八八 
一*八=八八 二*八=一一 三*八=二二 四*八=三三 五*八=四四 六*八=四四 七*八=五五 八*八=六六 
一*七=七七 二*七=一一 三*七=二二 四*七=二二 五*七=三三 六*七=四四 七*七=四四 
一*六=六六 二*六=一一 三*六=一一 四*六=二二 五*六=三三 六*六=三三 
一*五=五五 二*五=一一 三*五=一一 四*五=二二 五*五=二二 
一*四=四四 二*四=八八 三*四=一一 四*四=一一 
一*三=三三 二*三=六六 三*三=九九 
一*二=二二 二*二=四四 
一*一=一一 
ch_numbers = ['','一','二','三','四','五','六','七','八','九','零']
numbers = ['','1','2','3','4','5','6','7','8','9','0']
for i in range(9,0,-1):
    for j in range(1,i+1):
        result = str(i*j).ljust(2)
        left = ch_numbers[result[0]]
        right = ch_numbers[numbers.index(result[0])]
        print(f'{ch_numbers[j]}*{ch_numbers[i]}={left}{right}',end=' ')
    print()
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

 in ()
      4     for j in range(1,i+1):
      5         result = str(i*j).ljust(2)
----> 6         left = ch_numbers[result[0]]
      7         right = ch_numbers[numbers.index(result[0])]
      8         print(f'{ch_numbers[j]}*{ch_numbers[i]}={left}{right}',end=' ')

TypeError: list indices must be integers or slices, not str

token生成器

用途

- url

- passport

- file name

学习要点:

- random

- string

-字符串与数字综合练习

- 列表

import random 
random?  # module
random.choice('asldfhaosdhoasf')
'f'

random.choice? # Choose a random element from a non-empty sequence.

str_list = ['a','b','c','d','e',1,2]
s = ''
s.join(str_list)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

 in ()
----> 1 s.join(str_list)

TypeError: sequence item 5: expected str instance, int found
str_list1 = ['a','b','c','d','e','1','2']
s = ' '
s.join(str_list1)  # join方法之针对字符串,对数字无效
'a b c d e 1 2'