目录
# -*- codeing = utf-8 -*-
# @Time : 2022/10/13 20:24
# @Author : Fish_Gd
# @File : demo_1.py
# @Software: PyCharm
#print("我是铸币")
入门基础
1.输入
'''
password = input("请输入:")
print("你输入的是:",password)
'''
2.判断类型
'''
a='asd'
print(type(a))
'''
3.if语句
'''
a=1
if a>0:
print("true")
else:
print("false")
'''
4.随机选取(石头剪刀布)
'''
import random
x=random.randint(1,3)
a=input("请输入(剪刀1,石头2,布3):")
if a==x:
print("平手")
elif a==1 and x==2:
print("你输了!")
elif a==2 and x==3:
print("你输了!")
elif a==3 and x==1:
print("你输了!")
else:
print("你赢了!")
'''
'''
a=["aa","bb","cc"]
for i in range(len(a)):
print(i,a[i])
'''
random
使用之前首先要导入 random 模块:import random
5.输出
'''
a=2
print("数字是:%d岁"%a)
'''
'''
age=19
print("我的年龄是%d"%age)
print("我的国籍是%s,我的名字是%s"%("中国","铸币"))
'''
循环
while语句
'''
i=1
sum=0
while i<=100:
sum+=i
i+=1
print(sum)
'''
for循环
'''
a=1
b=1
for i in range(1,10):
for j in range(1,i+1):
print("%dx%d=%d"%(i,j,i*j),end=' ')
print("\n")
'''
for循环同样还可以
for i in range(5)#从0到5
fruits = ["apple", "banana", "cherry"]
for x in fruits:
for i in range(3, 50, 6): #最后的6代表从三开始,隔六个数选下一个数
三种语句
break:直接退出循环
continue:结束本次循环,进行下一次循环
pass:不做任何事情,一般用做占位语句
for letter in 'Python':
if letter == 'h':
pass
print('这是 pass 块')
print('当前字母 :', letter)
列表、元组、字典
列表的:插入,删除,替换
插入
内部添加
'''
a=[0,1,2,3]
a.insert(2,'铸币')
print(a)
'''
在第二个断点插入“铸币”
末尾添加
'''
namelist=["铸币","otto","龙哥","山泥若"]
for name in namelist:
print(name)
nametemp=input("请输入铸币的名字:")
namelist.append(nametemp)
for name in namelist:
print(name)
'''
删除
namelist=["铸币","otto","龙哥","山泥若"]
for name in namelist:
print(name)
print("\n")
#del namelist[0] #删除
#namelist.pop() #弹出
namelist.remove("otto") #只删除查询到的第一个数据,如果列表里有两个otto,只删除第一个
for name in namelist:
print(name)
'''
修改
namelist=["铸币","otto","龙哥","山泥若"]
for name in namelist:
print(name)
print("\n")
namelist[1]="沈桉宇"
for name in namelist:
print(name)
'''
查找
查找是否存在,
namelist=["铸币","otto","龙哥","山泥若"]
findName = input("请输入你要查找的铸币:")
if findName in namelist:
print("找到了!!!!!!!")
else:
print("没有找到捏")
查找未知 (1,3)从第二位到第四位之间查找
a=["a","b","c","d"]
print(a.index("b",1,3)) #1,3是查找到的范围,左闭右开
记数:查找"a"在列表中出现的次数
print(a.count("a"))
排序
反转(已经将a进行修改)
a=[1,2,3,4]
a.reverse()
print(a)
排序
a.sort()
print(a)
a.sort(reverse=True)
print(a)
a.sort()升序
a.sort(reverse=True)降序
二维列表(可修改)
zhubiName=[["otto","炫狗"],["山泥若","沈桉宇"]]
print(zhubiName[0][1])
输出结果:炫狗
示例:八个老师随机分配到三个教室
import random
offices=[[],[],[]]
names=["A","B","C","D","E","F","G","H"]
for name in names:
index=random.randint(0,2) #左闭右闭
offices[index].append(name)
i=1
for office in offices:
print("办公室%d的人数为%d"%(i,len(office)))
i += 1
for name in office:
print("%s"%name,end="\t")
print("\n")
列出商品,输入需要购买的商品,最后将其打印出来
products=[["iphone","6888"],["MacBook","14888"],["coffee","18"],["G903","399"]]
i=0
print("-"*6+"商品列表"+"-"*6)
for show in products:
if i>0:
print("\r")
print(i,end="\t")
for message in show:
print(message,end="\t")
i+=1
shopping_list=[]
print("\n")
while 1:
buy = input("请输入你要购买的物品的编号(输入q为结束购买,并打印清单):")
if buy != "q":
name = products[int(buy)][0]
shopping_list.append(name)
else:
print("购物车清单为:")
for a in shopping_list:
print("%s"%a,end=",")
print("\b")
break
元组(不可修改)
tup_1 = ()
tup_2 = (1)
tup_3 = (1,)
tup_4 = (1,2)
print(type(tup_1))
print(type(tup_2))
print(type(tup_3))
print(type(tup_4))
<class 'tuple'> <class 'int'> <class 'tuple'>
<class 'tuple'>
运行结果,加逗号才是元组类型
输出
tup_4 = (1,2,3,4)
print(tup_4[1])
print(tup_4[1:3]) #左闭右开
print(tup_4[-1]) #访问最后一个元素
增
tup_1 = (1,2,3)
tup_2 = ("abc","qwe")
tup = tup_1 + tup_2
print(tup)
输出结果:(1, 2, 3, 'abc', 'qwe')
删
不能删除里面的某一个值,但是可以直接删除元组
tup_1 = (1,2,3)
print(tup_1)
del tup_1
print(tup_1)
第二个print的运行结果直接报错,以为这个元组已经被删除了
查
跟前面的列表一样,就不做演示了
字典
键-值 的形式来表示,键是唯一的,值不是唯一的
info = {"name":"吴彦祖","age":"19"}
print(info["name"]) #访问已经存在的值
print(info["age"])
#print(info["gender"]) #访问不存在的值
#这样是报错的
print(info.get("gender"))
吴彦祖 19 None
第一种访问不存在的值的方式报错,而第二种会输出None
另外,第二种方式还可以设定若没找的值所返回的值,例如:
#接上程序
print(info.get("gender","m"))
print(info.get("age","50"))
m 19
这是输出结果,第二行没有输出50的原因是找到了age在字典中应有的值,所以返回了19
增
info = {"name":"吴彦祖","age":"19"}
newId = input("请输入你的id:")
info["id"] = newId
print(info["id"])
删
删除指定键值,再次访问会报错
info = {"name":"吴彦祖","age":"19"}
print("删除前:%s"%info["name"])
del info["name"]
print("删除后:%s"%info["name"])
清除指定键值,再次访问是空的,不会报错
info = {"name":"吴彦祖","age":"19"}
print("清除前:%s"%info)
info.clear()
print("清除后:%s"%info)
清除前:{'name': '吴彦祖', 'age': '19'} 清除后:{}
查
info = {"name":"吴彦祖","age":"19"}
print(info.keys()) #得到所有的键(列表)
print(info.values()) #得到所有的值(列表)
print(info.items()) #得到所有的项(列表),每个键值对应一个元组
#便遍历所有值
info = {"name":"吴彦祖","age":"19"}
for key in info.keys():
print(key)
for value in info.values():
print(value)
for key,value in info.items():
print("key=%s,value=%s"%(key,value))**
枚举
name = ["a","b","c"]
for i,x in enumerate(name):
print(i+1,x)
同时获取下标和元素
集合
也是一组key的集合,但是不存储value,且key不能重复
一般用于去重
s = set([1,2,1,3,4,5])
print(s)
输出结果{1, 2, 3, 4, 5}
函数
函数的定义首先要输入def(define)的简写,别忘了分号
1.不带参数
def pri():
print("我是铸币我是铸币我是铸币")
pri()
调用时直接输入函数名称()
2.带参数
def sum(a,b):
c=a+b
print(c)
sum(99,1)
3.带返回值
def add(a,b):
return a+b
print(add(11,5))
def divid(a,b):
shang = a/b
yu = a%b
return shang,yu #需要返回多个返回值,用逗号隔开
sh,y = divid(5,2) #需要使用多个值来保存返回内容
print("商:%d 余数:%d"%(sh,y))
局部变量与全局变量
a = 100
def test1():
global a #强制调用全局变量
print("a=%d"%a)
a = 200
print("a=%d"%a)
def test2():
print("a=%d"%a)
test1()
test2()
global a强制调用全局变量
其他情况下与c的规定一致
文件
写入:
f = open("test.txt","w") #w表示写入状态
f.write("woshi zhubi")
f.close()
写入后再本文件里会出现一个txt文件,里面就是所写入的字符
读
f = open("test.txt","r")
ass = f.read(5) #读前五个
print(ass)
ass = f.read(5) #读第六个开始数五个
f.close()
ass = f.readlines() #读整个文档,全部放在内存里,形成一个列表
ass = f.readline() #一次读一行吗,依次读
f = open("test.txt","r")
ass = f.readlines()
# print(ass)
i=1
for temp in ass:
print("%d %s"%(i,temp))
i+=1
f.close()
并且还有许多指令,在os里
错误与异常
捕获异常
print("wo shi zhu bi")
f = open("123.txt","r")
print("ni shi zhu bi")
这样的情况下,第一个语句是可以执行的,但是第二句用只读模式打开了一个不存在的文件,所以报错,以至于在他之后的都无法执行。
这就属于捕获错误,可以用一下方法寻找错误点:
try:
print("wo shi zhu bi")
f = open("123.txt","r")
print("ni shi zhu bi")
except IOError: #文件没找到属于IO错误(输入输出异常)
pass
在第一句停止,所以错误在第二句
异常类型不同
try:
print(num)
except NameError:
print("错了铸币!")
这四行程序错误点就在于没有给num赋值,但如果第三行写成IOError也还会报错,因为他不是IO异常,而是名称异常,是NameError。
多个错误类型并判断
同样的,第三行也可以写多个错误类型,except (NameError,IOError):但是他不会告诉你是用个是哪个,所以就用到了下面的方法来获取错误类型:
try:
print(num)
except (NameError,IOError) as result:
print("错了铸币!")
print(result)
这样我们就知道错误类型是哪个了。
但是错误类型有很多,当然也有一个能充当所有错误类型的词Exception
try:
print(num)
except Exception as result:
print("错了铸币!")
print(result)
结束
import time
try:
f = open("123.txt","r")
try:
while True:
ass = f.readline()
if len(ass) == 0:
break
time.sleep(2)
print(ass)
finally:
f.close()
print(ass)
except Exception as result:
print("发生异常---")
为什么不把finally:放在最后呢?这是因为try里的f是局部变量,在finally里没有定义,会报错,所以把finally放在try里嵌套使用。(14集)
作业:新建文档写古诗+复制
f = open("gushi.txt","w", encoding="utf-8")
f.write("九月九日忆山东兄弟")
f.close()
f = open("gushi.txt","r", encoding="utf-8")
m = open("copy.txt","w", encoding="utf-8")
ass = f.readlines()
for i in ass:
m.write(i)
f.close()
m.close()
数据类型
encoding="utf-8"编码格式为UTF-8格式,加上这个之后txt里才能输出中文,不然是乱码