一、条件判断

python中条件判断使用if else,多条件的话使用if elif ... else。例子如下:

python重复输出姓名三遍 python将变量重复三次输出_浅拷贝

 

 二、输入

python使用input函数接收输入。无论你输入的是什么,input接收的数据类型都是字符串,可以使用tpye()来查看变量的数据类型

score = input('请输入你的分数:')
print('score的类型', type(score)) #type查看一个变量的数据类型
score = int(score) # 数据类型转换

三、循环

循环就是在重复执行循环体里面的代码。

break,在循环里面遇到break,立即结束循环。

continue,结束本次循环,继续进行下一次循环。

while循环:需先定义一个计数器count=0,while循环可对应一个else,作用是:循环正常结束之后会执行else里面的代码。

for循环:不需要计数器,直接for i in range(),循环几次range里就写几。

写一个例子:猜数字大小,最多猜7次。

#while循环
# import random
# number = random.randint(1,100)
# print(number)
# count = 0
# while count<7:
#     count = count+1
#     guess = input('请输入一个数字:')
#     guess = int(guess)
#     if guess == number:
#         print('恭喜你猜对了,游戏结束')
#         break
#     elif guess<number:
#         print('小了')
#         continue
#     else:
#         print('大了')
#         continue
# else:
#     print('次数用光了')

for循环

import random
number = random.randint(1,100)
print(number)
count = 0
for i in range(7):
    guess = input('请输入一个数字:')
    guess = int(guess)
    if guess == number:
        print('恭喜你猜对了,游戏结束')
        break
    elif guess<number:
        print('小了')
        continue
    else:
        print('大了')
        continue
else:
    print('次数用光了')

四、字符串格式化

就是将输出的内容用同样的格式展示,有三种格式化的方式:

第一种使用+连接,直接把输出的字符串和变量连接起来就可以了;

name='Lucy'
print('欢迎'+name+'登陆!')

第二种是用占位符,占位符有常用的有三种,%s、%d和%f,%s是后面的值是一个字符串,%d是后面的值必须是一个整数,%f后面跟的是小数(用%.*f表示保留几位小数);

import datetime
user='tata'
today = datetime.datetime.today()
age=18
score=96.9
#快速复制一行代码 command+d
msg= '欢迎 %s 登陆,今天的日期是%s' %(user,today)
msg2= '欢迎 %s ,你的年龄是%d , 你的分数是%.1f' %(user,age,score)

第三种是使用{}和fromat方法

user='tata'
age=18
score=96.9
msg3='你的名字是{name},年龄是{nianling}'.format(name=user,nianling=age)
msg4 = '你的名字是{},年龄是{}'.format(user,age)

五、字符串常用的方法 

s='abd'
s.count('a')  # 统计a在字符串s中出现的次数
s.strip()  #默认去掉字符串两边的空格和换行符
s.lstrip() #去左边的空格
s.rstrip() #去右边的空格
s.lower() #把字符串变成小写的
s.upper() #把字符串变成大写的
random.randint(1,100) # 在1-100中随机产生一个整数
random.choice(s) #随机在s中选择一个元素
random.sample(s,2) #在s中随机取2个元素
len(s) #取变量的长度,也就是有几个元素
s.isdigit() #判断是否为数字
s.startswith('1') #判断以xx开头
s.endswith('jpg') #判断以xx结尾
s.center(50,'*')  #字符串剧中,长度是50用*填充

s='5' 
print(s.zfill(3)) #填充补零,即005
s='aaaaab'
s=s.replace('a','A')  #替换,即AAAAAb
s=s.replace('a','A',2)  #替换,最后的数字表示替换几个,即AAaaab
s='red,blue,yellow,green'
result=s.split(',')  #以xx来分割字符串(不能传空字符串),即['red', 'blue', 'yellow', 'green']
result=s.split()  #什么都不传默认是以空格分割(若传的字符串不存在,则把整个的看出一个list,即['red,blue,yellow,green'])
l=['a','b','c']
s='hahaha'
print(''.join(l)) # 连接字符串,用.前面指定的字符串给连接起来,一般用来连接list。即abc
print('-'.join(s)) #用-连接,即h-a-h-a-h-a(可循环的都可以连接)

六、列表list

列表也叫数组,使用[],列表里可以是任何类型,列表的取值是根据下标取的,下标是从0开始。

list中可以再套列表,叫做二维数组,以此类推。

例:L=[1,2,['a','b']]  #二维数组

      a的下标就是:L[2][0]

下面是列表的一些操作:

l=['周杰伦','王俊卡','黄晓明']  #一维数组
print(l[-1])# 表示最后一个元素
#查
#list取元素的时候是根据编号取值的
print(l[0])
#增
l.append('') #在末尾增加元素
l.insert(0,'')  #指定位置增加元素
l.insert(7,'')  #如果你指定的下标没有,那么就加到最后面
#修改
l[2]='赵薇'
#删除
 l.pop() #指定下标删除
 l.remove('')#指定元素删除
 del l[0] #指定下标删除(同l.pop())
print(l.count('赵薇')) #查找某个元素出现的次数
index = l.index('王源')#找某个元素的下标,如果找一个不存在的元素会报错
l.reverse() #反转list
l.sort() #排序(默认升序)
l.sort(reverse=True) #降序
l.clear() #清空list
#列表相加
l3= l+l2 #直接相加就是把两个list合并成一个新list
l.extend(l2) #把l2里面的元素加到l中
List循环

#for循环直接循环list就是取的list里面的每一个元素(取出后可以将数据存到数据库或者文件里)
students=['aa','bb','cc']
for i in students:
    print(i)
if 'aa' in students: #判断某元素在不在list里,用in
    print('存在')
elif 'aa' not in students:#判断某元素不在list里,用not in
    print('不存在')
#其它语言是通过计算下标方式实现的(以下)
for i in range(len(students)): #0,1,2 这是通过计算下标的方式取出,其余语言是通过这种计算下标方式实现的
    print(students[i])

 七、字典

字典是key-values的形式。{key:value}

字典的特性:
字典是无序的,它没有下标,用key来当索引。
字典的key是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重
字典的一些操作:

d= {
    'name':'zhaomin',
    'idcard':'123456',
    'sex':'1',
    'addr':'北京'
}
#取值
print(d['money']) # 取值不存在时会报错
print(d.get('money'))  #取值不存在时返回None(不存在时可以给传一个值,例:d.get('money',100))
#增加key
d['addr']=110 #如果key存在,会更改原有的值
d.setdefault('addr','bmw') #如果key已存在,不会更改原有的值

#修改
d['sex']='女'

#删除
d.pop('sex') #删除指定的key,会返回删除的值,(result=d.pop('sex'))
del d['sex'] #删除指定的key
d.clear()#清空字典
print(d.keys()) #字典里所有的key放到一个list中
print(d.values())  #字典里所有的values放到一个list中

#循环字典
s  = {"id": 315,"name": "矿泉水"}
for k in s:    #直接循环字典,每次取的是字典的Key,再根据key取value值
    #value=d.get(k)
    #print(k,value)
    print(k,s[k]) #以上两步等同于这一步
#if 'id' in s : #如果字典用in来判断的话,它判断的是key存在不存在

八、切片

切片就是对list一个范围的取值。取值时不包含后面的元素,即顾头不顾尾:格式:list[*:*] 。若后面再加一个参数即表示步长,即隔多少元素取一次,隔的包括自己,默认不写就是隔1隔取一次,格式:list[*:*:*]

 list=[1,2,3,4,5,6,7]


list[-1] #-1表示最后一个元素,即7
list[0:3] #取下标是0-3的元素,包括0,但不包括3,顾头不顾尾,即1、2、3
list[:3]  #同上,表示从最前面开始,0可以不写
list[2:]  #表示取从下标2到最后一个元素,即3、4、5、6、7
list[:]    #取全部元素
#以下是带步长的
list[0:7:2] #从第一个元素开始隔2个取一个,隔的包括自己,结果是:1,3,5,7
list[::-1]  #步长为负数,是从后往前取,如果不是取全部的元素,下标也要用负数,

九、元祖

 小括号定义的都是元祖,元祖里面的数据不可以修改

l2=(1,2,3,4) #元祖,元祖里的数据不可以修改
s3=('abc',)  #只有一个元素的时候不是元祖,需加一个,才表示元祖
print(type(s3)) #使用type可查看元素的类型

可变数据类型
    list 、dict
不可修改数据类型
    tuple、str、float、int

十、深拷贝、浅拷贝

区别:深拷贝和浅拷贝不能单单只看内存地址变没变,内存地址不变的一定是浅拷贝,内存地址变了的,不一定就是深拷贝,也有可能是浅拷贝

import copy
l=[1,2,3]
l2=copy.deepcopy(l)  #只有这一种才是深拷贝,深拷贝内存地址变,修改元素彼此不会受影响
# l2 = l  #浅拷贝,内存地址不变
# l2=l.copy() #浅拷贝,内存地址变。当是二维数组时改二维数组里的元素会受影响,改一维数组里的元素不会受影响
# l2=l[:] #浅拷贝,同上
# copy.copy(l) #浅拷贝,同上
print('l的内存地址',id(l))  #查看内存地址用id
print('l2的内存地址', id(l2))

十一、 文件读写

基本操作:

f= open('a.txt',encoding='utf-8')  #打开文件,有汉字要加utf-8(写文件路径时加个r防止被转译,例如r'c:\user)
result = f.read() #读文件
print(result)
f.close() #关闭文件
f=open('a.txt','w',encoding='utf-8')  #写文件,写会覆盖原有文件
f.write('你好'+'\n'+'哈哈')
f.close()

十二、集合

集合的作用:

1. 集合天生去重,自动去掉重复的元素

2.可以用来做关系测试

集合是无序的,不能用下标取值

要想定义一个空集合则用set()

#关系测试例子
  a={1,2,3}
  b={3,4,5}
#取交集
  print(a&b)
  print(a.intersection(b))
#取并集
  print(a.union(b))
  print(a|b)

基本操作

a.add('56') #增加元素,集合中不能增加重复的元素
a.remove('1') #删除元素