前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

Python免费学习资料、代码以及交流解答点击即可加入


几个简单的Python实例,好玩有趣,基础语法。

  • turtle库开始自己的绘画
  • 写一个属于自己的文本进度条
  • 蒙特卡洛方法计算π
  • 分形几何,Koch雪花曲线
  • 输入一组数据,进行简单的统计
  • 小说词频统计,统计三国演义中谁出场率最高
  • 轻松抓住文本主旨:文本词云生成

drawing with turtle

好玩有趣,入门级绘图库turtle,文档在此。
文档中的实例:太阳花

from turtle import *
color('red', 'yellow')
begin_fill()
while True:forward(200)left(170)if abs(pos()) < 1:break
end_fill()
done()

画一个六芒星:

import turtle as t# size传入最大的圆的半径
def draw_Star(size):t.setup(1200, 1000)t.speed(11)t.pensize(2)t.pencolor('grey')for r, pen_size in [(size//7, 3), (size*6//7, 4), (size, 4)]:t.penup()t.goto(0, -r)t.pendown()t.pensize(pen_size)t.circle(r)t.penup()t.goto(0, 0)r = size * 5.5 // 7for i in range(6):t.pendown()t.pensize(3)t.seth(i * 60 + 30)t.fd(r)t.goto(0, 0)t.goto(0, r)t.seth(-150)t.pensize(5)for i in range(6):t.fd(r)t.left(60)r = r - size // 50t.goto(0, r)t.pensize(10)t.seth(-120)t.pencolor('orange')for i in range(3):t.fd(r * (3**0.5))t.left(120)t.penup()t.goto(0, 0)t.seth(30)t.fd(r)t.seth(-180)t.pendown()for i in range(3):t.fd(r * (3 ** 0.5))t.left(120)t.hideturtle()t.done()draw_Star(400)

文本进度条

不停向下打印的版本:

import timedef bar(scale):print('===========执行开始============')for i in range(scale + 1):a = '*' * ib = '.' * (scale - i)c = (i / scale) * 100print('\r{:^3.0f}%[{}->{}]'.format(c, a, b), end = '')time.sleep(0.05)print('\n===========执行结束============')

单行刷新版本:

import timedef pro_bar(scale):print('执行开始'.center(scale // 2, '='))start = time.perf_counter()for i in range(scale + 1):a = '*' * ib = '.' * (scale - i)c = (i / scale) * 100dur = time.perf_counter() - startprint('\r{:^3.0f}%[{}->{}] {:.2f}s'.format(c, a, b, dur), end = '')time.sleep(0.05)print('\n' + '执行结束'.center(scale // 2, '='))pro_bar(50)

单行刷新效果在cmd窗口中运行才有效,IDLE禁\r转义字符。

蒙特卡洛方法计算π

随机数生成使用random库,文档在此。思路即是随机生成点,落在正方形内。计算正方形内的圆内落点与正方形内落点之比,近似为面积之比,随机数越随机,数量越大越准确。

from random import random
from time import perf_counterdef calPI(N = 100):hits = 0start = perf_counter()for i in range(1, N*N+1):x, y = random(), random()dist = pow(x ** 2 + y ** 2, 0.5)if dist <= 1.0:hits += 1pi = (hits * 4) / (N * N)use_time = perf_counter() - startreturn pi, use_timePI, use_time = calPI(1000)
print('\nuse Monte Carlo method to calculate PI: {}'.format(PI))
print('use time: {} s'.format(use_time))

递归绘制Koch雪花曲线

koch雪花曲线是分形几何中的一个经典曲线。
使用turtle库,简单的递归即可绘制。

import turtledef koch(size, n):if n == 0:turtle.fd(size)else:for angle in [0, 60, -120, 60]:turtle.left(angle)koch(size/3, n-1)def main():turtle.setup(1200, 1000)turtle.speed(11)turtle.penup()turtle.goto(-300, 200)turtle.pendown()turtle.pensize(2)level = 4koch(600, level)  # 3阶科赫曲线turtle.right(120)koch(600, level)turtle.right(120)koch(600, level)turtle.hideturtle()turtle.done()main()

简单统计

输入一组数据,计算均值,方差,中位数,绝对相对误差。

# -*- coding: utf-8 -*-# 输入数据
def getNum():nums = []iNumStr = input('please input a sequence of numbers (enter to exit): ')while iNumStr != '':nums.append(eval(iNumStr))iNumStr = input('please input a sequence of numbers (enter to exit): ')return nums# 平均数
def average(numbers):return sum(numbers) / len(numbers)# 标准差
def dev(numbers, average):sdev = 0.0for num in numbers:sdev += (num - average) ** 2return pow(sdev / len(numbers), 0.5)# 中位数
def median(numbers):sorted(numbers)size = len(numbers)if size % 2 == 0:return (numbers[size//2-1] + numbers[size//2]) / 2else:return numbers[size//2]# 绝对与相对误差
def rel_dev(numbers, average):_max = max(abs(max(numbers) - average), abs(min(numbers) - average))return _max, _max / averagedef main():nums = getNum()if len(nums) == 0:print('no data')else:ave = average(nums)devs = rel_dev(nums, ave)print('和:{:.4f},平均数:{:.4f},中位数:{:.4f},方差:{:.4f},绝对误差:{:4f},相对误差:{:.4f}' \.format(sum(nums), ave, median(nums), dev(nums, ave), devs[0], devs[1]))if __name__ == '__main__':main()

小说词频统计

策略:

  • 中文小说:使用第三方库jieba切分,统计
  • 英文小说:去掉特殊干扰字符,直接切分为单词,遍历统计

统计莎士比亚经典名著:Hamlet。统计最高出现单词。

def getText():txt = open('novels/hamlet.txt', 'r').read()txt = txt.lower()   # 去掉大小写干扰# 去掉特殊符号干扰for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\'':txt = txt.replace(ch, ' ')return txthamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
# 将其按照词出现数量按照降序排列
items.sort(key = lambda x : x[1], reverse = True)for i in range(20):word, count = items[i]print('{:^10}{:^10}'.format(word, count))

统计名著三国演义中人物名字出现次数:

其中一个jieba库是一个对中文文本依照汉字间关联概率进行词组划分的第三方库,使用简单,且非常好用,文档在此。

import jiebadef getWords():txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()words = jieba.lcut(txt)counts = {}for word in words:if len(word) == 1:continueelse:counts[word] = counts.get(word, 0) + 1word_list = list(counts.items())word_list.sort(key = lambda x : x[1], reverse = True)return word_list

进行人肉优化,去掉不是人名的词语,并将一些指同一个人物的词合并到一个人物下。

import jiebadef countWords(excludes, merges):txt = open('novels/threekingdoms.txt', 'r', encoding = 'utf-8').read()words = jieba.lcut(txt)counts = {}# 取出长度为一的词和符号以及excludes中的词for word in words:if len(word) == 1 or word in excludes:continueelse:counts[word] = counts.get(word, 0) + 1# 合并名称相同的人名for merge in merges:for name in merge[1]:counts[merge[0]] += counts.get(name, 0)del counts[name]word_list = list(counts.items())word_list.sort(key = lambda x : x[1], reverse = True)return word_listexcludes = {'却说','二人','不可','主公','陛下','汉中','只见','众将','后主','蜀兵','上马','大叫','太守','此人','夫人','先主','后人','背后','城中','天子','一面','何不','大军','忽报','先生','百姓','何故','不能','如此','如何','然后','先锋','不如','赶来','原来','令人','江东','下马','喊声','正是','徐州','忽然','荆州','左右','军马','因此','成都','不见','未知','大败','大事','之后','一军','引军','起兵','军中','接应','引兵','次日','大喜','进兵','大惊','可以','以为','大怒','不得','心中','下文','一声','追赶','粮草','天下','东吴','于是','都督','曹兵','一齐','分解','回报','分付','只得','出马','三千','大将','许都','随后','报知','今日','不敢','魏兵','前面','之兵','且说','众官','洛阳','领兵','商议','军士','星夜','精兵','城上','之计','不肯','相见','其言','一日','而行','文武','襄阳','准备','若何','出战','亲自','必有','一人','人马','不知','何人','此事','之中','伏兵','祁山','乘势','忽见','大笑','樊城','兄弟','首级','立于','西川','传令','当先','五百','一彪','坚守','此时','之间','投降','五千','埋伏','长安','三路','遣使','将军','关兴','军师','朝廷','三军','大王','回见','大将军','必然','将士','是夜','小路' }merges = [  ('刘备',('玄德','玄德曰','玄德问','刘玄德','玄德大','玄德自','玄德闻','皇叔','刘皇叔')),('关羽',('关公','云长','关云长')),('孔明',('诸葛亮','孔明曰','孔明笑','孔明之','孔明自')),('曹操',('丞相','孟德','曹公','曹孟德')),('张飞',('翼德','张翼德'))]word_list = countWords(excludes, merges)
for i in range(30):word, count = word_list[i]print('{0:^10}{1:{3}^10}{2:^15}'.format(i+1, word, count, chr(12288))) # chr(12288)为中文空格

结果如下,当然其中类似将军、英雄、主公、大哥、君这种词语无法判断指的是谁,这里仅统计能够判断的,所以这里只能做一个相对的参考。

    1         刘备         1578      2         曹操         1485      3         孔明         1485      4         关羽          820      5         张飞          393      6         吕布          300      7         赵云          278      8         孙权          264      9         司马懿         221      10        周瑜          217      11        袁绍          191      12        马超          185      13        魏延          180      14        黄忠          168      15        姜维          151      16        马岱          127      17        庞德          122      18        孟获          122      19        刘表          120      20        夏侯惇         116      21        董卓          114      22        孙策          108      23        鲁肃          107      24        徐晃          97       25        司马昭         89       26        夏侯渊         88       27        王平          88       28        刘璋          85       29        袁术          84       30        吕蒙          83

好玩又有趣的Python实例小游戏代码,我能在电脑上琢磨一天相关推荐

  1. python小游戏代码200行左右,python编程小游戏代码

    大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情. 1.python简单小 ...

  2. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  3. python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  4. python猜拳小游戏代码200行左右_python简单小游戏代码,python简单小游戏代码200行...

    如何看懂python杨辉三角代码? 第一步先找规律,抽象化问题.首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p = [1].核心点是这个除去首位两个 [1] 的中间部分:[p[0 ...

  5. python入门小游戏代码20行,python入门小游戏代码

    python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...

  6. python简单小游戏代码教程,Python简单小游戏代码

    球球各位大神怎么用python写一个猜词小游戏的代码? key = input('请输入一个单词:')description = input('输入单词描述:')chance = 5mark = 5p ...

  7. python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  8. python简单游戏程序设计_有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  9. python简单小游戏代码-python基础练习之几个简单的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  10. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

最新文章

  1. Response.Redirect 打开新窗体的两种方法
  2. 十篇文章速览多模态推荐系统的最新进展
  3. jquery 按钮效果 正常、移上、按下
  4. 「PKUSC2018」星际穿越 (70分做法)
  5. UBoot讲解和实践-----------讲解(一)
  6. mysql 去除warning_zabbix监控mysql之去掉烦人的warning告警语句
  7. c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc
  8. 国外开源的PACS服务器
  9. 查看本机装的 JDK 是32位还是64位的
  10. Thinkphp5之ajax分页实现_paginate()参数详细
  11. 操作系统两大创始人反目,这个排名第九的 Linux 发行版 OS 何去何从?
  12. 编码基本功:工作中,大多数人不会举一反三
  13. 人人商城微信小程序价格显示问题
  14. 软件工程 可行性分析与需求分析
  15. 好用的BUS调试工具-Bus Hound
  16. 前端单点登录(SSO)
  17. 文件后缀名批量修改工具
  18. python求周长_作业-python面向对象编程-计算周长和面积
  19. PTA 6-2 根据派生类写出基类(Java)
  20. ffmpeg加水印、logo等

热门文章

  1. 去百度还是去创新工厂? 信开复还是信彦宏?
  2. 安装SQL 2000挂起的解决办法
  3. CS客户端单元测试(1) 开始
  4. C语言的getc()和putc()函数
  5. 无损检测服务行业调研报告 - 市场现状分析与发展前景预测
  6. 近期购书体验:当当相对最棒,卓越蜗牛,京东缺货
  7. html标签对应的英文原文,[转载]片尾字幕中英文对照
  8. MySQL性能调优-使用ROLLUP代替UNION ALL
  9. 动画设计基础(三点一节)-3d max2014 裙摆(飘带插件)
  10. Photoshop-水印的制作方法