2020-11-08 Windows应用程序设计作业(Python版实现)(一)简单语法
Windows应用程序设计作业(Python版实现)
作业1-语法
1、任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。
'''
函数名称:test_for_rule
函数功能:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。
最新版本:2020/10/20
'''
def test_for_rule(n, change_list):change_list.append(n)if n == 1: # 若干次后结果为1 (递归出口)returnif n % 2 == 1: # 该自然数为奇数n = (int) (n * 3 + 1)else: # 该自然数为偶数n = (int) (n / 2)test_for_rule(n, change_list) # 递归调用'''
主 函 数(程序入口)
最新版本:2020/10/20
作 者: ZhaoYiman
'''
if __name__ == '__main__':while True:n = (int)(input("Please input a nature number:")) # 输入一个自然数change_list = [] # 创建一个list列表,存所有的变化过程test_for_rule(n,change_list) # 函数调用print(change_list) # 结果输出
2、给定一个含有n个元素的数组,找出数组中的两个元素X和Y使得abs(x-y)最小。
'''
函数名称:find_two_elements
函数功能:给定一个含有n个元素的数组,找出数组中的两个元素X和Y使得abs(x-y)最小。
最新版本:2020/10/20
'''
def find_two_elements(n_array):n_array.sort() # 原数组排序diff_array = [] # 依次存储相邻两值之差for i in range(len(n_array) - 1):diff_array.append(abs(n_array[i+1] - n_array[i]))# print(diff_array)value, x, y = 0, n_array[0], n_array[1] # 初始化for i in range(len(diff_array)): # 遍历整个差值数组,并进行动态修改if diff_array[i] < diff_array[value]:value, x, y = i, n_array[i], n_array[i+1]return x, y # 返回结果,两个差值最小的元素'''
主 函 数(程序入口)
最新版本:2020/10/20
注 释:Python 没有内置对数组的的支持,但可以使用 Python 列表代替。
'''
if __name__ == '__main__':n = (int)(input("Please input the number of the array:"))tmp = input("Please input n elements:")array = [int(i) for i in tmp.split()] # 以空格为分割,存储n个元素x, y = find_two_elements(array)print(f'数组中使得abs(x-y)最小的两个元素为:{x}, {y}')
3、生成学号后四位开始的100之内的30个随机数用两种算法进行排序(其中一个为递归算法)。
import random
'''
函数名称:random_array
函数功能:生成学号后四位开始的100之内的30个随机数
最新版本:2020/10/21
'''
def random_array(beg):end = beg + 100r_array = random.choices(range(beg, end + 1), k = 30, weights = range(beg, end + 1)) # 方法一:随机生成30个,可能重复# r_array = random.sample(range(beg, end + 1), 30) # 方法二:随机生成30个,不会重复 return r_array '''
函数名称:partition
函数功能:快速排序的一次划分函数
最新版本:2020/10/21
# r_array[]: 排序数组
# low : 起始索引
# high : 结束索引
'''
def partition(r_array:list, low:int, high:int):i, j, tmp = low + 1, high, r_array[low]while True:while i < high and r_array[i] <= tmp : # 使用i+=1必须要及时使用哨兵,跳过重复的元素,防止重复元素之间交换形成死循环i += 1while j > low and r_array[j] >= tmp: # 原理同上j -= 1if i >= j:breakr_array[i], r_array[j] = r_array[j], r_array[i] # 交换r_array[low], r_array[j] = r_array[j], r_array[low]return j'''
函数名称:QuickSort
函数功能:快速排序 —— 递归算法
最新版本:2020/10/21
# r_array[]: 排序数组
# low : 起始索引
# high : 结束索引
'''
def QuickSort(r_array, low, high): if low >= high:returnpiviot = partition(r_array, low, high)QuickSort(r_array, low, piviot - 1)QuickSort(r_array, piviot + 1, high)'''
函数名称:QuickSortNonR
函数功能:快速排序 —— 非递归算法
最新版本:2020/10/21
# r_array[]: 排序数组
# low : 起始索引
# high : 结束索引
'''
def QuickSortNonR(r_array, low, high):stack = []stack.insert(0, low) # 头指针入栈stack.insert(0, high) # 尾指针入栈while len(stack) != 0 : # 若栈不为空high = stack.pop(0) # 头指针出栈low = stack.pop(0) # 尾指针出栈piviot = partition(r_array, low, high) if low < piviot - 1:stack.insert(0, low)stack.insert(0, piviot - 1)elif piviot + 1 < high:stack.insert(0, piviot + 1)stack.insert(0, high)'''
主 函 数(程序入口)
最新版本:2020/10/21
'''
if __name__ == '__main__':sno = (int)(input("# Please input your student ID: "))# sno = 2017012749beg_num = sno % 10000r_array = random_array(beg_num)print ("# Randomly generated array —— Recursion Algorithm: ") print(r_array)QuickSort(r_array, 0, len(r_array) - 1)print ("# Sorted array —— Recursion Algorithm: ") print(r_array)random.shuffle(r_array) # 将list中的数据次序打乱,不会生成新的列表print ("# Randomly generated array —— Non-recursion Algorithm: ") print(r_array)QuickSortNonR(r_array, 0, len(r_array) - 1)print ("# Sorted array —— Non-recursion Algorithm: ") print(r_array)
4、元胞自动机(Cellular Automata, 简称CA)是一时间和空间都离散的动力系统。查询和阅读下面文献,将给定整数按照规则X(256种)的N代演进的结果。(按学号后两位,女生为XX规则,男生为1XX规则)
https://www.jianshu.com/p/0d09083c7774
https://blog.csdn.net/bcd_not_cbd/article/details/50479952
https://haokan.baidu.com/v?vid=2605717403108257414
'''
函数名称:MakingRule
函数功能:制定细胞自动机的演变规则 —— 存储结构:字典Dictionary
最新版本:2020/10/22
00110001
['000', '001', '010', '011', '100', '101', '110', '111']
{'111': '0', '110': '0', '101': '1', '100': '1', '011': '0', '010': '0', '001': '0', '000': '1'}
'''
def MakingRule(sno):s_rule = (bin((int)(sno[-2:])))[2:].zfill(8) # zfill()前补零操作 # bin((int)(sno[-2:])) 为 0b110001li_rule = []for i in range(0, 8):li_rule.append((bin(i))[2:].zfill(3)) rule = dict([(li_rule[7 - t], s_rule[t]) for t in range(0, 8)]) # 将迭代规则存储到字典中return rule'''
函数名称:CellularAutomata
函数功能:按照一定的规则验证N代演进结果
最新版本:2020/10/22
'''
def CellularAutomata(N, rule, test_line):print("第 0 代:" + test_line)for i in range(1, N + 1):test_line_new = ''test_line_new = test_line_new + rule[test_line[-1:] + test_line[:2]] # 特殊处理序列首for j in range(0, len(test_line) - 2 ):if j >= 0 and j < len(test_line) - 2:test_line_new = test_line_new + rule[test_line[j: j + 3]] # 中间则遍历处理test_line_new = test_line_new + rule[test_line[-2:] + test_line[:1]] # 特殊处理序列尾test_line = test_line_newprint("第",'%2d '%i, "代:" + test_line)'''
主 函 数(程序入口)
最新版本:2020/10/22
规 则:(49) = (110001)B,规则即:00110001
测试序列:"1100110000000000110011000000000000001100000011000111000000000111"
'''
if __name__ == '__main__':sno = input("请输入你的学号:")print("本程序中元胞自动机的迭代规则为:")rule = MakingRule(sno) # 制定规则print(rule)test_line = "1100110000000000110011000000000000001100000011000111000000000111"while True:N = (int)(input("请输入迭代次数(N>0):"))if N <= 0:print("请按要求输入合法数值!")else: CellularAutomata(N, rule, test_line)
那写看似毫无波澜的日复一日,会在某一天 让你突然发现努力的意义。
无悔昨天 & 感谢今天 & 喜欢明天~
一以贯之的努力,不得懈怠的人生。每天的微小积累,会决定最终的结果,这 就是答案!
2020-11-08 Windows应用程序设计作业(Python版实现)(一)简单语法相关推荐
- 2020-11-08 Windows应用程序设计作业(Python版实现)(五)综合作业 - 汉字版俄罗斯方块+2048
Windows应用程序设计作业(Python版实现) 作业5-综合作业 要求:在作业3的基础上,每个方块随机设置偏旁部首或简单汉字.方块下落停止后,改变俄罗斯方块的消除规则.规则定义为:如果相邻的块能 ...
- 计算机程序设计python的作业_2020高校邦《百度凤巢沙盒系统营销实践》单元测试答案2020中国大学《计算机程序设计(Python)》作业题库...
[单选] 机场情报室的航行通告栏应展示:(). [单选] 各地在向总局上报机场资料时,必须上报机场15千米和50千米范围内的主要障碍物,15千米或50千米是以()为中心. [单选] 在提供原始资料的分 ...
- 2020年电大c语言程序设计作业1答案,2019年最新电大C语言程序设计作业答案.doc
C语言程序设计形成性作业一 C语言程序设计形成性考核册参考答案作业 2009-06-30 23:01 阅读355 评论1 字号: 大大 中中 小小 一. 选择题 1. 在每个C语言程序中都必须包含有这 ...
- 蜗牛学院2020年08月10号作业
** VLAN技术总结: ** VLAN技术原理传统局域网使用HUB,一个HUB就是一个冲突域,所以传统局域网是一个扁平的网络. VLAN实现原理: 静态VLAN 在VLAN管理员最初配置交换机Por ...
- python第六周实验_机器学习 | 吴恩达机器学习第六周编程作业(Python版)
实验指导书 下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...
- 机器学习 | 吴恩达机器学习第六周编程作业(Python版)
实验指导书 下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...
- c语言程序设计作业word版,c语言程序设计Word版
<c语言程序设计Word版>由会员分享,可在线阅读,更多相关<c语言程序设计Word版(19页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可 ...
- python画羊_羊车门作业 Python版
题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...
- python羊车门问题_羊车门作业 Python版
题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...
最新文章
- python基础-变量运算符(3)
- 区分Java拦截器和过滤器
- Arria10_emif
- Tensorflow—tfrecord数据集生成与使用
- STL之deque和其他容器
- pandas时间处理操作
- (转) OpenLayers3基础教程——加载资源
- java两个二进制数求和,Leetcode 67:Add Binary(二进制求和)
- 学业水平考试b能上985吗_这是最好考的985高校,如今被“降级”到双一流B类,真让人惋惜...
- 多行文字或者单行文字的垂直居中解决方案
- Nutch数据集的目录具体内容
- 将数字转换为中文大写(缩写)
- 卡西欧科学计算机使用方法,科学计算器的使用方法
- 应用,传输层协议和端口对应关系
- 双系统笔记本 android,电脑安装双系统 微软 安卓 实现一机多用
- 新浪微博开放平台开发总结
- 高数下-空间几何(一)-向量
- 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
- 苹果xr配置_看看下面这些对比,你就知道苹果x和xr哪个好?
- 基于ArcGIS与高分影像进行绿地变化分析
热门文章
- 鲨鱼土豆-Mac 平台下的土豆官方客户端
- 强大的PDF格式转换器
- html5视频播放器原理,HTML5 - 两款基于JS的视频播放器的使用说明(VideoJS和jPlayer)...
- LabVIEW 2015介绍
- 清华硕士的集体逃离!中科院科研人员自白:我为什么离开北京?
- k3系统 中间层服务器,k3中间层服务器远程
- 攻略:螺旋城的灾难 - 魔兽-经典TD
- 腾讯会议 程序的传入参数
- 最近公共祖先 牛客网 程序员面试金典 C++ Python
- (二) Carla_Ros_Bridge安装教程