python基础练习


前言

记录自己的一些学习之路


一、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数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同
的类型创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
一些方法:

  1. list.append(obj): 在列表末尾添加新的对象
  2. list.count(obj): 统计某个元素在列表中出现的次数
  3. list.insert(index, obj): 将对象插入列表
  4. 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,在今天完成实验的整体过程来说不是很困难,就是很多语法要去回忆,发现了问题,解决问题的过程是一件非常令人愉悦的过程。
总的来说这只是学习路程的开始吧,希望接下来的日子继续加油,学到更多的知识。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值