文章目录
前言
记录自己的一些学习之路
一、python基础练习题目
题目一
有红、黄、绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。1. 输出情况总数;2. 输出几个样例;
内容二:
模仿醉汉在二维空间上的随机漫步:一个醉汉喝醉酒,每次只能走一步,每步分别沿着x,y轴走一个单位长度,试着画出醉汉的轨迹。
二、实验结果与分析
1.题目分析
分析如下:
由demo1可知
依题可知,
红球+黄球+绿球=8个球
红球范围0-3黄球范围0-3绿球范围2-6
记录每次可行的结果进入数组中,随机生成索引展示输出结果
由demo2可知
起点是(0,0)
每次随机选择下列四种选择
(x+1,y),(x-1,y),(x,y+1),(x,y-1)
记录选择,循环,1000个点停止
2.代码如下
demo1:
# -*- codeing =utf-8 -*-
# @Time : 2021/3/11 15:01
# @Author : ArLin
# @File : demo1.py
# @Software: PyCharm
import random
list1=[]
list2=[]
list3=[]
list4=[]
flag=0
for red in range(0,4,1):
for yellow in range(0,4,1):
for green in range(1,7,1):
if red+yellow+green==8:
# print('出现',red,yellow,green)
flag=flag+1
list1.append(red)
list2.append(yellow)
list3.append(green)
print("情况总数共出现:",flag)
list4=random.choices(range(0,flag),k=3)
print('随机输出三个样例情况')
for i in list4:
print('红色,黄色,绿色分别是:',list1[i],list2[i],list3[i])
demo2:
# @Time : 2021/3/11 16:27
# @Author : ArLin
# @File : demo2.py
# @Software: PyCharm
import numpy as np
from matplotlib import pyplot as plt
import random
listx=[0]
listy=[0]
x=0
y=0
for i in range(0,1000,1):
a=random.randint(1,4)
if a==1:
x=x+1
y=y
elif a==2:
x=x-1
y=y
elif a==3:
x=x
y=y+1
else:
x=x
y=y-1
listx.append(x)
listy.append(y)
#print('输出',listx,listy)
plt.title("demo2")
plt.plot(listx,listy,'go-')
plt.show()
三、结果分析与预测
结果截图:
demo1:
demo2:
四、实验总结
1.出现的问题
问题1:
Demo1中我刚开始写的时候得不出正确的输出结果,
解决方法:
经过检查后发现我的range(start, stop,step)的stop是不包含stop的
而我stop写的是我想去取的值,所以就导致都不包含最大范围,导致输出不了正确的结果,经过在stop的值+1,问题迎刃而解
问题2:
在随机输出三种情况的选择下,如果我选择单次生成单个随机数的话会导致一定概率随机数相同,我需要的是在第一定范围内,一次性随机生成三个不同的数
解决方法:
经过大量的网上博客的查询,发现可以使用random.choices(range(0,flag),k=3)这个语句可以一次随机产生数据。
问题3:
一开始我的想法是for循环取索引值,然后传入plot,这就导致plot写在循环里,图像最后显示的时候出不来点,能出来也只是彩色小点,也不能自定义啥的
解决方法:
在plot直接传入列表,不写for循环,就可以正常显示了
2.知识点总结:
1. 列表(List):
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同
的类型创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
一些方法:
- list.append(obj): 在列表末尾添加新的对象
- list.count(obj): 统计某个元素在列表中出现的次数
- list.insert(index, obj): 将对象插入列表
- list.remove(obj): 移除列表中某个值的第一个匹配项
2. Range()函数用法:
语法:
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
3. Random()函数:
random() 方法返回随机生成的一个实数
语法使用:
import random
random.random()
3.个人总结:
在之前学过一点点的python,在今天完成实验的整体过程来说不是很困难,就是很多语法要去回忆,发现了问题,解决问题的过程是一件非常令人愉悦的过程。
总的来说这只是学习路程的开始吧,希望接下来的日子继续加油,学到更多的知识。