Python 基础学习

380 阅读6分钟

print输出

# 标识符和关键字
import keyword
print("关键字:",keyword.kwlist)

'''
%c      字符(char)
%s      通过str()字符串转换来格式化
%d      整数
'''
str = "演示占位符"
print("我是 %s 哈哈哈" %str)
print("我是 %s 哈哈哈 %d" %(str, a))

# sep以点连接、默认为空格   end末尾加
print("www","baidu","com", sep=".")
print("www","baidu","com")
print("Java", end="\t")
print("Python", end="\n")
print("Go")
print("Php")

input输入

password = input("请输入密码:")
print(password)
print(type(password))

'''
if else
大于0或True 为真 
'''

if 0:
    print("true")
    print("true同级")
else:
    print("false")

score = 88

if score >= 90 and score <= 100:
    print("等级为A")
elif score >= 80 and score <= 90:
    print("等级为B")
else:
    print("等级为E")

import random #引入随机数
x = random.randint(0,2) # 随机生成0,1,2
print(x)

for where 循环

# for i in range(5)
# rang(5) 循环依次打印
# rang(0,10,3) 从0开始 小于10, 每次加3
for i in range(5):
    print(i)
print("------------------")
for x in range(0,10,2):
    print(x)

print("------------------")
for x in range(-10, -100, -30):
    print(x)

print("------------------")
name = "banxian"
for x in name:
    print(x, end=" ")

print("------------------")
a = ["aa", "bb", "cc", "dd"]
# for x in range(len(a)):
#     print(x, a[x])
for x in a:
    print(x)


print("------------------")
# while
i = 0
while i <= 10:
    print(i)
    i += 1
else:
    # 不满足while就执行
    print("i大于10")

print("------------------")
i = 0
while i < 10:
    i += 1
    print("-"*30)
    if(i == 5):
        # break 结束循环、continue 结束后面的,继续下一次
        # break
        continue
    print(i)



print("------------------")

for i in range(1, 10, 1):
    for y in range(1, 10):
        if i >= y:
            print("%d * %d = %d" % (i, y, (i * y)), end="\t")
    print()

print("------------------")
i = 0
while i < 9 :
    i += 1
    for y in range(1, 10):
        if i >= y:
            print("%d * %d = %d" % (i, y, (i * y)), end="\t")
    print()

print("------------------")
for i in range(9, 0, -1):
    for y in range(9, 0, -1):
        if(y >= i):
            print("%d * %d = %d" % (i, y, (i * y)), end="\t")
    print()

字符串 、列表、元组、字典

字符串

# 字符串
word = "字符串"
sentence = "这是一个句子"
paragraph = """
        这是一个段落
        可以由多行组成
"""

print(word)
print(sentence)
print(paragraph)

# 区别 可以用\转义
#my_str = "I'm a student"
my_str = 'I\'m a student'
print(my_str)

my_str = "看看 \"王半仙\""
print(my_str)

# 截取 类似substring()
str = "banxian"
print(str)
print(str[0])
print(str[0:2])
print(str[0:len(str):3]) # for 语法类似 [起始位置:结束位置:步进值]

print(str[:3])
print(str[3:])

# r会使转义字符失效
print(r"hello \nword")

列表

# 列表 可以存储不同的数据类型
arr = ["半仙","123",720, 50.2]
print(arr)
for a in arr:
    print(a,type(a))

len = len(arr)
i = 0
while i < len:
    print(arr[i],type(arr[i]))
    i +=1

print("---------------------------")
# 增 append extend insert
print("增加前-----------------")
for a in arr:
    print(a)

arr.append("网吧")  # 在末尾追加
a = [1,2,3]
arr.append(a) # 将列表作为一个元素追加
arr.extend(a) # 将列表a中的每个元素,逐一追加到arr列表中
arr.insert(2,456) #第一个变量表示下标,第二个表示元素

print("增加后-----------------")
for a in arr:
    print(a)

# 删 del pop remove
list = ['121','111','1212','111','222']
print("删除前-----------------")
for a in list:
    print(a)

del list[0] #指定位置删除元素
list.pop() #弹出末尾最后一个元素
list.remove("111") #删除指定内容的元素 有重复的会删除第一个

print("删除后-----------------")
for a in list:
    print(a)

# 改
print("修改前-----------------")
for a in list:
    print(a)

list[1] = 123 # 修改指定下标的元素内容

print("修改后-----------------")
for a in list:
    print(a)

# 查 in 、 not in
name =  input("请输入要查找的内容:")
print(arr, sep="\t")
if name in arr:
    print("找到的了,", name)
else:
    print("没有找到,", name)

a = [1,2,3,4,5,6,7]
print(a.index(3, 1, 4)) # 在某个范围内查找  param1: 查找的内容, param2: 起始位置, param3:结束位置
print(arr.count(2)) # 统计某个元素出现几次
print(a)
a.reverse() # 列表翻转
a.sort() # 排序升
a.sort(reverse=True) #降序
print(a)

# 二维数组
arrss = [['大仙',"上仙"],['大罗','道祖'],["大乘"]]
print(arrss[0][1])


import random
# 三个空房间
offices = [[],[],[]]
names = ["A","B","C","D","E","F","G","H","I","J","K"]

for name in names:
    index = random.randint(0,2) # 随机 0,1,2
    offices[index].append(name)

b = 1
for off in offices:
    print("-" * 20)
    print("办公室 %d 的人数为:%s" %(b, off))
    b += 1
    for name in off:
        print(name, end="\t")
    print("\n")

元组

# 元组(不能修改)、 字典

# 增
tup2 = ("a","B","c")
tup3 = (1,2,3)
temptup = tup2 + tup3 #连接
print(temptup)

# 删
tup4 = (1,2,3)
print(tup4)
del tup4 # 删除了整个元组变量

# 改 不能修改
# tup = (12,34,56)
# tup[0] = 100 # 报错,不允许修改

# 查
tup1 = ("abc","def", 122,2020)
print(tup1)
print(type(tup1))
print(tup1[0])
print(tup1[-1]) # 访问最后一个元素
print(tup1[1:5]) # 切片

字典


# 字典 key value
info = {"name":"半仙","age": 18}
print(info["name"])
print(info["age"])

#访问不存在的key
#print(info["id"]) #直接访问会报错
#使用get访问,没有找到对应的key,默认返回None,
print(info.get("id",1)) #没有找到可以设置默认值

#增
info["id"] = 12
print(info.get("id",1)) #没有找到可以设置默认值

#删 del clear
print("删除前:%s" %info["name"])
#del info["name"] #删除键
#print("删除后:%s" %info["name"]) #删除了指定的键 ,再次访问会报错

#del info #删除整个字典 name 'info' is not defined
#info.clear() #清空字典 {}
# print(info)

#改
info["age"] = 20
print(info)

#查

print(info.keys())
print(info.values())
print(info.items()) # 键值对是一个个元组 [('name', '半仙'), ('age', 20), ('id', 12)]

#遍历键值
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))

# 枚举函数 遍历列表 下标 和值
a = ["a", "b", "c", "d"]
for i, v in enumerate(a):
    print(i, v, sep="\t")

集合

# 集合 set 不重复
s = set([1,2,1,3,3])
print(s)

函数

# 函数
def printinfo():
    print("-"*20)
    print(" 人生苦短,我用python")
    print("-"*20)

# 函数调用
printinfo()

# 带参数 待返回
def add2Num(a, b):
    c = a + b
    print(c)
    return c

add2Num(12,44)

result = add2Num(1, 3)
print(result)

# 返回多个值的函数
def divid(a, b):
    x = a // b
    y = a % b
    return x, y

x, y = divid(5,2)
print("商:%d, 余数:%d" %(x,y))

def sum3Num(a,b,c):
    return a + b + c
def avg3Num(a,b,c):
    sum = sum3Num(a,b,c)
    avg = sum / 3.0 #小数
    return avg

result1 =  avg3Num(1,2,3)
print("平均值为:%d"%result1)

# 全局变量与局部变量名字相同
a = 100

def test1():
    global a # 声明使用全局变量
    a = 200 #局部变量优先使用
    print("test1--->修改前:a = ",a)
    a = 500
    print("test1--->修改后:a = ",a)
def test2():
    print("test2---> a = ",a) # 没有局部变量,默认使用全局变量a

test1()
test2()

文件

# 文件
# r 读 、w 读写, rb 读取二进制  wb 读写二进制
'''
f = open("test.txt","w")
f.write("王半仙\n")
f.write("半神半圣亦半仙")
f.close()
'''

# 读
'''
f = open("test.txt")
#context = f.read(7) # 读取字符数
#context = f.readline() #读取一行
context = f.readlines() #读取所有 返回列表

#print(context)
i = 1
for temp in context:
    print("%d %s" %(i, temp), end="")
    i += 1

f.close()

'''

# os操作
import os
#创建文件
open("tt.txt","w")
# 重命名
#os.rename("tt.txt", "tt2.txt")
#删除文件
os.remove("tt.txt")
#创建文件夹
os.mkdir("path")
#获取当前目录
print(os.getcwd())
#获取目录列表
print(os.listdir())
#删除文件夹
os.rmdir("path")

异常捕获

#  -*-coding:utf8 -*-
# 异常捕获
'''
try:
    print("start ")
    f = open("123.txt")
    try:
        f.readline()
        print("end ")
    finally:
        f.close()
        print("关闭了")
    print(num)
# except (IOError, NameError) as e: # 需要捕获对应的异常  这里是文件IO异常,也可以使用Exception 基类异常,捕获所有
except Exception as e: # 使用Exception 基类异常,捕获所有
    pass # 不处理
    print(e)
'''


# 作业
def write_gushi(file,content):
    try:
        f = open(file, "w")
        try:
            f.writelines(content)
        finally:
            f.close()
    except Exception as e:
        print("error: ", e)

def read_gushi(file):
    try:
        f = open(file, "r")
        try:
            result = f.readlines()
            return result
        finally:
            f.close()
    except Exception as e:
        print("error: ", e)

def del_gushi(filedir):
    import os
    for root, dirs, files in os.walk(filedir):
        #print(root)
        #print(files)
        for file in files:
            #print(file)
            os.remove(root+ "/" +file)
        os.rmdir(root)

import os
filedir = "gushi"
del_gushi(filedir)
os.mkdir(filedir)
file = filedir+"/gushi.txt"
content = ['王半仙\n', '半神半圣亦半仙']
write_gushi(file,content)
lines = read_gushi(file)
print(lines)
# 复制文件
file_copy = filedir+"/copy.txt"
write_gushi(file_copy,lines)
print("复制完毕")