【Python笔记】 输入输出、循环、列表、元组、字典、函数、集合、文件、数据类型,以及相关作业

目录

入门基础

1.输入

2.判断类型

3.if语句

4.随机选取(石头剪刀布)

random

5.输出

循环

while语句

for循环

三种语句

列表、元组、字典

列表的:插入,删除,替换

插入

删除

修改

查找

排序

二维列表(可修改)

元组(不可修改)

字典

集合

函数

局部变量与全局变量

文件

错误与异常

捕获异常

异常类型不同

多个错误类型并判断

结束

作业:新建文档写古诗+复制

数据类型


# -*- 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里才能输出中文,不然是乱码

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值