Python基础
#-*- coding = utf-8 -*-
#@Time : 2021/08/16
#@Author : codewing23
#@File : python基础.py
#@Software : VScode
'''
1、注释
'''
print('hello,world!')   #这里是单行注释
print('标准化输出字符串')   #单引号与双引号并无区别
a = 10  #变量不需要指定变量类型,拿来即用,变量名由字母、数字、下划线组成且数字不能开头与C命名方式相同,但比C多一个是可以用汉字定义变量名
print('这是变量:',a)
print(type(a))    #查看a的数据类型

'''
2、在python终端运行,可知有多少个关键字
'''
import keyword
keyword.kwlist

'''
3、格式化输入
'''
password = input('请输入密码:')    #input输入的不管是什么都当成字符串
print(type(password))
print('您输入的密码是:%s'%password)
#password2 = int(input('请输入密码')  #将其强制转换成整型变量
#print(type(password2))

'''
4、格式化输出的几种表示方法
'''
age = 20
name = '张颖'
china = '中国'
print('我的国籍是',china)    #语句中间没有转义字符用逗号也可以但是中间会有一个空格
print('我的名字是%s,我的国籍是%s'%(name,china))    #其中%就相当于C语言中的逗号,如果输入多个占位符则需要用括号括起来
print('我的名字是%s,我的国籍是%s'%('张颖','中国')) 
print('我的年纪是:%d 岁'%age)  #格式化输出函数,与C类似,但占位符前要加%也不用加逗号
print(f'我的年纪是:{age} 岁')  
print('我的国籍是%s,我的名字是%s,我的年纪是 %d 岁'%(china, name, age))
print(f'我的国籍是{china},我的国籍是{name},我的年纪是 {age} 岁')
print('www','baidu','com',sep='.') #sep将三个字符串用等号后面的符号分割开
print('hello',end='')   #不换行
print('world',end='\t') #水平制表符tab,4个空格
print('python',end='\n') #换行
print('python\n基础')   #直接在单引号内加转义字符\n换行(本身就一个print一个换行,如果\n加在最后会有两个回车,加在中间则是把一句话折断显示)
print('end')

'''
5、引入随机库
'''
import random   #引入随机库
x = random.randint(0,2) #随机生成[0,2]的随机整数包括0、1、2
print('这个随机数为:',x)

'''
6、条件判断语句if
'''
if True:    #不要忘了冒号、冒号、冒号!!!
    print('True')   #缩进需要一样否则不是一个代码段不匹配对应的if
    print('true')
else :
    print('False')

#   判断成绩所属等级的小例子
grade = int(input('请输入您的成绩:'))
if grade >= 0 and grade <= 60 :
    print('E')
elif grade <= 70 :
    print('D')
elif grade <= 80 :
    print('C')
elif grade <= 90 :
    print('B')
elif grade <= 100 :
    print('A')

#   判断男女恋爱情况的小例子,并说明要注意嵌套if的缩进
gender = int(input('请输入您的性别(1代表男性、0代表女性):'))
single = int(input('请输入您的恋爱情况(1代表单身、0代表有男朋友/女朋友):'))
Gender = gender    #1代表男生,0代表女生
Single = single    #1代表单手,0代表有男朋友/女朋友
if Gender == 1 :
    if Single == 1 :
        print('单身的男生')
    else :
        print('有女朋友的男生')
else :
    if Single == 1 :
        print('单身的女生')
    else :
        print('有男朋友的女生')

# 作业实现石头剪刀布游戏效果(加入了循环使得程序更完整)
import random
x = random.randint(0,2)

cai = input('请输入:剪刀(0)、石头(1)、步(2)')
while True :
    buf = 1
    if cai.isdigit() :
        if cai >= '0' and cai <= '2' :
            break;
        else :
            buf = 0
    else :
        buf = 0
    if buf == 0 :
        print('请输入整数!!!')
        cai = input('请输入:剪刀(0)、石头(1)、步(2)')

if cai == '0' :
    print('您输入的为:剪刀(0)')
elif cai == '1' :
    print('您输入的为:石头(1)')
elif cai == '2' :
    print('您输入的为:步(2)')

print('随机数生成的数字为:',x)

if cai == x :
    print('恭喜你,你赢了!!!')
else :
    print('哈哈,你输了')

'''
7、循环控制语句————for
'''
#   第一个小例子输出0、1、2、3、4
sum = 0
for i in range(5) : #相当于C语言中的for(int i = 0; i < 5; i++),range(0,3)默认步长为1,输出0,1,2
    print(i)

#   第二个小例子输出0、3、6、9
for i in range(0,10,3) :    #相当于C语言中的for(int i = 0; i < 10; i += 3)
    print(i)

#   第三个小例子输出-10、-40、-70
for i in range(-10,-100,-30) :  #相当于C语言中的for(int i = -10; i > -100; i -= 30)
    print(i)

#   第四个小例子输出h e b e i
name = 'hebei'
for x in name :
    print(x,end = ' ')

#   第五个小例子列表列出
a = ['aa','bb','cc','dd']
for i in range(len(a)) :
    print(i,a[i])

'''
8、循环控制语句————while
'''
#   第一个小例子
i = 0
while i < 5 :
    print('当前是第%d次执行循环'%(i+1))
    print('i = %d'%i)
    i += 1

# 课堂小练1-100求和用while
sum = 0
i = 0
while i < 100 :
    sum += (i + 1)
    i += 1
print('1-100累加和为:%d'%sum)

# 课堂小练1-100求和用for
sum = 0
for i in range(1,101) :
    sum += i
print('1-100累加和为:%d'%sum)

# !!!!特殊  python中while可以与else搭配,count不满足5时,else输出
count = 0
while count < 5 :
    print(count,'小于5')
    count += 1
else :
    print(count,'大于或等于5')

'''
9、break和continue和pass语句
'''
#   break语句可以跳出for,while语句,从内层开始跳,此例打印1~10
n = 1
while n <= 100 :
    if n > 10 :
        break
    print(n)
    n += 1

#   continue语句跳过当前循环,直接进入下一轮循环,此例打印1,3,5,7,9
n = 1
while n < 10 :
    n += 1
    if n % 2 == 0 :
        continue
    print(n)

#   pass语句是空语句,一般用作站位语句,不做任何事情,此例打印R,pass,o,pass,o,m
a = 'Room'
for letter in a :
    if letter == 'o' :
        pass
        print('pass')
    print(letter)

#   小例子分割线使用
i = 0
while i < 10 :
    i += 1
    print('-'*30)
    if i == 5 :
        break
    print(i)

#   课后小作业打印99乘法表————for使用例子
for i in range(1,10) :
    for j in range(1,i+1) :
        print('%d*%d=%d'%(i,j,i*j),end=' ')
    print()

#   课后小作业打印99乘法表————while使用例子
i = 1
while i < 10 :
    j = 1
    while j < i + 1 :
        print('%d*%d=%d'%(i,j,i*j),end=' ')
        j += 1
    i += 1
    print()

'''
10、字符串
'''
# python中字符串可以使用单引号、双引号、三引号,PS:最好使用双引号,个人觉得单引号舒服
word = '字符串'
sentence = "这是一个句子"
paragraph = """
    这是一个段落
    可以有多行组成
"""
print(word)
print(sentence)
print(paragraph)

#双引号与单引号的细微差别
# my_str = "I'm a student"
# my_str = 'I'm a student'    #此时会报错,因为最后一个单引号没有与其匹配的引号
my_str = 'I\'m a studnet'   #采用和C语言一样的转移符号\'来表达'
print(my_str)

#   字符串列表的索引与matlab中的类似
str = 'hebei'
print(str)
print(str[0:2])     #python中[起始位置:结束位置:步长值]步长值默认为1,matlab中[起始位置:步长值:结束位置]步长值也默认为1
print(str[2:])      #从第str[2]开始到最后
print(str[:2])      #从str[0]开始到str[1]

#   字符串小技巧
print(str + '您好') #连接字符串可以直接用加号
print(str * 3)      #连续打印3次
print((str+'\t') * 3)   #连续打印3次且中间有空格
print(r'hello\nworld')  #\n换行,但是前面的r使得转义字符失效

'''
11、列表
'''
namelist = ['小张','小王','小李']
print(namelist[0])
print(namelist[1])
print(namelist[2])

testlist = [1,'测试']   #与matlab中的结构体类似能够表示任何数据类型
print(testlist[0])
print(testlist[1])
print(type(testlist[0]))    #类型为int
print(type(testlist[1]))    #类型类str

#用for循环遍历
testlist = [1,'测试']
for i in testlist :     #直接遍历列表名!!!!!!!常用这个是将列表中的第一个数赋给i然后遍历
    print(i)

for i in range(0,len(testlist)) :
    print(testlist[i])

#遍历列表并且打印出相应的下标
#方法1  枚举函数
mylist = ['a','b','c','d','e']
for i,x in enumerate(mylist) :
    print(i,x)
#方法2 还是喜欢这种方法不用记住函数
mylist = ['a','b','c','d','e']
k = 0
for i in mylist :
    print('%d %s'%(k,i))
#方法3
mylist = ['a','b','c','d','e']
for i in range(0,len(mylist)) :
    print('%d %s'%(i,mylist[i]))

#列表的增加————[append]
namelist = ['小张','小王','小李']
print('-----增加前·名单列表的数据-----')
for name in namelist :
    print(name)

nametemp = input('请输入添加学生的姓名:')    
namelist.append(nametemp)       #在末尾增加一个元素

print('-----增加后·名单列表的数据-----')
for name in namelist :
    print(name)

a = [1,2]
b = [3,4]

a.append(b) #将b列表当做一个元素加入列表中
print(a)

#列表的增加————[extend]
a.extend(b) #方法一将b列表中的每一个元素依次加入
print(a)

#列表的增加————[+]
print(a+b)  #方法二实际上是新开辟了一个列表

#列表的增加————[insert]
a = [0,1,2]
a.insert(1,3)   #指定下标插入元素其他后移
print(a)

namelist = ['小张','小王','小李']
namelist.insert(1,'小明')
for name in namelist :
    print(name,end=" ")

#列表的删除————[del]
print('-----删除前·电影列表的数据-----')
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','速度与激情']
for movie in movieName :
    print(movie)

del movieName[2]    #删除在指定的下表下的一个元素

print('-----删除后·电影列表的数据-----')
for movie in movieName :
    print(movie)

#列表的删除————[pop]
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','速度与激情']
movieName.pop()     #弹出末尾最后一个元素,加入参数index删除指定位置的元素
for movie in movieName :
    print(movie)

#列表的删除————[remove]
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','速度与激情']
movieName.remove('指环王')     #弹出指定内容的元素,重复的话就删除第一个
for movie in movieName :
    print(movie)

#列表的删除————[clear]
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','速度与激情']
movieName.clear() # clear() 用来删除列表的所有元素,也即清空列表

##列表的修改————[直接索引修改]
namelist = ['小张','小王','小李']
print('-----修改前·名单列表的数据-----')
for name in namelist :
    print(name)

namelist[1] = '小红'    #修改指定下标元素的内容

print('-----修改后·名单列表的数据-----')
for name in namelist :
    print(name)

#列表的查找————[if in, if not in]
#是否在列表中
#不太重要较前面
namelist = ['小张','小王','小李']
findName = input('请输入您要查找的学生姓名:')

if findName in namelist :
    print('在学员名单中找到了相同的名字')
else :
    print('没有找到')

#列表的查找————[index]
a = ['a','b','c','a','d','e','f']
print(a.count('a'))             #返回所要查找的个数
print(a.index('a',0,len(a)))     #返回对应数据的下标重复的话返回第一个,区间左闭右开
print(a.index('a',4,len(a)))    #找不到会报错

#列表里内容的排序
a = [1, 4, 2, 3]
print(a)
a.reverse()     #将列表所有元素翻转
print(a)
a.sort()        #冒泡排序(升序)
print(a)
a.sort(reverse=True)
print(a)        #降序

#嵌套(二维数组)
schoolNames = [[],[],[]]       #有3个元素的空列表,每个元素都是一个空列表
schoolNames = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]
print(schoolNames[0])                           #第一个列表
print(schoolNames[0][0])                        #第一个列表里的第一个元素
for name in range(0,len(schoolNames[0])) :      #遍历第一个列表
    print(schoolNames[0][name])

#人名站位
import random
schools = [[],[],[]]
names = ['张颖','郭伟','劣寒冰','杨翔','李程程','康磊','陈天浩','刘彦阔']
for name in names :
    rand = random.randint(0,2)
    schools[rand].append(name)

print('-'*20)
i = 1
for school in schools :
    print('共有%d个人在第%d所大学'%(len(school),i))
    i += 1
    for name in school :
        print('%s'%name,end = ' ')
    print('在一所大学')
    print()
    print('-'*20)

#课后小作业————将商品的价格打印出来(自己加了删除、查询和查找功能)
def yigou() :
    k = 1
    for j in buy :
            print('   %2d           %2s      '%(k,buy[k-1]),end ='')
            k += 1
            for a in products[int(j)] :
                print('%s '%a,end = '\t')
            print()
products = [['iphone',6888],['MacPro',14800],['小米6',2499],['Coffee',31],['Book',60],['Nike',699]]
buy = []

while True :
    print('------- 商品列表 -------')
    i = 0
    for product in products :
        print('%d  '%i,end ='')
        for a in product :
            print('%s '%a,end='\t')
        i += 1
        print()
    print('------------------------')
    INput = input('请输入您要购买的商品序号:(按q退出购物,按g查询已购商品,按clear进入删除订单模式)')
    if INput == 'q' :
        break
    elif INput == 'g' :                     #查询已购商品
        k = 1
        print('--------------- 已购商品 ---------------')
        print('商品序号    商品编号    商品    商品价格')
        yigou()
    elif INput == 'clear' :                 #删除已购商品
        k = 1
        print('--------------- 已购商品 ---------------')
        print('商品序号    商品编号    商品    商品价格')
        yigou()
        while True :
            delete = input('您已经入删除订单模式,请输入您要删除的商品序号按q退出:')
            if delete == 'q' :
                break
            if delete not in buy :
                print('您输入的商品不存在,请重新输入:')
            del buy[int(delete)-1]
            print('--------------- 删除之后 ---------------')
            print('商品序号    商品编号    商品    商品价格')
            yigou()
    elif int(INput) > 5 or int(INput) < 0 :
        print('非法输入,请重新输入!!!')
    else :
        buy.append(INput)

#结算
print('--------------- 已购商品 ---------------')
k = 1
sum = 0
if bool(buy) == 0 :
    sum = 0
elif bool(buy) == 1 :
   for j in buy :
        print('   %2d           %2s      '%(k,buy[k-1]),end ='')
        sum += products[int(j)][1]
        k += 1
        for a in products[int(j)] :
            print('%s '%a,end = '\t')
        print()
print('您所购商品的总价为:%d'%sum)
print('--------------- 感谢光临 ---------------')
input('请输入任意键结束:')

'''
12、元组
'''
#元组定义
#Tuple(元组)tuple与list类似,不同之处在于tuple的元素不能修改。tuple写在小括号里,元素之间用逗号隔开,元组的元素不可变,但可以包含可变对象,如list
tup1 = () #创建空的元祖 <class 'tuple'>
#tup2 = (50)     <class 'int'>
#tup2 = (50,)     <class 'tuple'>加一个逗号表示元组
tup2 = (50,60,70) #<class 'tuple'>
print(type(tup1))
print(type(tup2))

#增
tup1 = (12,34,56,78)
tup2 = ('abc','xyz')
tup = tup1 + tup2
print(tup)  #表面是新增,实际上是内存新分配了一个元组,把两个储存在里面了
print(tup1)

#删
tup1 = (12,34,56,78)
print(tup1)
del tup1    #删除了整个元组变量
print(tup1)

#改 不能改
tup1 = (12,34,56,78)
#tup1[0] = 100       不允许修改

#查
tup1 = ('abc','def',2000,2020,123,34,45,234)
print(tup1[0])
print(tup1[-1])
print(tup1[1:3])    #左闭右开
print(tup1[1:])

'''
13、字典
'''
#字典定义
info = {'name':'吴彦祖','age':18}

#字典的访问
print(info['age'])

#访问不存在的键
#print(info['gender'])   #直接访问会报错
#print(info.get('gender'))   #使用get方法,没有找到键,默认返回None
print(info.get('gender','m'))   #没找到可以设置默认值

#增
info = {'name':'吴彦祖','age':18}
newID = 2020
info['id'] = newID
print(info.get('id','m'))

#删
#del
info = {'name':'吴彦祖','age':18}
print('删除前:%s'%info['name'])
del info['name']    #删除了指定键值对后再次访问会报错
print('删除后:%s'%info['name'])

info = {'name':'吴彦祖','age':18}
print('删除前:%s'%info)
del info    #把整个字典删除
print('删除后:%s'%info) 
#clear清空
info = {'name':'吴彦祖','age':18}
print('删除前:%s'%info)
info.clear()    #清空字典但不删除字典
print('删除后:%s'%info) 

#改
info = {'name':'吴彦祖','age':18}
info['age'] = 20
print(info['age'])

#查1、键的查询,2、值的查询
info = {'id':1,'name':'吴彦祖','age':18}
print(info.keys())  #得到所有的键(列表的形式)
print(info.values())    #得到所有的值(列表的形式)
print(info.items())     #得到所有的项(列表)每个键值对是一个元组

#遍历所有的值
info = {'id':1,'name':'吴彦祖','age':18}
for key in info.values() :
    print(key)
#遍历所有的键值对(还可以用for循环)
info = {'id':1,'name':'吴彦祖','age':18}
for key,value in info.items() :
    print('key=%s,value=%s'%(key,value))

'''
14、函数
'''
##定义格式
#def 函数名() :
#    代码
#函数的定义
def printinfo() :
    print('-----------------------')
    print('  人生苦短,我用Python  ')
    print('-----------------------')
#函数的调用
printinfo()

#带参数的函数
def add2Num(a,b) :  #a,b分别为形式参数
    c = a + b
    print(c)
add2Num(11,22)

#带返回值的函数
def add2Num(a,b) :
    return a + b
print(add2Num(11,22))

#返回多个值的函数
def divid(a,b) :
    shang = a / b
    yushu = a % b
    return shang,yushu  #c语言只能返回1个或者不返回
sh,yu = divid(5,2)  #需要使用多个值用逗号分隔
print('shang:%d,余数:%d'%(sh,yu))

#课堂小练3问
#1、写一个打印一条横线的函数。(提示:横线是若干个"-"组成)
def line() :
    print('-------------------')
#line()
#2、写一个函数,可以通过参数,打印出自定义行数的横线。(提示:调用上面的函数)
def hangshu(a) :
    for i in range(a) :
        line()
hangshu(10)
#3、写一个函数求三个数的和
def add(a,b,c) :
    return a + b + c
# c = add(1,2,3)
# print(c)
#4、写一个函数求三个数的平均值(提示调用上面的函数)
def ave(a,b,c) :
    A = a
    B = b
    C = c
    return add(A,B,C) / 3.0
print(ave(1,2,3)) 

'''
15、文件操作
'''
#写入
f = open('test.txt','w')    #打开文件,w模式(写入模式),文件不存在就新建,默认读取模式r
f.write('hello world,i am here!')
f.close()
#读取read方法,读取指定的字符,开始时定位在文件头部每执行一次向后移动指定字符数
f = open('test.txt','r')
content = f.read(11)
print(content)
f.close()
#以行读取
f = open('test.txt','r')
content = f.readlines()     #一次性读取文件全部行为列表,每行为一个列表元素readline是读取1行
print(content)
f.close()
i = 1
for temp in content :
    print('%d,%s'%(i,temp))
    i += 1

#修改文件名
import os
os.rename('test.txt','test1.txt')

'''
16、异常处理
'''
#发生异常
print('-------text----1-----')
f = open('test.txt','r')    #用只读模式打开一个不存在的文件,报错

print('-------text----2-----')  #这行代码不会被执行
#捕获异常
try :
    print('-------text----1-----')
    f = open('test.txt','r')    #用只读模式打开一个不存在的文件,报错

    print('-------text----2-----')  #这行代码不会被执行
except IOError :    #文件没找到,属于IO异常(输入输出异常)
    pass            #捕获异常后,执行的代码

try :
    print(num)
except NameError :      #异常类型想要被捕获except后的类型要一致
    print('产生错误了')

#几种错误在一起
try :
    print('-------text----1-----')
    f = open('test.txt','r')
    print('-------text----2-----')
    print(num)
except (NameError,IOError) :    #将所有可能产生的异常类型,都放到下面的小括号中
    print('产生错误了')

#获取异常描述
try :
    print(num)
except NameError as result :     #异常类型想要被捕获except后的类型要一致
    print('产生错误了')
    print(result)

#捕获所有异常
try :
    print('-------text----1-----')
    f = open('test.txt','r')
    print('-------text----2-----')
    print(num)
except Exception as result :    #Exception囊括所有异常
    print('产生错误了')
    print(result)

#try...finally  和嵌套(处理文件异常常用)
import time
try :
    f = open('test.txt','r')
    try :
        while True :
            content = f.readline()
            if len(content) == 0 :
                break
            time.sleep(2)
            print(content)
    finally :
        f.close()   
        print('文件关闭')
except Exception as result :
    print('发生异常')
    print(result)

#课后小作业,应用文件操作的相关知识,通过python新建一个文件gushi.txt,选择一首古诗写入文件中
#另外写一个函数,读取指定的文件gushi.txt,将内容复制到copy.txt中,并在控制台输出‘复制完毕’。
#提示:分别定义两个函数,完成读文件和写文件的操作,尽可能完善代码,添加异常处理。
def writefile(poetry) :
    f1 = open('gushi.txt','w',encoding='utf-8')
    for i in poetry :
        f1.write(i)
        f1.write('\n')
    f1.close()

def readfile() :
    f2 = open('gushi.txt','r',encoding='utf-8')
    copy1 = f2.readlines()
    f2.close()
    f3 = open('copy.txt','w',encoding='utf-8')
    for copy in copy1 :
        f3.write(copy)
    f3.close()
    print('复制完成')

poetry = ['日照香炉生紫烟','遥看瀑布挂前川','飞流直下三千尺','疑是银河落九天']
try :
    writefile(poetry)
    readfile()
except Exception as result :
    print('出现错误')
    print(result)
input('请按任意键结束……')
文章作者: Mr.Zhang
文章标题: Python基础
文章链接: https://www.codewing.cn/index.php/457/python-base/
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自Ying's Blog!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇