实验1:基础

**分支结构:**if……elif……elif……else……
**循环结构:**while;for……
其中循环中利用in,not in等关键字可以遍历列表(list),字典等数据结构
利用range(0,n)可以生成一系列数字1~n-1
数据类型:
数字,布尔型,字符串等
用到的高级数据类型:
列表:插入元素,删除元素
.append(参数)
.pop(参数)
.insert(参数1,参数2)

字符串操作的方法:
.isdigit()
.isupper()
.islower()
.upper()
.lower()

实验2:Hangman游戏设计

实验3:Tic Tac Toe(井字棋)游戏设计

一、\t转义字符 平常用得比较少,这次在画棋盘上很有用
二、random在Python中的使用方法
1.random.random()
随机生成0-1之间的小数
2.random.uniform(min,max)
随机生成min-max之间的小数
3.random.randint(min,max)
同2,but min>max会报错
4.random.choice(元组/列表/range()/字符串)

三.theBoard = [’ '] *10 极速生成一个list
四.同时得到两个参数
if letter is ‘X’, return [‘X’,‘O’]
else return [‘O’,‘X’]

实验4:DNA翻译

默认的文件路径为相对路径,虽然放在了一个文件夹,但依然打不开= =于是我将他改成了绝对路径;我的文件绝对路径是C:\Users\86133\Desktop\dna.txt
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
查阅资料后发现:在windows系统当中读取文件路径可以使用,但是在python字符串中\有转义的含义,所以我们需要采取一些方式使得\不被解读为转义字符
解决方法中选择了第二种
1在路径前面加r,即保持字符原始值的意思
2替换为双反斜杠
3替换为正斜杠

学到的一些知识点:
1 .replace方法
str.replace(old, new[, max])
(max为替换不超过max次,replace不会改变原string的内容)
2.文件的打开与关闭 f = open(‘a.txt’,‘wt’)
a.close() 文件名.close()

实验5:凯撒密码

一.创建空字典
dic = {}
二.创建非空字典

1.Dic = {'name':'naruto','age':18,}
2.dic = {1 : 'One',2 : 'Two',}
3.
dic = {'YAZHOU':['中国','日本','韩国','伊朗'],'OUZHOU':['英国','法国','德国'],'MEIZHOU':['美国','加拿大','墨西哥']}
4.
dic = {(1970,1,1) : "test year"}

修改:字典[键] = 值
删除:del 字典[键]
通过 字典.keys() 得到所有的键组成的列表
通过 字典.values() 得到所有的值组成的列表
通过 字典.items() 得到所有的键值对所组成的列表

实验6:加解密文本文件

按照二进制数异或的原理,对文本文件进行加解密。
1.加密操作
首先将文本文件转换为二进制数,再生成与该二进制数等长的随机密钥,将二进制数与密钥进行异或操作,得到加密后的二进制数。
2.解密操作
将加密后的二进制文件与密钥进行异或操作,得到原来的二进制数,再将二进制数恢复成文本文件。

①散列加密

import hashlib
a='password'.encode('utf-8')
print('blake2b:',hashlib.blake2b(a).hexdigest())
print('blake2s:',hashlib.blake2s(a).hexdigest())
print('md5:',hashlib.md5(a).hexdigest())
print('sha1:',hashlib.sha1(a).hexdigest())
print('sha224:',hashlib.sha224(a).hexdigest())
print('sha256:',hashlib.sha256(a).hexdigest())
print('sha384:',hashlib.sha384(a).hexdigest())
print('sha3_224:',hashlib.sha3_224(a).hexdigest())
print('sha3_256:',hashlib.sha3_256(a).hexdigest())
print('sha3_384:',hashlib.sha3_384(a).hexdigest())
print('sha3_512:',hashlib.sha3_512(a).hexdigest())
print('sha512:',hashlib.sha512(a).hexdigest())

②python函数引用多个参数
*表示可以接受多个参数,并放入一个元组中
**函数接受参数后,返回字段
③secret库的token_bytes 适合生成随机密钥
④.Encode()方法
str.encode(encoding=‘UTF-8’,errors=‘strict’)
encoding – 要使用的编码,如"UTF-8"。Base64
errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
用于返回编码后的字符串
对应decode方法,用于解码

实验7:暴力破解MD5值

MD5算法原理:MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value)MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

Itertools 迭代器模块->高效率的循环
1.无限迭代的迭代器:
Count,islice,cycle, repeat
2.可终止迭代器
Accumulate(可迭代对象[,函数])chain(*可迭代对象)
Groupby()把迭代器中相邻的重复元素挑出来放在一起

实验8:模拟蒙特·卡罗法计算圆周率近似值

蒙特·卡罗方法又称统计实验法,是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中包括圆周率近似值的计算问题。假设有一块边长为2的正方形模板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在模板上(更多时候是落在单位圆内)。如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。

程序实现

import random
sum1=0
count=0
while sum1<=1000000000:x = random.uniform(-1,1)y = random.uniform(-1,1)if x*x+y*y<=1:count+=1sum1+=1
pai=count*4.0/sum1
print(pai)

一、基本随机函数
seed(a=None)
初始化给定的随机数种子,默认为当前系统时间
random.seed(10) #产生种子10对应的序列

random()
生成一个[0.0,1.0)之间的随机小数
random.random()
0.5714025946899135 #随机数产生与种子有关

二、扩展随机数函数
函数 描述
randint(a,b) 生成一个[a,b]之间的整数

random.randint(10,100)

randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数

random.randrange(10,100,10)

getrandbits(k) 生成一个k比特长的随机整数

random.getrandbits(16)
37885

uniform(a,b) 生成一个[a,b]之间的随机小数

random.uniform(10,100)
16.848041210321334

choice(seq)
序列相关 从序列中随机选择一个元素

random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])
8

shuffle(seq)
序列相关 将序列seq中元素随机排列,返回打乱后的序列

s=[1, 2, 3, 4, 5, 6, 7, 8, 9];
random.shuffle(s);
print(s)
[9, 4, 6, 3, 5, 2, 8, 7, 1]

Python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

如下所示:

Python 表达式 结果 描述
len([1, 2, 3]) 3 长度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
[‘Hi!’] * 4 [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代

Python在函数中使用*和**接收元组和列表

当要使函数接收元组或字典形式的参数 的时候,有一种特殊的方法,它分别使用*和*前缀 。这种方法在函数需要获取可变数量的参数*的时候特别有用。

[注意]
[1] 由于在args变量前有前缀 ,所有多余的函数参数都会作为一个元组存储在args中* 。如果使用的是****前缀** ,多余的参数则会被认为是一个字典的健/值对
[2] 对于def func(args):,args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用func(1, 2, 3)args就表示(1, 2, 3)这个元组
[3] 对于def func(args):,args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用func(a=‘I’, b=‘am’, c=‘wcdj’) ,args就表示{‘a’:‘I’, ‘b’:‘am’, ‘c’:‘wcdj’}这个字典
[4] 注意普通参数与和**参数公用的情况,一般将和**参数放在参数列表最后。

[元组的情形]

#! /usr/bin/python
# Filename: tuple_function.py
# 2010-7-19 wcdj
def powersum(power, *args):'''Return the sum of each argument raised
to specified power.'''total=0for i in args:total+=pow(i,power)return total
print 'powersum(2, 3, 4)==', powersum(2, 3, 4)
print 'powersum(2, 10)==', powersum(2, 10)
########
# output
########
powersum(2, 3, 4)==25
powersum(2, 10)==100

[字典的情形]

#! /usr/bin/python
# Filename: dict_function.py
# 2010-7-19 wcdj
def findad(username, **args):'''find address by dictionary'''print 'Hello: ', usernamefor name, address in args.items():print 'Contact %s at %s' % (name, address)
findad('wcdj', gerry='gerry@byteofpython.info', /wcdj='wcdj@126.com', yj='yj@gmail.com'

t = (1,) # 一个元素元组的定义注意有逗号

Python 实验1-8相关推荐

  1. python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...

    TensorFlow作业代写.代做Python程序语言作业.代写github课程作业.Python实验作业代写 日期:2019-07-10 10:34 Python Practical Examine ...

  2. 代写python作业费用标准_代做159.272作业、代写Programming Paradigms作业、代做Python实验作业、代写Java/c++编程作业代写Database|代做R...

    代做159.272作业.代写Programming Paradigms作业.代做Python实验作业.代写Java/c++编程作业代写Database|代做RComputational Thinkin ...

  3. python实验项目_Python3实验 项目结构(文件操作)

    Python实验 项目结构(文件操作) 一.代码 # 姓名:池鱼奥 # 学号:201700000001 import os import time def make_project(project_n ...

  4. 华中农业大学python实验题

    知识汇总 博客 地址 内容 华中农业大学Python期末速成笔记 https://blog.csdn.net/m0_46521785/category_10626330.html 华中农业大学pyth ...

  5. 2022年5月22日-Taylor级数的python实验

    Taylor级数的python实验 引言 众所周知,对于任意一个函数,我们可以选用一组基函数拟合这个函数.什么,你不知道!好吧,没有关系,这是一个很简单的东西,相信在我的解释下,你很快就懂了! 泰勒级 ...

  6. Python实验四:Python程序设计之文件

    微信公众号:创享日记 发送:python实验 获取完整清晰报告和源码以及其它资源 前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家.(点击跳转人工智能学习资料 ...

  7. Python实验报告一 python基础试题练习

    实验内容: 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变.(提示:使用切片.) 2.编写程序,输入两个集合 setA 和 setB,分别输出它们 ...

  8. python实验指导书燕山大学答案_Python实验指导书课件.doc

    Python实验指导书 马 川 燕山大学计算机教学实验中心 2017.5 目录 目录 实验一: PYTHON 程序设计之初窥门径 ................................... ...

  9. python实验---猜谜语闯关游戏

    python实验-猜谜语闯关游戏 题目 ​ 设计并实现一款猜谜语的闯关游戏.玩家根据给出的谜面,输入谜底.游戏根据玩家给出的谜底正确与否,决定是否进入下一关. 如果玩家猜错,则闯关失败.如果玩家猜对, ...

  10. python实验指导书_Python实验指导书

    Python实验指导书 Python实验指导书 马 川 燕山大学计算机教学实验中心 2017.5 目录 实验一:Python程序设计之初窥门径2 实验二:Python程序设计之结构与复用7 实验三:P ...

最新文章

  1. hihoCoder挑战赛29
  2. 移民申请--申请澳大利亚技术移民的职业评估有技巧(2)
  3. 【入门基础】Numpy基础20问
  4. 掉电引起的ORA-1172错误解决过程(二)
  5. Jmeter中一些概念的理解——90%响应时间、事务、并发
  6. oracle父游标和子游标,诊断Oracle high version count(高版本游标)问题
  7. python中configparser详解_Python中的ConfigParser模块使用详解
  8. 跑步进入全站 HTTPS ,这些经验值得你看看
  9. Python实现四个经典小游戏合集
  10. html5中required标签必填项
  11. OAuth2及sa-token框架实践
  12. 华师大计算机在线作业,华东师范大学计算机考研复试机试习题
  13. Spark Streaming 2.0 读取Kafka 0.10 小例子
  14. 目标检测网络---评价指标
  15. 【转载】城域网IPv6过渡技术—NAT444与DS-lite详解
  16. C++智能指针shared_ptr的使用方法
  17. pygraphviz的安装与红黑树可视化
  18. 拓展SOUI中SImRichEdit控件的视频OLE控件(VideoOle)
  19. 35岁以后的大龄程序员,该何去何从?
  20. python逆序输出字符串_python实现对指定输入的字符串逆序输出的6种方法

热门文章

  1. APP功能测试点(全)
  2. Java面试题上篇(转)
  3. java面试笔试题50道及答案
  4. android 2k 屏幕 字体模糊,2k显示器怎么会字体模糊
  5. 用PS做法线,高光贴图的最简图文教程
  6. 图像增强:opencv去除图片的高光
  7. PotPlayer播放DST音频的mkv电影解码错误
  8. 设计模式学习(汇总版)
  9. CREO图文教程:三维设计案例之足球设计图文教程之详细攻略
  10. 二次规划及qpoases简要介绍