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…

CF Round 368 (Div. 2) C. Pythagorean Triples【数学 构造】

Codeforces Round 368 (Div. 2) C. Pythagorean Triples 题意&#xff1a; 给你一个整数n&#xff0c;让你构造另两个整数满足三角形的勾股定理。 思路&#xff1a; 首先&#xff0c;n < 2无解 由题意得&#xff1a;a^2 b^2 c^2&#xff1b;不妨设n a&#xff0c;则…

【AIGC半月报】AIGC大模型启元:2024.06(上)

AIGC大模型启元&#xff1a;2024.06&#xff08;上&#xff09; (1) ChatTTS&#xff08;语音合成项目&#xff09; (1) ChatTTS&#xff08;语音合成项目&#xff09; 2024.06.01 ChatTTS 文本转语音项目爆火出圈&#xff0c;引来大家极大的关注。短短三天时间&#xff0c;在…

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;更包括了质量管理体系的设计和优化、客户关系的管理、以及在整…

Flutter 中的 ToggleButtonsTheme 小部件:全面指南

Flutter 中的 ToggleButtonsTheme 小部件&#xff1a;全面指南 Flutter&#xff0c;作为由 Google 开发的跨平台 UI 框架&#xff0c;为开发者提供了丰富的组件来构建现代化的应用程序。ToggleButtons 是 Material Design 组件库中的一个组件&#xff0c;它允许用户从一组选项…

AI的绘画工具有哪些?

AI绘画工具利用人工智能技术帮助用户生成艺术作品或进行图像编辑&#xff0c;以下是一些AI绘画工具的列表&#xff1a; 1. 腾讯智影AI绘画&#xff1a;提供在线智能绘画工具&#xff0c;用户可以通过输入关键词和选择不同的效果预设来生成艺术作品。 2. Stylar&#xff1a;一…

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

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

遍历数组1

package demo; import java.util.ArrayList; public class Arrilist { public static void main(String[] args) { ArrayList<String>listnew ArrayList<>(); list.add("汤神"); list.add("yyx"); list.add("hong go…

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;还是…

开放式虚拟化格式1.0和2.0有什么区别

开放式虚拟化格式&#xff08;Open Virtualization Format&#xff0c;简称OVF&#xff09;是一种用于描述、打包、和分发虚拟机的标准格式。OVF 1.0和OVF 2.0是这个标准的两个不同版本。以下是它们之间的一些主要区别&#xff1a; 1. **扩展性**&#xff1a; - OVF 1.0主要…

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

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

深度学习之动量momentum介绍

本章节将介绍深度学习中动量的相关概念和应用。 1. 动量的基本原理 动量是一种用于加速梯度下降的技术。 它通过累积过去梯度的指数加权平均来计算当前更新方向。 这样可以增强梯度下降的稳定性,加快收敛速度。 2. 动量的数学公式 动量更新公式为:v γv - η∇L(θ) 其中v是…

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…

深度学习中多模态的融合策略

在深度学习中&#xff0c;多模态&#xff08;multimodal&#xff09;融合策略用于集成来自不同模态的数据&#xff0c;以提升模型的性能和泛化能力。多模态数据可以包括文本、图像、音频、视频、传感器数据等&#xff0c;通过有效融合这些不同类型的数据&#xff0c;能够从中提…