Python基础(不断更新)

1.基本语法

  (1)加法的两端只能是数字或者字符串

     如 print( 'kkk' + 12 + 'kkk' ) 是错误的,可修改为 print( 'kkk' + str(12) + 'kkk' ) 。类似 str() 的函数还有 int(),float()。

print(str(0))    #输出字符串的0

print(int('33'))

print(int(3.26))  #输出3

print(float(3.402))

print(float(23))   #输出23.0

print(int(input()))

   (2)在用于条件时,0、0.0、和 ' ' (空字符串) 被当作False,其他值被当作 True,如

name = ''
while not name:    #只有输入有效的名字才跳出循环
    name = input()
print('your name:' + name)
name = 0
while not name:
    name = int(input())
print('最终结果:' + str(name))   #输入非0整数结束

2.数学操作符

  • 指数:**。如 2 ** 3 = 8。
  • 整除://。如 6 // 4 = 1。
  • 除法:/。如 6 / 4 = 1.5。
  • * 操作符表示乘法,但是当 * 和字符串连用时,表示将字符串复制的操作。如
 print('Jack' * 2) #输出JackJack。同时注意 只能同整数配套使用
  • 其他操作同 C 语言一致。

3.布尔操作符

  and,not,or  代替了 C 语言的 && 和 ||

 4.控制流

  (1)if-else  关键是通过控制代码块的缩进距离,Python没有花括号,如

name = 'Jack'
age = 2
if(name == 'Jack'):
    print('Hello,Jack')
    if(age > 10):
        print('>10')
    else:
        print('<10')
else:
    print('Who are you?')

   (2)while 循环

age = 5
while age < 9:
    age += 1  #不支持 age++
    print('age: ' + str(age))
    if(age == 7):
        break
print('end')
sum = 0
while True:
    if sum == 3:
        print('错误次数超过三次!')
        break
    else:
        name = input()
        if name != '11':
            sum += 1
            print('用户名错误,重新输入用户名:')
            continue
        else:
            print('用户名正确,输入密码:')
            pwd = input()
            if pwd != '11':
                print('密码错误,重新输入用户名:')
                sum += 1
                continue

   

  (3)for 循环。range(开始,停止【不包括它】,步长)

i = 0
for i in range(0,10,2):    
    print(i)    #0,2,4,6,8

  

5.字符串

   (1)字符串相等否,可直接用 == 或者 != 判断

a = 'q'
s = 'qq'
if a != s:
    print("yes")
else:
    print("no")

  

  (2)字符串的截取。同 C 语言的差别就是标号的不一致,如下图(https://www.runoob.com/python3/python3-data-type.html

  

  如上图所示,即 ‘abcdef’ 的下表是 0~5 或者 -6~-1。同时规则也常用:前闭后开。

str = 'abcdef'
print(str[0] + str[2])  #ac
print(str[-6] + str[-1]) #af
print(str[0:]) #abcdef
print(str[-3:]) #def
print(str[0:3]) #abc
print(str[3:2])  #无结果  不能逆序
print(str[1:-1])  #bcde
print(str[-6:2])  #ab
print(str[:2]) #ab
print(str[:]) #abcdef

   (3)同样可使用  in  和 not in 操作符

str = '12345ddd6789'

print('ddd' in str) #True
print('012' not in str)  #True

  

  (4)数组是可变的,如append、insert、del等,但是字符串是 “不可变” ,如 str[0] = 'd' ,改变的方式是通过切边方式,如

str = '123456789'

str2 = str[0:2] + 'add' + str[6:8]
print(str2)  #12add78

 

6.函数

  (1)函数定义 def + 函数名(传参),如

def hello(name):    #传递的参数
    print('你输入了:' + name)

i = 0
for i in range(0,3,1):
    hello(input())
import random   #导入函数

def getNumber(j):
if j == 1:
print('随机数:' + str(j))
return 'A'
elif j == 2:
print('随机数:' + str(j))
return 'B'
else:
print('随机数:' + str(j))
return 'C'

i = 0
for i in range(0,3,1):
r = random.randint(1,3) #random.randint函数是产生 1<=*<=3 的整数
print(getNumber(r))

   

  (2)print() 函数。print() 函数返回值为None。

temp = print('测试返回值')
if temp == None:
    print('yes',str(temp))

  print() 函数输出形式:

print('1','2','3') #空格自动分割

print('1', end='')
print('2')   # print 函数自动会加入换行符,end = '' 就制止

print('1','2','3',sep='..')  #输出通过 ‘..’ 分割

  (3)global 语句。同 C 语言中一致,Python 中也分局部和全局变量,如果想通过局部函数修改全局变量,可以通过 global 函数。

def k1():
    global  t   
    t = '已经修改1'

def k2():
    t = '已经修改2'

t = '原始'
print(t)  #原始
k2()
print(t)  #原始
k1()
rint(t)p  #已经修改1

   Python 中一个变量只能是局部或者全局变量,如

def k():
    print(egg)  #调用 K() 函数时,egg此句是全局变量,但在下一句中 egg 被重新声明被认为是局部变量。报错
    egg = '123'  

egg = '444'
k()

  (4)try...except..  函数。

def k(divide):
    try:
        return 32 / divide
    except:
        return '报错'

print(k(3))
print(k(2))
print(k(0))

 7.数组 

  (1)用 len() 取得列表长度。直接通过下表修改值

a = [12, 'dd', 2]
print(len(a))
a[0] = 'ppp'
print(a)

   

  (2)数组的连接、复制、删除

a = [12, 'dd', 2]
b = ['14']
d = b
c = b + a
e = b * 3
print(d,c,e,sep='.....') #['14'].....['14', 12, 'dd', 2].....['14', '14', '14']
del a[0] #删除操作
print(a) #['dd', 2]

  (3)数组循环

catName = []
while True:
    print('请输入第' + str(len(catName) + 1) + '只猫名字')
    name = input()
    if name == '':  #直接敲回车
        break
    catName += [name]

print(''+ str(len(catName)) + '只猫')
for name in catName:   #没有使用range
    print(' ' + name)
catName = ['fdas','fd','ioo','wew','dfs']

for i in range(0,len(catName),2):  #常用 range(len(catName)) 遍历整个数组
    print(' ' + catName[i]) #fdas  ioo   dfs

  (4)某个值是否在数组中用,in 和 not in 判断

import random

catName = ['1','2','3','4','5']
i = 0
for i in range(0,4,1):
    t = random.randint(1,10)
    if(str(t) in catName):
        print(str(t),'')
    if(str(t) not in catName):
        print(str(t),'不在')

  

  (5)多重赋值

name = ['1','2']
t,a = name
print(t,a) #输出 1 2

  

  (6)index() 方法,append(),insert(),remove(),sort()。

name = ['1','2','1','999']

print(name.index('1'))  #返回在数组中第一个出现的下标  0
name.append('4')   #在列表中添加新值
print(name)         #['1', '2', '1', '999', '4']
name.insert(1,'999')  #在下标 1 处添加新值
print(name)         #['1', '999', '2', '1', '999', '4']
name.remove('999')   #删除在数组中第一次出现的999,若不存在999则报错
print(name)         #['1', '2', '1', '999', '4']
del name[0]
print(name)         #['2', '1', '999', '4']
name.sort(reverse=True)  #排序操作ASCII码进行排序,可直接name.sort()
print(name)      #['999', '4', '2', '1']

8.元组

  (1)元组和数组十分类似,主要区别有两点如下:

  • 元组输入时使用 () 而非 [ ] 
a = (1,2,3)
print(a) #输出 (1,2,3)
print(a[2]) #3
  •  元组中的值不能修改,和字符串类似。所以 Python 可以以更优化的方式对待元组。同时,元组中如果之后一个值,通过加逗号来标识其是元组。(否则Python认为你只是普通括号)
a = (1,)  #不加逗号,下句出错.当元组长度只为1时使用
print(a[0])

  (2)用 list 和 tuple 函数来转换类型。常用于返回元组或者列表形式。

str = '1234'
print(list(str)) #['1', '2', '3', '4']
print(tuple(str)) #('1', '2', '3', '4')

str2 = ('12','dd')
print(list(str2)) #['12', 'dd']

9. 引用

  (1)Python 中关于引用的知识点同 C 语言中十分类似,C 语言中如:int a = 3,实际上 a 形参是通过地址找到存储 3 整个数字的 “格子

  而数组 a[1,2,3] 则直接这和 Python 几乎一致。所以在 Python 中,普通类型的复制如 b = a 复制值,而数组之间复制,复制的是引用(即地址)。同样,如果在传递给函数时,传递的参数是数组,则会改变原数组,传递的是一般数据类型,则不会修改原值,如:

def test(str):
    str += 'g'

def test2(name):
    del name[0]

str = 'ddd'
test(str)
print(str)  #ddd 未修改

name = [1,2,3]
test2(name)
print(name) #[2, 3]  #[2, 3] 修改

   (2)在处理列表时,传入的是引用,如果只想传入值,即修改了数组而不影响原有函数,通过 copy() 实现。如果要复制的列表中还包含列表,使用 deepcopy() 。

import copy

name = [1,2,3,[1,2,3]]

a = name
b = copy.copy(name)
c = copy.deepcopy(name)

a.append('aaa')wu'xiao'
print(name)  #[1, 2, 3, [1, 2, 3], 'aaa']

b.append('bbb')
print(name)  #[1, 2, 3, [1, 2, 3], 'aaa']    说明对列表有效

b[3].append('444')
print(name)  #[1, 2, 3, [1, 2, 3, '444'], 'aaa']  说明对列表中的列表有效

c.append('555')
print(name)   #[1, 2, 3, [1, 2, 3, '444'], 'aaa']  说明无效

10. 字典

  (1)字典即 Map ,由键值对组成。字典不同于列表,字典中表项是不排序的,如(字典不能排序

t = [1,2,3]
e = [2,1,3]
print(t == e)  #False

g = {'k':'j', 'kk':'jj'}
h = {'kk':'jj', 'k':'j'}
print(g == h)  #True

print('k' in g) #True  判断 key 是否存在

  (2)keys() 方法,values() 方法,items() 方法。

g = {'k':'j', 'kk':'jj'}

for v in g.keys():  #key
    print(v)

for t in g.values():  #value
    print(t)

for b in g.items():  #key-value
    print(b)        #输出元组
  print(list(b)) #输出列表

for v,t in g.items():     #多重赋值
print('Key:',v,"Value",t)

   

  (3)get() 方法。如果通过 key 值取值,存在 key 不存在的风险,get() 函数可以设置一个默认返回值,避免错误。

g = {'name':'Tom', 'age':'12'}
print('Welcom', g.get('name', 'Jack'), 'he lives in', g.get('home','shanghai'))

  

  (4)setdefault() 方法。该方法可以设置默认 key 对应的 value。如果该 key 已经存在,则无效,如:

g = {'r':'rr','b':'bb'}

g.setdefault('k', 'kk')
print(g)  #{'r': 'rr', 'b': 'bb', 'k': 'kk'}  修改有效

g.setdefault('k','mm')
print(g)  #{'r': 'rr', 'b': 'bb', 'k': 'kk'}   修改无效

  有一个较实用的场景,统计字符:

msg = 'fadfasfasdfadsfs'
count = {}
for v in msg:
    count.setdefault(v, 0)   #很关键 设置为0,而不是1
    count[v] += 1
print(count)

  

猜你喜欢

转载自www.cnblogs.com/KongHuZi/p/10852266.html