Python基础学习

1、字符串类型的变量内容有换行的时候,可以用三个单引号或者三个双引号括起来

str='''
I am a student.
Nice to meet you!
'''

print(str)
str="""
I am a student.
Nice to meet you!
"""
print(str)

 2、对字符串中的字符提取时通过索引进行提取,有两种方式

  • 从前往后索引,下标从0开始
  • 从后往前索引,下标从-1开始

 3、常用的字符串方法

 

 1 star = " NEPTUNE "
 2 #长度为9
 3 print(len(star))
 4 #长度为7
 5 print(len(star.strip()))
 6 
 7 say_hi = "Hello World!"
 8 #输出Hello Kitty!
 9 print(say_hi.replace("World", "Kitty"))
10 
11 say_hi = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Pluto"
12 #变成了字符串数组['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto']
13 arr=say_hi.split(",")
14 print(arr)
15 
16 book_name = "Men Are from Mars, Women Are from Venus"
17 #True
18 is_exist = "Mars" in book_name
19 #False
20 is_exist = "Mars" not in book_name
字符串常用方法

 4、在字符串中引用变量的值

1 name = 'Earth'
2 age = 4.543E9
3 #输出结果为:My name is Earth, 4543000000.0 years old
4 print(f"My name is {name}, {age} years old")

 5、print(f"")的使用

1 briage_len=0
2 bird_num=150000
3 print(f"bird_num={bird_num},briage_len={briage_len}")

 6、访问列表和访问字符串的字符一样,可以从前往后访问(下标从0开始),也可以从后往前访问(下标从-1开始)

 7、访问列表时带步长[m:n:步长](包含m,不包含n)

 

 

 

 可以通过将步长设置为-1,来实现列表的反转

 

 8、删除列表中的元素,使用del 列表名[i]

 

 9、使用del 列表名[m:n],删除列表中的多个元素

 

 10、往列表中添加元素,使用 列表名 += [元素1,元素2,元素3,...,元素n]

 

 11、往列表中添加元素,使用append()

 

 总结:使用+和append()都是在列表的结尾处添加元素

12、在列表的指定位置插入元素,使用insert(n, 需要添加的元素/列表值),n 为需要插入元素或列表的指定位置

 

 13、在列表中删除指定元素,使用 remove(元素值)

 

 14、在列表中删除指定元素,使用 列表名.pop(index),从列表中删除指定索引上的元素,如果不指定 index,默认删除最后一个元素

 

 15、从列表中删除元素有remove()和pop(),两者的区别?

a) remove()的参数是元素,pop()的参数是索引

b) remove()的返回值是None,pop()的返回值是被删除的元素

 16、break语句是结束整个循环,continue语句是结束本轮循环

17、访问字典的方式

 

只打印出来字典中的value

 

 18、删除字典的操作

 1 zhangsan_info = {'num':1,'name':'张三','sex':'','height':'180cm','address':'河南'}
 2 #打印结果为{'num': 1, 'name': '张三', 'sex': '男', 'height': '180cm', 'address': '河南'}
 3 print(zhangsan_info)
 4 #字典名.pop(键名)
 5 zhangsan_info.pop('num')
 6 #打印结果为:{'name': '张三', 'sex': '男', 'height': '180cm', 'address': '河南'}
 7 print(zhangsan_info)
 8 #popitem()删除最后插入的项目
 9 zhangsan_info.popitem()
10 #打印结果为:{'name': '张三', 'sex': '男', 'height': '180cm'}
11 print(zhangsan_info)
12 #del 字典名[键名]
13 del zhangsan_info['height']
14 #打印结果为:{'name': '张三', 'sex': '男'}
15 print(zhangsan_info)
16 #del 字典名:完全删除字典
17 #完全删除该字典后,zhangsan_info变量将不存在
18 del zhangsan_info

19、其它字典的操作

 1 zhangsan_info = {'num':1,'name':'张三','sex':'','height':'180cm','address':'河南'}
 2 #复制字典:copy()
 3 zhangsan_info_copy1=zhangsan_info.copy()
 4 print(zhangsan_info_copy1)
 5 #复制字典:dict()
 6 zhangsan_info_copy2=dict(zhangsan_info)
 7 print(zhangsan_info_copy2)
 8 #清空字典
 9 zhangsan_info.clear()
10 #打印结果为:{}
11 print(zhangsan_info)
12 #使用dict()创建字典
13 d=dict(num=2,name='李四',sex='',height='175cm')
14 #打印结果:{'num': 2, 'name': '李四', 'sex': '男', 'height': '175cm'}
15 print(d)

 20、元组的定义

元组的一个特征是:元组在创建完成后便不能被修改,因此任何关于修改元组的操作都会报错

1 #如果需要创建一个仅包含一个元素的元组,必须在该元素后面添加一个逗号,否则,Python 无法将变量识别为元组。
2 loong_son1 = ('囚牛') # 不是元组,类型为str
3 loong_son2 = ('囚牛',)
4 #打印结果:<class 'str'>
5 print(type(loong_son1))
6 #打印结果:<class 'tuple'>
7 print(type(loong_son2))

21、访问元组的方式跟访问列表的方式一样,正负索引法、切片法、遍历法

22、合并元素:元组不能被修改,但是两个元组是可以合并成一个新的元组的,在 Python 中,使用 + 运算符可以连接两个或多个元组

1 loong_son1 = ('', '', '')
2 loong_son2 = ('','', '')
3 loong_son = loong_son1 + loong_son2
4 #打印结果:('一', '二', '三', '三', '四', '五')
5 print(loong_son)

23、集合的定义:集合是无序元素的集合,集合中的元素不可重复,如果有重复元素,重复的元素将被忽略,集合中已存在的元素不可以被修改,但是可以向集合中增加元素,也可以从中删除元素。

 1 #往集合中添加元素
 2 students={'zhangsan','lisi','wangwu','zhaoliu'}
 3 #add()方法
 4 students.add('qianqi')
 5 students.add('qianqi')
 6 #打印结果:5
 7 print(len(students))
 8 #update()方法
 9 students.update({'qianba','qianjiu'})
10 students.update(['qianshi','qianshiyi'])
11 #打印结果:9
12 print(len(students))
13 #从集合中删除元素
14 #discard()方法
15 students.discard('qianshi')
16 #remove()方法
17 students.remove('qianba')
18 #打印结果:7
19 print(len(students))
20 #discard()与remove()的区别:在删除一个不存在的元素时,discard()不执行任何操作,remove()抛异常

 24、集合的运算:并、交、差

 1 num1={1,2,3}
 2 num2={2,3,4}
 3 #并:union()
 4 print(num1.union(num2))
 5 print(num2.union(num1))
 6 #并:集合1|集合2
 7 print(num1|num2)
 8 #以上输出的结果均是:{1, 2, 3, 4}
 9 
10 #交:集合1.intersection(集合2)
11 print(num1.intersection(num2))
12 print(num2.intersection(num1))
13 #交:&
14 print(num1&num2)
15 print(num2&num1)
16 #以上输出的结果均是:{2, 3}
17 
18 #差:集合1.difference(集合2):属于集合1 不属于集合2 
19 #打印结果:{1}
20 print(num1.difference(num2))
21 #打印结果:{4}
22 print(num2.difference(num1))
23 #差:集合1-集合2:属于集合1 不属于集合2 
24 #打印结果:{1}
25 print(num1-num2)
26 #打印结果:{4}
27 print(num2-num1)
28 
29 #对称差集:集合1.symmetric_difference(集合2)
30 #集合 A 与集合 B 的并集减去集合 A 与集合 B 的交集
31 #打印结果均是:{1, 4}
32 print(num1.symmetric_difference(num2))
33 print(num2.symmetric_difference(num1))
34 #对称差集:集合1^集合2
35 print(num1^num2)

 25、函数的定义

1 def cal(qty, item,price):
2     print(f'{qty} {item} cost ${price:.2f}')
3  
4 #说明:
5 #1)使用def关键字来定义函数
6 #2){price:.2f}表示保留两位小数

26、调用函数时,参数传递的方式:位置参数传递(直接传递)、关键字参数传递、默认参数

27、Python 函数中的 return 语句有两个作用:立即结束本函数的执行、返回数据给调用者

28、类与对象:概念篇

 
 1  1 #Person类
 2  2 class Person:
 3  3     #创建类的对象时会默认执行该方法,该方法为类的属性赋值
 4  4     #参数self必须存在,表示对象的引用
 5  5     #nation这个参数有默认的值
 6  6     def __init__(self,name,age,sex,nation='china'):
 7  7         self.name=name
 8  8         self.age=age
 9  9         self.sex=sex
10 10         self.nation=nation
11 11 
12 12     #类的成员方法,参数self必须存在,表示对象的引用
13 13     def get_dec(self):
14 14         return f'姓名:{self.name}\n年龄:{self.age}\n性别:{self.sex}\n国籍:{self.nation}'
15 15 
16 16 #创建对象
17 17 person=Person('zhangsan',18,'man')
18 18 #访问对象的属性
19 19 print(person.name)
20 20 #访问对象的成员方法
21 21 print(person.get_dec())
22 22 #修改对象的属性值
23 23 person.nation='中国'
24 24 print(person.nation)

29、类与对象:继承

 1 #父类
 2 class Animal:
 3     def __init__(self,name,fan):
 4         self.name=name
 5         self.fan=fan
 6     def eat(self):
 7         print(f"吃{self.fan}")
 8 
 9 #子类Cat继承父类Animal
10 class Cat(Animal):
11     #子类的__init__方法
12     def __init__(self,name,fan,color):
13         #name和fan属性可以通过调用父类的__init__方法来赋值
14         super().__init__(name,fan)
15         self.color=color
16     def jiao(self):
17         print("喵喵")
18 
19 #实例化对象,对调用对象的成员方法
20 cat=Cat('','','花色')
21 cat.eat()
22 cat.jiao()

 30、模块与包

'''
一个 .py 文件便是一个模块(Module)

当执行 import utils 这条指令时,Python 会从以下路径中搜索模块 utils.py:
1. 在当前目录下搜索该模块
2. 在环境变量 PYTHONPATH 指定的路径列表中依次搜索
3. 在 Python 安装路径的 lib 库中搜索

导入模块的两种方法:
1、直接导入模块
2、from 模块名 import 方法名,有时候,为了方便,会使用 from module_name import * 来导入模块中的所有对象
'''
import utils
from utils import min_num
print(utils.max_num(5,10))
print(min_num(4,1))

'''
Python 中的包实现了对模块分组管理的功能
包相当于一个文件夹,模块则相当于文件夹中的文件
导入包中模块对应的对象,一般用from pkg.utils1 import max_num,这样可以直接使用max_num这个方法
'''

 31、异常处理

 1 #加了异常捕获和处理代码之后,当发生异常时,整个程序没有崩溃,而是继续执行后面的代码,所以输出了 Done!
 2 try:
 3     print(1 / 0)
 4 except ZeroDivisionError:
 5     print("ZeroDivisionError happened!")
 6 
 7 print("Done!")
 8 
 9 '''
10 try 语句块后面可以跟上多个 except 语句块。
11 在执行代码 print(1 / 0) 时,发生了除 0 异常,所以没有执行后面的打开文件的代码,后面的异常处理代码输出了 ZeroDivisionError happened!
12 '''
13 try:
14     print(1 / 0)
15     #除0异常
16     with open('test.log') as file:
17     #文件不存在异常
18         read_data = file.read()
19 except ZeroDivisionError:
20     print("ZeroDivisionError happened!")
21 except FileNotFoundError:
22     print("FileNotFoundError happened!")
23 
24 print("Done!")
25 
26 '''
27 try-except 语句块后面可以跟上 else 语句块,当没有异常发生时,会执行 else 语句块中的代码。
28 程序中没有发生异常,所以执行 else 语句块中的代码,输出了 Exception not happened。
29 '''
30 try:
31     print(1 / 1)
32 except ZeroDivisionError:
33     print("ZeroDivisionError happened!")
34 else:
35     print("Exception not happened")
36 
37 print("Done!")
38 
39 '''
40 try-except-else 语句块后面还可以跟上 finally 语句块,不管有没有发生异常,finally 语句块中的代码都会被执行。
41 没有发生异常时,除了执行 else 语句块中的代码,输出了 Exception not happened,finally 语句块中的代码也得到了执行,输出了 Finally is executed! 。
42 '''
43 try:
44     print(1 / 1)
45 except ZeroDivisionError:
46     print("ZeroDivisionError happened!")
47 else:
48     print("Exception not happened")
49 finally:
50     print("Finally is executed!")
51 
52 print("Done!")
53 
54 '''
55 主动抛出异常,使用关键字raise:raise Exception()
56 '''

 32、综合练习题

 1 import random
 2 
 3 '''
 4 实现一个猜数字游戏,首先使用 random 模块中的随机函数生成一个位于 [1, 100] 范围内的数字,然后让机器人玩家来猜,比较机器人玩家猜的数字和生成的随机数,如果随机数大于玩家猜的数字告诉玩家猜的数字过小,如果随机数小于玩家猜的数字告诉玩家猜的数字过大,直到玩家猜到正确的数字。
 5 提示:生成 1~100 的随机数可以使用 random.randint(1, 100)
 6 '''
 7 
 8 #猜测的数字通过命令行输入
 9 def fun1():
10     rvalue = random.randint(1, 100)
11     while True:
12         robot_value = int(input("机器人玩家输入猜测的数字:"))
13         if robot_value > rvalue:
14             print(f"机器人玩家猜测的数字为{robot_value},该数字过大!")
15         elif robot_value < rvalue:
16             print(f"机器人玩家猜测的数字为{robot_value},该数字过小!")
17         else:
18             print(f"机器人玩家猜中了!数字为{robot_value}")
19             break
20 
21 #通过生成随机数自动猜测
22 def fun2():
23     random_value = random.randint(1, 100)
24     robot_value=random.randint(1,100)
25     height=100
26     low=1
27     while True:
28         if robot_value > random_value:
29             print(f"实际数字为{random_value},机器人玩家猜测的数字为{robot_value},该数字过大!")
30             height=robot_value-1
31             robot_value=(height+low)//2 #//表示整数除法
32         elif robot_value < random_value:
33             print(f"实际数字为{random_value},机器人玩家猜测的数字为{robot_value},该数字过小!")
34             low = robot_value +1
35             robot_value = (height + low) // 2
36         else:
37             print(f"机器人玩家猜中了!数字为{robot_value}")
38             break
39 '''
40 实现一个剪刀、石头、布的游戏,首先使用 random 模块的函数从列表 ['剪刀', '石头', '布'] 中随机选择一个,然后机器人玩家也随机出一个,比较两个,判断玩家是输是赢。最后给出机器人玩家赢了几次,输了几次,平了几次。
41 提示:从列表 '剪刀', '石头', '布'] 随机选择,可以使用 random.choice(['剪刀', '石头', '布']
42 '''
43 def fun3():
44     ping, ying, shu = 0, 0, 0
45     count=int(input("请输入要玩的次数:"))
46     while count>=1:
47         random_value =random.choice(['剪刀', '石头', ''])#对方出
48         robot_value=random.choice(['剪刀', '石头', ''])#机器人玩家出
49         count-=1#玩一轮,轮数减少一次
50         print(f'对方是{random_value},机器人玩家出了{robot_value}')
51         if robot_value=='石头':
52             if random_value=='石头':
53                 ping+=1
54             elif random_value=='剪刀':
55                 ying+=1
56             else:
57                 shu+=1
58         elif robot_value=='剪刀':
59             if random_value=='石头':
60                 shu+=1
61             elif random_value=='剪刀':
62                 ping+=1
63             else:
64                 ying+=1
65         else:
66             if random_value=='石头':
67                 ying+=1
68             elif random_value=='剪刀':
69                 shu+=1
70             else:
71                 ping+=1
72     print(f'机器人玩家赢了{ying}次,输了{shu}次,平了{ping}次')

 

posted @ 2022-01-13 18:19  斌阁墨  阅读(115)  评论(0)    收藏  举报