python小练习03

1.绘制奥运五环旗

#奥运五环的绘制
import turtle as t
t.pensize(3)
t.speed(0)
def draw_circles():i=0while i <=4:args = [[-60,0,"blue"],[0,0,"black"],[60,0,"red"],[-30,-30,"yellow"],[30,-30,"green"]]#定义一个参数列表t.penup()t.goto(args[i][0],args[i][1])t.pendown()t.color(args[i][2])t.circle(40)i+=1t.hideturtle()t.done()
draw_circles()

结果及分析:

由于绘制五个不同颜色的环,且存在先后顺序问题,加之这些环的圆心坐标和颜色是可变参数。因此采用定义二维数组的形式来给定参数(这样做的好处是避免代码行数太长,而且很直观)具体做法是:定义i作为二维数组的索引,给定初始值为0,设定while循环,当画完最后一个圆环时结束程序。

2.双弧外摆线的绘制

import turtle as t
import math as m
t.speed(0)
i = 0
while i <=2*m.pi:#描点法绘制双弧外摆线t.penup()x = 3 * 25 * m.cos(i) + 25 * m.cos(3 * i)y = 3 * 25 * m.sin(i) + 25 * m.sin(3 * i)t.goto(x,y)t.pendown()t.dot(5,"black")i+=0.01
t.done()

结果及分析:

引入turtle和math库,并利用while循环,选定2*pi作为循环控制条件,再基于“描点法”绘制函数图像,将点和点之间的间隔设置为0.01,通过对点的绘制进行参数控制进而绘制出双弧外摆线。

3.编写程序绘制下图,使用while 循环的结构程序设计完成。

ch,i= '*',0
args=[5,3,1,3,5]
while i <=4:print("{0: ^5}".format(ch*args[i]))i+=1

结果分析:基本元素为‘*’,解决这个问题的关键在于每行‘*’的个数不一样。定义一个列表储存每行对应基本元素的个数,并使用while循环控制。

4.回数

回数是一种特殊的数,其正向与反向所表示的数值相等。如果数abcd=dcba,则称数abcd为回数,这里a,b,c,d表示0-9之间的数字符号,如1111,1221,2002等。请编写程序,找出并显示1000到9999之间的回数,分行显示,每行显示10个数字。

result = []
for a in range(1,10):for b in range(0,10):for c in range(0,10):for d in range(1,10):if a*1000 + b*100 + c*10 + d == d*1000 + c*100 + b*10 + a:result.append(str(a)+str(b)+str(c)+str(d))
i = 0
while i<len(result): #输出控制函数print("{} ".format(result[i]),end = '')if (i+1)%10 == 0:print()i+=1else:i+=1

结果及分析:

千位和个位除0之外任取,百位和十位并没有约束。代码由两部分组成,第一部分,通过三个嵌套的for 循环进行回文数判断并逐个放入result列表中。

第二部分是对列表元素有控制条件的输出。首先加上一个while循环对索引i控制阈值上限,在输出元素后,利用if-else判断是第几个元素,若是第十个,使用print()进行换行操作。最后i+=1进行变量更新。

5.杨辉三角

实现杨辉三角前10行的输出

def yh_triangle(n):#n为需要输出的行数,n=实际行数-1ls=[]if n == 0:ls = [1]elif n == 1:ls = [[1],[1,1]]else:j = 2ls = [[1], [1, 1]]for i in range(0, n - 1):ls.append([])# 创建[[],[],[],[]],个数取决于nwhile j <= n:ls[j] = [1]for k in range(1, j):ls[j].append(ls[j - 1][k - 1] + ls[j - 1][k ])ls[j].append(1)j += 1p_out(ls)
def p_out(ls): #输出函数for i in range(0,len(ls)):for j in range(0,len(ls[i])):print("{} ".format(ls[i][j]),end='') #嵌套循环输出print()
yh_triangle(9)

结果及分析:

本代码分为两部分:

第一部分是yh_triangle(n)

n为实际需要输出的行数减去1。创建空列表,此列表为2维列表,维数取决于行数。举个例子:若需要输出前3行,此列表为:[[1],[1,1],[1,2,1]],以此类推。由于前两行并不存在特殊的杨辉三角规律,故放在if-elif结构里。倘若行数大于或等于3,创建[[1],[1,1],[]].最后子列表的元素运用杨辉三角规律。

第二部分是p_out(ls)函数

ls在第一个函数结尾调用,其执行逻辑是:通过两个嵌套循环进行二维列表元素的遍历输出。在第二个循环结束时换行。

6.编写函数myfunc(x,n)

求多项式s=x+xx+xxx+xxxx+……+xx…x的和,并返回求出的和。其中x是1-9的数字,最后一项是n位都是x的数字。例如 x=2,n=6时输出 246912.

def myfunc(x,n):x = str(x)if n==0:return 0else:return int(x*n) + int(myfunc(x, n - 1))
result = myfunc(2,6)
print(result)

结果及分析:

本代码使用了函数递归完成该题目,以x=2,n=6来说明。当调用此函数时,先将x转化为字符形式。进入if判断,当n == 0时,返回0,当n不为0时,int(x*n)=22222,并再次调用myfunc()函数。int(x,n)=2222,依次类推,最后结果为:0+2+22+222+2222+22222=246912。

7.编写函数求余弦函数的近似值

用下列公式求cos(x)的近似值,精确到最后一项绝对值小于0.01.

例如cos(-3.14)=-9.999899

import math as m
def cos(x):cos,j,a,i= 0,0,1,0while abs(a)>0.01:a = (pow(x,i)/m.factorial(i))i =i+ 2b = (-1)**(j)j = j+1c = a * bcos = cos + celse:return cos
m = cos(-3.14)
print("{:.6f}".format(m))

结果及分析:

本代码根据要求将cosx的公式进行了数学表达,总共拆分成了两个部分,一部分是“±”,一部分是数的阶乘。通过引入math库实现阶乘的简单实现。实际上,本题也可以利用函数递归完成,但我考虑到第一问已经用了,所以这里换了一种方法。

8.亲密数

如果有两个自然数a和b,a的所有因子(比a小且能整除a的自然数)之和恰好等于b,并且b的所有因子之和恰好等于a,则称a和b是一对亲密数。例如220和284,因为220的全部因子(除去本身)相加是1+2+4+5+10+11+20+22+44+55+110=284,284的全部因子(除去本身)相加是1+2+4+71+142=220.请用户输入一个整数m,输出比m小的所有亲密数。

def s_num(n):#找出比n小的所有数,不包含nfor i in range(1,n):factor(i)#将找到的小于n的数传递给factor函数if i == n-1:search(result)#当完成小于n的所有数的对应因数相加时,调用search函数进行亲密数寻找
def factor(m):#factor函数,找出m的因数并相加,在此基础上创建一个字典,键(数m)-值(对应因数之和)i= 1while i < m:#寻找因数并求和sum = 0if m % i == 0:result[m] = result.get(m,0)+ii += 1else:i += 1
def search(result):res = []for key, value in result.items():#依据亲密数的性质进行选择if value in result and result[value] == key and value != key:res.append((key, value))for item in res:#去除冗余if item[0]>item[1]:res.remove(item)print(res)
result = {}
s_num(100000)

结果及分析:

代码分为三个模块,第一个s_num(n),找出所有比n小的数且不包含n。第二个factor(m),寻找数m的所有因数,并将每个小于n的数作为键,把其因数之和作为值储存在result字典中。第三个search(result)函数,以字典result作为输入量,并用for循环遍历键值对。其中if结构的第一个条件判断当前value是否在字典result的键中(找出因数之和相等的数是否存在),第二个条件判断当前value对应的键的值是否等于key,第三个条件判断value是否等于key,这三个条件都满足则将当前的键值对添加到res中。

=====================================

欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lua vm 二: 查看字节码、看懂字节码

本文讲一讲如何查看 lua 的字节码&#xff08;bytecode&#xff09;&#xff0c;以及如何看懂字节码。 以下分析基于 lua-5.4.6&#xff0c;下载地址&#xff1a;https://lua.org/ftp/ 。 1. 查看字节码 1.1 方法一&#xff1a;使用 luac luac 是 lua 自带的编译程序&#x…

MySQL(三) - 基础操作

一、索引 由于我们在使用数据库的时候&#xff0c;大部分操作的都是查询操作&#xff0c;但是我们每一次进行查询都需要遍历一遍表中所有数据&#xff0c;这会花费O(n)的时间&#xff0c;因此数据引入了“索引” 也就是在底层使用了数据结构来进行优化查询的操作&#xff0c;但…

【TB作品】MSP430F149单片机,广告牌,滚动显示

LCD1602滚动显示切换播放暂停字符串 显示Public Places 显示No Smoking 播放 暂停 部分代码 char zifu1[] "Public Places "; char zifu2[] "Class Now "; char zifu3[] "No admittance "; char *zifu[] { zifu1, zifu2, zifu3 }…

优思学院|客户质量工程师CQE岗位的未来发展,你怎么看?

在现代工业的发展背景下&#xff0c;客户质量工程师&#xff08;CQE&#xff09;正逐渐成为企业质量管理体系中的关键角色。随着全球化和数字化的不断推进&#xff0c;CQE的职责不仅限于传统的质量控制&#xff0c;更包括了质量管理体系的设计和优化、客户关系的管理、以及在整…

【UML用户指南】-06-面向对象建模-关系(relationship)

目录 1、面向对象建模常见的关系 2、关系的组成元素 3、依赖关系 4、泛化关系 5、关联关系 关联的四种修饰 1.名称 2.角色 3.多重性 4.聚合 6、常用建模技术 6.1、对简单依赖建模 6.2、对单继承建模 6.3、对结构关系建模 1、面向对象建模常见的关系 依赖 &#x…

pyqt绘制各种直线

pyqt绘制各种直线 介绍效果代码 介绍 使用pyqt绘制各种直线 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QPen, QPainterPath, QColor, QBrush from PyQt5.QtCore import Qt, QPoint, QLineF, QPointFclass…

JVM 指针压缩

运用java内存对齐填充&#xff0c;对java内存进行8字节划分&#xff0c;java对象指针映射到每个划分区域上&#xff0c;使得4个字节&#xff08;32位&#xff09;表示2^32个地址&#xff0c;从而使4个字节指针映射32G内存空间。 1.为什么进行指针压缩&#xff1a; jvm从32位变…

【全开源】Java代驾小程序APP代驾跑腿源码微信小程序代驾源码

&#x1f697;代驾小程序&#xff1a;便捷、安全的出行新选择 一、引言&#xff1a;出行新风尚 在如今繁忙的都市生活中&#xff0c;出行问题一直是人们关注的焦点。代驾小程序的出现&#xff0c;为我们提供了一种便捷、安全的出行新选择。无论是酒后不能驾车&#xff0c;还是…

牛客网刷题 | BC116 [NOIP2013]记数问题

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 试计算在区间1 到n…

LeetCode:环形链表II

文章收录于LeetCode专栏 LeetCode地址 环形链表II 题目 给定一个链表&#xff0c;返回链表开始入环的第一个节点。如果链表无环&#xff0c;则返回null。   为了表示给定链表中的环&#xff0c;我们使用整数pos来表示链表尾连接到链表中的位置&#xff08;索引从0开始&#…

安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案

未成年人被誉为祖国的花朵&#xff0c;是我们国家的未来。然而&#xff0c;最近频繁曝出的未成年霸凌事件却引发了社会的广泛关注。这些事件手段残忍&#xff0c;事态恶劣&#xff0c;引发了全社会对如何保护未成年身心健康、规避霸凌事件发生的深刻思考。 为了更好地保障学生的…

使用软件分享--剪映(不需要会员版)剪映 Jianying_pro_3_2_0_8778_beta9_jianyingpro_beta(Windows)

专栏介绍&#xff1a;本专栏主要分享一些实用的软件&#xff08;Po Jie版&#xff09;&#xff1b; 声明1&#xff1a;软件不保证时效性&#xff1b;只能保证在写本文时&#xff0c;该软件是可用的&#xff1b;不保证后续时间该软件能一直正常运行&#xff1b;不保证没有bug&am…

深度学习-06-手动进行反向传播

深度学习-06-手动进行反向传播 本文是《深度学习入门2-自製框架》 的学习笔记&#xff0c;记录自己学习心得&#xff0c;以及对重点知识的理解。如果内容对你有帮助&#xff0c;请支持正版&#xff0c;去购买正版书籍&#xff0c;支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

【网关】工业智能网关-02

一 公司简介 保定飞凌嵌入式技术有限公司始于2006年&#xff0c;是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业&#xff0c;是国内最早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累&#xff0c;公司拥有业内一流的软硬件研发团队&#xff0c;在北京…

SuperMap GIS基础产品FAQ集锦(20240603)

一、SuperMap iDesktopX 问题1&#xff1a;请教一下&#xff0c;桌面把火星坐标系的数据投影转换为4326坐标系数据如何才能没有偏移呢&#xff1f; 11.1.1 【解决办法】可以使用iDesktopX提供的“电子地图坐标转换”插件实现对火星坐标系数据的纠偏。 问题2&#xff1a;请教…

麦肯锡:ChatGPT等生成式AI应用激增,大中华区增长最快

全球顶级咨询公司麦肯锡&#xff08;McKinsey & Company&#xff09;在官网发布了《he state of AI in early 2024:Gen AI adoption spikes and starts to generate value》&#xff0c;一份关于生成式AI应用的调查报告。 麦肯锡对多个国家/地区的1,363位管理者进行了调查…

前端表单校验完成之后,点击确认功能无反应FormInstance, FormRules

**产生原因&#xff1a;可能是在el-form 中添加的ref 前面加了“&#xff1a;”&#xff0c;也可能是ref中的值写错了** FormInstance, FormRules

海外仓平台系统选择指南:中小海外仓如何选到经济实惠的WMS系统

对于中小海外仓来说&#xff0c;选择一套性价比高、功能又比较齐全的系统还是很关键的&#xff0c;这直接关系到海外仓的运转效率和盈利能力。 今天我们就来探讨一下&#xff0c;针对中小海外仓这个群体&#xff0c;要怎么才能选到经济实惠又功能齐全的wms系统。 1、性价比—…

【Microelectronic Systems】

PART1 嵌入式系统概述与玩转mbed 1 嵌入式系统&#xff0c;微控制器&#xff0c;与ARM 1.1什么是嵌入式系统&#xff1f; 微处理器不仅仅存在于通用计算机中&#xff0c;也可以安置在一些不需要计算的设备内部&#xff0c;比如洗衣机&#xff0c;摄像机。微处理器常常可以控制…

vscode快捷键英文单词对照表

今天想改我的vscode快捷键&#xff0c;unfoldall这条跟我其他的ide都不一样&#xff0c;我得挨个记……但是ctrlshiftp一打开快捷键 点击右侧齿轮进行快捷键录制&#xff0c;但是我这次点左边进去查看了一下unfoldall当前是什么 后来看到了……这些oem_5是什么鬼&#xff1f; {…