Python初级知识练习

 截至正则表达式等高级部分,从1开始记录学习python的历程(之前学过一遍,都忘记了)

# n = 3
# m = 2
# print("m+n=", m + n)
# print("********")
# print("+ hello Python")
# print("/")
#
# import math
# print(math.sqrt(10))

# from math import *
# print(sqrt(8))


# print(bin(20))  #二进制
# print(oct(20))  #八进制
# print(hex(20))    #十六进制
#
# print(int("10100",2))
# print(int("24",8))
# print(int("14",16))

#格式化输出
# x = 13.1415926
# y = 1314520
# print(format(x,'0.2f'))
# print(format(x,'>12.3f'))  #12个字符长度向右对齐,保留三位小数
# print(format(x,'0>12.2f'),format(x,'>12.1f'))
# print(format(x,'^12.2f'))  #居中
# print(format(y,',')) #每千位以  ,  隔开   千,百万
# print(format(y,'e'))  #科学记数法

#格式化输出   多行注释

'''
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
salary = float(input("请输入收入:"))
print("姓名:",name,"年龄",age,"收入",format(salary,','))
'''

# 转移字符  \
# print('Let\'s go ',"\" \我是转义字符\"")

# 不转义
#转字符串

# print(str(123))
# print("你好\n强月城")
# print(repr("你好\n强月城"))
# print(r"你好\n强月城")
# print("你好\\h强月城")

'''
print("你好\\h强月城")
'''

#长字符串
'''
print("""
    你好
        Python
            我是
                强月城
""")

print("hello\
        word")
'''

# print("a","b","c",sep="*",end="")
# print("取消换行")

#  if 判断
# x = 3;
# if x>=3:
#     print("大于等于3")
#     if x==4:
#         print("等于4")
#     elif x<10:
#         print("不等于4且小于10")
# else:
#     print("小于3")
#
# print("结束判断")


# 断言
# a = 30
# assert a<10 or a>20
# print("--**--")

# 循环
# i = 1
# while i<=10:
#     print(i)
#     i+=1;

# char = ["123","456","789","abc"]
# for s in char:
#     print(format(s))
#
# for i in range(1,11):
#     print(i)

# import random
# for i in range(1,20):
#     print(random.randint(1,20))  #包括1 20
# import math
# i = int(input("请输入一个奇数:"))
# j = math.floor(i/2)+1
# z = 1+2*(j-1)
# print(j)
# for a in range(0,j):
#     x = 1 + 2 * (a)
#     y = (j)-a
#     for c in range(0,y):
#         print(" ",end="")
#     for b in range(0,x):
#         print("*", end="")
#     print()
# for a in range(1,j):
#     x = z-(a)*2
#     for c in range(0,a+1):
#         print(" ",end="")
#     for b in range(0,x):
#         print("*", end="")
#     print()


# -----------*********序列**********--------------------
# a = ["a",1,True]
# b = ["b",2,False]
# c = ["c",3,["d",4]]
# e = [a,b,c]
# for val in e:
#     print(val)
# print(a[2])

# a = "hello qyc"
# # 第一个   倒数第一个
# # print(a[1])
# # print(a[-1])
# print(a[2:7])    #区间  不包括索引7
# print(a[2:])  #省略结尾
# print(a[:5])    #省略开始
# print(a[0::2])  #指定步长
# print(a[::-1])  #倒序  起始要大于结尾  步长不能为0
#
# b = [10]*10
# print(b)
# c = [1,2,3,4,5,6]
# print(2 in c)  #判断值是否在序列

# d = [["qyc","123456"],["qy","123"],"qc","12"]
# username = input("用户名:")
# password = input("密码:")
# if([username,password] in d):
#     print("登陆成功")
# else:
#     print("登陆失败")

# e = [1,2,3,4,5,6,7,8,9]
# # print(len(e))  求序列长度
# del e[3]  删除元素
# print(e)


#分片赋值
# s = ["abc","def","ghi","jkl"]
# print(s)
# s[1:] = ["qyc","ssg"]
# print(s)
# name = list("qyc")  #把字符串转换成字符组成的列表
# print(name)
# name[1:] = list("ssg")
# print(name)

# a = [1,2,3,4,6]
# a.append(6)
# print(a)
# a.append([6,7,8,9])  #在后面添加数据
# print(a)
#
# b = a.copy()  #拷贝
# print(b)
#
# print(a.count(6))  #出现次数
#
# a.extend(b)  #改变a表
# print(a)
#
# print(a.index(2))  #计算索引位置
#
# a.insert(2,10) #插入
# print(a)
#
# #弹出
# a.pop()
# print(a)
# a.pop(0)
# print(a)
#
# a.clear()  #清除序列
# print(a)

# a = [5,8,4,1,9,6,7,3]
# a.sort()
# print(a)
# a.sort(reverse=True)  #降序排序
# print(a)
#
# b = "asdjkjasdih"  #对任何序列进行排序
# c = sorted(b)
# print(c)
#
# d = ["a","d","e","c"]
# f = sorted(d)
# print(f)
# # for i in range(1,10):
# #     print(i)

# --------********元组********------------
# 与序列的区别:元组是只读的,不能修改 ( , )  内建方法返回值为元组,在映射中作为键值使用
# value = tuple([1,2,3])  #序列替换成元组  tuple函数
# print(value)

#练习
# a = []
# while(1):
#     b = input("请输入一个整数:")
#     if b == "end":
#         break
#     a.append(b)
# print(a)

# a = [1,5,4,2,3]
# b = [10,9,8]
#
# b.extend(list(a[1:3]))
# b.sort(reverse=True)
# print(b)


#反转序列
# a = int(input("请输入一个整数:"))
# b = 1
# c = []
# for i in range(1,a+1):
#     d = []
#     for j in range(1,a+1):
#         d.append(b)
#         b = b+1
#     c.append(d)
#
# for n in range(0,a):
#     print(c[n])
#
# for k in range(0,a):
#     for l in range(k,a):
#         if k != l:
#             print(c[k][l])
#             m = c[k][l]
#             c[k][l] = c[l][k]
#             c[l][k] = m
#
# for n in range(0,a):
#     print(c[n])

# ---------------********字符串********------------
#格式化
# a = "你好%s,我是%s!!!"
# values = ("python","强月城")
# print(a % values)

# from math import pi
# b = "圆周率Π为:%.4f(保留%d位有效数字)"
# values = (pi,4)
# print(b % values)

# c = "及格率%d%%"   #当传入的参数的数量与格式化参数的数量不匹配是报错
# values = (60)
# print(c % values)


# 模板字符串
# from string import Template
# tem = Template("$val很简单,$name很喜欢!")
# print(tem.substitute(val='python',name='强月城'))
# data = {}  #字典
# data['val'] = "java"
# data['name'] = "qyc"
# print(tem.substitute(data))
#
# a = Template("$money$$美元")
# b = Template("${s}substitute")
# print(a.substitute(money = 20))
# print(b.substitute(s = "qyc"))


#format方法
# a = "{}是一种高级的面向对象编程语言,{}正在学习"
# b = "{lange}是一种高级的面向对象编程语言,{name}正在学习"
# print(a.format("python","qyc"))
# print(b.format(name = "qyc",lange = "python"))
# import math
# c = "{mod.__name__} is {mod.pi}"
# print(c.format(mod = math))
# 3.141592653589793

# 原样输出/通过repr输出/Unicode码输出
# s = "{val:s} {val!r} {val!a}"   r a 要加!    其他加:  b o x 2 8 16  %
# print(s.format(val = "强月城"))
#
# print("{num:10}".format(num=10))
# from math import pi
# print("{pi:.2f}".format(pi = pi))
# print("{pi:10.2f}".format(pi = pi))
# print("{name:.2}".format(name = "强月城"))
# print("{num:,}".format(num = 10**100))
#
# print("{num:02}".format(num = 4))  02 的意思是 补0  长度为2
# print("{num:*^20}".format(num = "强月城"))  <  ^  >  左 中 右
# print("{0:#=10.2f}".format(-2.5))  -#####2.50
# print("{:#b}".format(8))
# print("{0:=^10.2f}".format(-3.1415))   #  ==-3.14===
# print("{0:*=10.2f}".format(-3.1415))   #  -*****3.14

# 字符串函数

# print("强月城".center(10,"*"))  #***强月城****

# print("abcdefg".find("c"))   从0开始  索引  2
# print("abcdefg".find("h"))    -1  未找到
# print("hello word".find("o",5,8))  索引 第二个参数为开始  包括,第三个参数为结尾  不包括

# join方法用于连接序列中的元素,是split的逆方法
# s = ["c","user","log"]
# a = '','c','d','f'''
# c = "/"
# d = "\\"
# print(c.join(s))   #join必须是字符串
# print(d.join(s))
# print(d.join(a))

# split拆分成序列

# s = "a/b/c/d"
# print(s.split("/"))  # split无参数代表为空格

# import string
# print("HEllo".lower())
# print("HEllo".upper())
# print(string.capwords("HEllo word"))  Hello Word

# print("hello qyc".replace("qyc","强月城"))  替换
# print("  qyc  ".strip())   截取前后空格
# print("****&&& q*y&c ***&&".strip(" *&")) q*y&c

# translate maketrans  替换单个字符
# s = "i love python and java"
# table = s.maketrans("ao","*#"," ")   #第三个参数为删掉指定字符
# print(s.translate(table))



# 练习
# a = ""
# while(1):
#     a = input("请输入字符串:")
#     if (a == "end"):
#         break
#     b = input("请输入要统计的字符串")
#     a = a.replace(" ","")
#     print(a)
#     b = a.replace(b,"")
#     c = len(a)-len(b)
#     print(c)
#
# a = int(input("请输入一个数:"))
# b = 1+2*(a-1)
# for i in range(1,a+1):
#     c = "*"*(1+2*(i-1))
#     # print(c.center(b))
#     print("{val:^{num}}".format(val=c,num=b))


# a = [["name","qyc"],["age","22"],("sex","man")]
# a = dict(a)
# b = {"name":"qyc","age":22,"sex":"man"}
# print(b)
# print(a)
# print(len(a))
# print(b["age"])
# del b["age"]
# print(b)
# print("sex" in b)

#
# e = {}
# f = []
# while True:
#     c = input("key:")
#     if c == "end":
#         break
#     d = input("value:")
#
#     f.append([c,d])
# e = dict(f)
# print(e)


# format_map  格式化字符串
# value = {"name":"qyc","age":"22"}
# a = "姓名:{name},年龄:{age}"
# print(a.format_map(value))

# 序列与迭代
# value = {"name":"qyc","age":"22"}
# # for val in value:
# #     print(val)
# for key,val in value.items():
#     print(key,val)

# 压缩序列
# a = ["name","age","sex"]
# b = ["qyc",22]
# for value in zip(a,b):
#     print(value)

# 反转序列迭代
# c = reversed(a)
# print(a)

# copy  deepcopy
# from copy import deepcopy
# a = {"name":"qyc","age":"22","aihao":["吃饭","睡觉"]}
# b = deepcopy(a)
# b = a.copy()    #如果序列被替换,则b无影响,如果只是替换一个值,则b有影响
# a["aihao"][0] = "mly"
# a["aihao"][1] = "mlya"
# copy
# {'name': 'qyc', 'age': '22', 'aihao': ['mly', 'mlya']}
# {'name': 'qyc', 'age': '22', 'aihao': ['mly', 'mlya']}

# deepcopy
# {'name': 'qyc', 'age': '22', 'aihao': ['mly', 'mlya']}
# {'name': 'qyc', 'age': '22', 'aihao': ['吃饭', '睡觉']}

# a["aihao"] = "mly"
# {'name': 'qyc', 'age': '22', 'aihao': 'mly'}
# {'name': 'qyc', 'age': '22', 'aihao': ['吃饭', '睡觉']}
# print(a)
# print(b)


# fromkeys
# a = ["qyc",22,"man"]
# c = ["name","age","sex"]
# b = {}.fromkeys(c,"未定义")
# print(b)

# a = {"name": "qyc", "age": "22"}
# print(a["name"])
# print(a["aihao"])   字典没有报错
# Traceback (most recent call last):
#   File "D:/自编程序/studyPython/lean1.py", line 465, in <module>
#     print(a["aihao"])
# KeyError: 'aihao'
# print(a.get("name"))
# print(a.get("aihao"))  None
# print(a.get("aihao","没有"))  没有

# a = {"name": "qyc", "age": "22"}
# keys values  键值   遍历全部
# for key,value in a.items():
#     print(key,"=",value)

# a = {"name": "qyc", "age": "22","sex":"man"}
# print(a.pop("age"))  弹出指定的一个
# print(a)
# print(a.popitem())   #弹出最后一个
# print(a)


# setdefault 默认值
# a = {"age":22}
# a.setdefault("name",1)
# print(a)
# {'age': 22, 'name': 1}


# update 以b更新a  有则替换,无则添加
# a = {"name":"qyc","age":1}
# b = {"name":"强月城","sex":"man"}
# a.update(b)
# print(a)
# {'name': '强月城', 'age': 1, 'sex': 'man'}

# values  与keys  values 有重复的   keys没有重复的  items输出后者  相同的key被替换

# a = {"name":"qyc","age":22,"name":"强月城","aihao":22}
# for val in a.values():
#     print(val)
#     强月城
#     22
#     22

# for val in a.keys():
#     print(val)
#     name
#     age
#     aihao

# for val in a.items():
#     print(val)
#     ('name', '强月城')
#     ('age', 22)
#     ('aihao', 22)


# -----------********练习
# import random
# a = {}
# b = []
# for j in range(0,10):
#     for i in range(0, 90):
#         b.append([random.randint(0, 99), "1"])
#         # a.setdefault(random.randint(0,99),1)
#     print(b)
#     a = dict(b)
#     print(a)
#     print(len(a))


# print("{num:010}".format(num = 41))
# a = input("请输入:")


# ------------********函数*********-----------

# def show(name):
#     print("你好{name}".format(name = name))
#     print("你好"+name)
#
# show(input("输入:"))

# 斐波那契数列

# def fbnqsl(num):
#     "斐波那契数列"
#     a = [0, 1]
#     for i in range(0,num-2):
#         a.append(a[-2]+a[-1])
#     return a
#
# def show():
#     """
#     显示函数方法
#     :return:1
#     """
#     return 1
#
# b = fbnqsl(10)
# print(b)
#
# print(show.__doc__)
# help(show)

# def show(*p):
#     for a in p:
#         print(a)
#     print(p[0])
#     print(p)
#
# show("qyc",11)


# def show(**a):
#     print(a)
#     for i,j in a.items():
#8u8/         print(i+" = "+j)
#
# show(**{"name":"qyc","age":"13"})
#
# def show(a):
#     print(a)
#     for i,j in a.items():
#         print(i+" = "+j)
#
# show({"name":"qyc","age":"13"})

# -----------------***********类************-------------

# class qyc:
#     # name = "qqqyyyccc"
#     def getName(self):
#         # self.name = self.name+1
#         return self.name
#
#     # def __setName(self,name):   相当于私有化
#     def setName(self, name):
#         # 定义了类变量
#         self.name = name
#
#
# q1 = qyc()
# q2 = qyc()
#
# q1.setName("qiangyuecheng")
# q2.setName("强月城")
#
# print(q1.getName())
# print(q2.getName())


# class People:
#     def show(self):
#         print("People")
#
# class Student(People):
#     def show1(self):
#         print("Student")
#
# p1 = Student()
# p2 = People()
# p1.show()
# p2.show()
#
# # issubclass 判断是否有继承关系  子类  父
# print(issubclass(Student, People))
#
# #__bases__  查看父类
# print(Student.__bases__)
#
# # isinstance 判断是否为实例
# print(isinstance(p1,Student))


# 多继承  用  ,隔开   如果类中没有任何代码需要 pass  否则编译出错

# class People:
#     def show(self):
#         print("people")
#
# class Student:
#
#     # 没有重载,后面的方法会覆盖前面的方法
#     def show(self,name):
#         print("student"+name)
#     def show(self):
#         print("studentssss")
#
#
# class qyc(Student,People):
# # 前面的Student会覆盖People的show方法
#     pass
#
# q = qyc()
# q.show()

# class People:
#     def show1(self):
#         print("shou()1")
#
#     def method(self):
#         print("默认method方法")
#
# class Student(People):
#     pass
#
# class qyc(Student):
#     pass
#
# print(People.__bases__)
# p1 = People()
# p2 = Student()
# p3 = qyc()
#
# print(issubclass(qyc,People))
# print(isinstance(p3,Student))
# p1 = People()
# # / 判断是否有  show1方法
# print(hasattr(p1,"show1"))
#
# m1 = getattr(p1,"show2",p1.method)  #p1.method不能有小括号
# m1()
#
# def show2():
#     print("show2")
# setattr(p1,"show2",show2)    #动态添加方法  setattr
# p1.show2()

# class People:
#     def show(self):
#         print("people-show()")
#
# class Student:
#     def method(self):
#         p = People()
#         if hasattr(p,"method"):
#             p.method
#         else:
#             print("没有这个方法")
#             def method1():
#                 print("method1")
#             setattr(p,"method",method1)
#             p.method()
#
# s = Student()
# s.method()

# ------------------********异常**********----------------------
# raise Exception("这是强月城的第一个异常")
'''
Traceback (most recent call last):
  File "D:/自编程序/studyPython/lean1.py", line 714, in <module>
    raise Exception("这是强月城的第一个异常")
Exception: 这是强月城的第一个异常
'''
# raise ArithmeticError("数值有关的异常")
"""
Traceback (most recent call last):
  File "D:/自编程序/studyPython/lean1.py", line 721, in <module>
    raise ArithmeticError("数值有关的异常")
ArithmeticError: 数值有关的异常
"""

# 异常总结
"""
Exception 所有异常的基类
AttributeError 属性引用或继承失败
OSError 操作系统无法执行任务时
IndexError 使用序列中不存在的索引
KeyError 使用映射中不存在的键值
NameError 找不到名字(变量)时抛出的异常
SyntaxError 代码为错误形式时
TypeError 当内建操作或函数应用于错误类型的对象时抛出的异常
ValueError 当内建操作或函数应用于错误类型的对象时抛出的异常,但对象使用了不合适的值时抛出的异常
ZeroDivisionError 当除法或取模操作的第二个参数值为0时抛出的异常
"""

# 自定义异常
#
# class qycException(Exception):
#     pass
# # 加注、举起、提高、饲养
# class qyc:
#     "自定义异常"
#     def show(self):
#         raise qycException("强月城自定义的异常")
#
#     "method"
#     def method(self):
#         print("method")
#     def doc(self):
#         help(self.show)
#
# q = qyc()
# # q.show()
# help(q.show)


'''Traceback (most recent call last):
  File "D:/自编程序/studyPython/lean1.py", line 753, in <module>
    q.show()
  File "D:/自编程序/studyPython/lean1.py", line 750, in show
    raise qycException("强月城自定义的异常")
__main__.qycException: 强月城自定义的异常
'''

# -------------------------***********捕获异常************------------------
# try:
#     a = 10
#     b = 0
#     c = a/b
#     print(c)
# except AttributeError:
#     print("捕获异常")
# # -----------***************捕获对象**********------------
# except (TypeError,ZeroDivisionError) as e:   #起别名
#     print("多个异常")
#     print(e)
# except:
#     print("其他异常")
# else:
#     print("正常运行")
# finally:
#     print("兜底方法")



#  ----------------------***************构造方法*************----------------
#
# class qyc:
#     def __init__(self,name = "huangyan"):
#         self.name = name
#         print("构造方法"+self.name)
#     def show(self):
#         print("show"+self.name)
#
# # 构造函数指定name的默认值时,初始化对象时可以没有参数,否则需要参数 TypeError: __init__() takes 1 positional argument but 2 were given
# q = qyc("qyc")
# q.show()

# ----------*************super*********-------
# 子类在重写__init__后不会调用父类的构造方法(AttributeError: 'student' object has no attribute 'name'),
# 当调用super()时会调用父类的构造方法
# class people:
#     def __init__(self):
#         self.name = "qyc"
#         print("父类的构造方法")
#     def show(self):
#         print(self.name)
# class student(people):
#     def __init__(self):
#         super().__init__()
#         print("子类的构造方法")
#     def show(self):
#         super().show()
#         print("子类的show方法")
#
# stu = student()
# stu.show()


# #------------------*******特殊的成员方法******-------------
# a = [1,2,3,4,5]
# print(a.__len__())  #返回序列中的元素个数
# b =(1,2,3,4,5)
# print(b.__len__())
# c = {"name":"qyc","age":22}
# print(c.__len__())
#
# class itemss:
#     def __init__(self,map):
#         self.a = map
#         print("构造方法")
#     def __getitem__(self, item):
#         print("调用getitem")
#     def __setitem__(self, key, value):
#         print("调用setitem")
#     def __delitem__(self, key):
#         print("调用delitem")
#     def show(self,name):
#         print(self.a[name])
#
# c = {"name":"qyc","age":22}
# b = itemss(c)
# (b.show("name"))
# b["age"] = 11
# (b.show("age"))

# 绑定方法
# class list:
#
#     def get(self):
#         print("调用get")
#
#     def set(self,yz):
#         self.a = yz
#         print("调用set")
#
#     def delt(self):
#         print("调用delt")
#
#     def de(self):
#         self.a
#     position = property(get,set,delt)
#
# c = (10,22)
# b = list()
# del b.position
# b.position = 11,12
# print(b.position)


# 监控对象所有属性  getattr()

# 静态方法  类方法

# class qyc:
#     name = "hy"
#     def __init__(self):
#         self.age = 22
#         print(self.name+"   "+self.name)
#
#     def show(self):
#         print("show")
#
#     @staticmethod
#     def run():
#         print("静态方法")
#         print("静态name"+qyc.name)
#         # qyc.read()
#
#     @classmethod
#     def read(cls):
#         print("类方法")
#         print(cls.name)
#
#
# qyc.run()
# qyc.read()
# print(qyc.name)
# # qyc.show() TypeError: show() missing 1 required positional argument: 'self'
# q = qyc()
# q.show()


#------------****************迭代器*****----
# class fbnq:
#     def __init__(self):
#         self.a = 0
#         self.b = 1
#
#     def __next__(self):
#         result = self.a
#         self.a,self.b = self.b,self.a+self.b
#         return result
#
#     def __iter__(self):
#         return self
#
# fb = fbnq()
# for fib in fb:
#     print(fib,end=" ")
#     if fib > 20:
#         break

# yield 生成器  冻结当前函数  处理多维列表
# def ebunList(nested):
#     try:
#         for subList in nested:
#             for element in ebunList(subList):
#                 yield element
#     except TypeError:
#         yield  nested
# 
# list = [1,2,[3,4,[5,6,7],8,9],10]
# 
# for i in ebunList(list):
#     print(i,end=" ")
# 1 2 3 4 5 6 7 8 9 10

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值