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版实现)(一)简单语法相关推荐

  1. 2020-11-08 Windows应用程序设计作业(Python版实现)(五)综合作业 - 汉字版俄罗斯方块+2048

    Windows应用程序设计作业(Python版实现) 作业5-综合作业 要求:在作业3的基础上,每个方块随机设置偏旁部首或简单汉字.方块下落停止后,改变俄罗斯方块的消除规则.规则定义为:如果相邻的块能 ...

  2. 计算机程序设计python的作业_2020高校邦《百度凤巢沙盒系统营销实践》单元测试答案2020中国大学《计算机程序设计(Python)》作业题库...

    [单选] 机场情报室的航行通告栏应展示:(). [单选] 各地在向总局上报机场资料时,必须上报机场15千米和50千米范围内的主要障碍物,15千米或50千米是以()为中心. [单选] 在提供原始资料的分 ...

  3. 2020年电大c语言程序设计作业1答案,2019年最新电大C语言程序设计作业答案.doc

    C语言程序设计形成性作业一 C语言程序设计形成性考核册参考答案作业 2009-06-30 23:01 阅读355 评论1 字号: 大大 中中 小小 一. 选择题 1. 在每个C语言程序中都必须包含有这 ...

  4. 蜗牛学院2020年08月10号作业

    ** VLAN技术总结: ** VLAN技术原理传统局域网使用HUB,一个HUB就是一个冲突域,所以传统局域网是一个扁平的网络. VLAN实现原理: 静态VLAN 在VLAN管理员最初配置交换机Por ...

  5. python第六周实验_机器学习 | 吴恩达机器学习第六周编程作业(Python版)

    实验指导书    下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...

  6. 机器学习 | 吴恩达机器学习第六周编程作业(Python版)

    实验指导书    下载密码:ovyt 本篇博客主要讲解,吴恩达机器学习第六周的编程作业,作业内容主要是实现一个正则化的线性回归算法,涉及本周讲的模型选择问题,绘制学习曲线判断高偏差/高方差问题.原始实 ...

  7. c语言程序设计作业word版,c语言程序设计Word版

    <c语言程序设计Word版>由会员分享,可在线阅读,更多相关<c语言程序设计Word版(19页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可 ...

  8. python画羊_羊车门作业 Python版

    题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...

  9. python羊车门问题_羊车门作业 Python版

    题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...

最新文章

  1. python基础-变量运算符(3)
  2. 区分Java拦截器和过滤器
  3. Arria10_emif
  4. Tensorflow—tfrecord数据集生成与使用
  5. STL之deque和其他容器
  6. pandas时间处理操作
  7. (转) OpenLayers3基础教程——加载资源
  8. java两个二进制数求和,Leetcode 67:Add Binary(二进制求和)
  9. 学业水平考试b能上985吗_这是最好考的985高校,如今被“降级”到双一流B类,真让人惋惜...
  10. 多行文字或者单行文字的垂直居中解决方案
  11. Nutch数据集的目录具体内容
  12. 将数字转换为中文大写(缩写)
  13. 卡西欧科学计算机使用方法,科学计算器的使用方法
  14. 应用,传输层协议和端口对应关系
  15. 双系统笔记本 android,电脑安装双系统 微软 安卓 实现一机多用
  16. 新浪微博开放平台开发总结
  17. 高数下-空间几何(一)-向量
  18. 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
  19. 苹果xr配置_看看下面这些对比,你就知道苹果x和xr哪个好?
  20. 基于ArcGIS与高分影像进行绿地变化分析

热门文章

  1. 鲨鱼土豆-Mac 平台下的土豆官方客户端
  2. 强大的PDF格式转换器
  3. html5视频播放器原理,HTML5 - 两款基于JS的视频播放器的使用说明(VideoJS和jPlayer)...
  4. LabVIEW 2015介绍
  5. 清华硕士的集体逃离!中科院科研人员自白:我为什么离开北京?
  6. k3系统 中间层服务器,k3中间层服务器远程
  7. 攻略:螺旋城的灾难 - 魔兽-经典TD
  8. 腾讯会议 程序的传入参数
  9. 最近公共祖先 牛客网 程序员面试金典 C++ Python
  10. (二) Carla_Ros_Bridge安装教程