以解决问题为导向的python编程实践

0.第0章:计算机科学

  • 思考:计算机科学是否为计算机编程的简称?
  • 编程的困难点:1.同时做2件事(编程语言的语法、语义+利用其解决问题)  2.什么是好程序(解决问题+普遍适用+优美如诗)
  • python的出发点:使得程序猿的效率更高
  • 什么是计算?计算是人类或机器对数据进行操作
  • 。。。(剩下的就是基础普及)

1.第一章:开始编程

  • 编程规则:规则1:编写前深思熟虑  规则2:可读性+解决问题  规则3:实践是提高编程能力和问题解决能力的最好办法

  问题1:计算圆的周长

  • 1、提示用户输入半径
  • 2、利用公式计算周长和面积
  • 3、输出结果给用户看

  1,写python代码     计算周长面积.py  

import math
r = int(input("请输入半径:"))
c = 2*math.pi*r
s = math.pi*r*r
print("周长是%s,面积是%s"%(c,s))
input()

  2.打包成可执行文件

pyinstaller -F 计算周长面积.py

  

  3.执行文件

  问题2:海龟绘图(Turtle Graphics)之画一个五角星

  • 1.导入turtle模块,画一个五角星
  • 2.打包成一个可执行程序
  • 3.根据可执行程序存在的问题,做一定的修改

1.海龟视图01.py

import turtle
import time turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.right(144)
turtle.forward(100) time.sleep(2)

2.打包成可执行程序(CMD-将路径移动到文件所在的文件夹下)

pyinstaller -F 海龟视图01.py

  

3.执行,查看效果

2.第二章:控制语句

  问题3:篮球运动多少领先才安全

1.篮球运动多少领先才安全.py

# 基于Bill James的算法
'''
1.获取领先一队的分数
2.减去三分
3.如果当前是领先队控球,那么加上0.5分;反之,减去0.5分(若数字小于0则将其变成0)
4.计算平方后的结果
5.如果得到的结果比当前比赛剩下的时间的秒数更大,那么这个领先是安全的
''' pointsStr = int(input("请输入领先一队的分数:"))
points = pointsStr - 3 has_ball = input("当前是否为领先队控球(1代表是,0代表否,请输入1或0):")
if has_ball == '1':
points = points + 0.5
else:
points = points - 0.5 if points < 0:
points = 0 points = points ** 2 seconds = int(input("请输入比赛剩余的秒数:")) if points > seconds:
print("这个领先是安全的!")
else:
print("这个领先不安全!") input()

  

2.打包成可执行文件

pyinstaller -F 篮球运动多少领先才安全.py

  问题4:冰雹序列

1.冰雹序列.py

# Collatz在1937年提出的数学猜想
'''
1.如果数字是偶数,除以2
2.如果数字是奇数,乘以3,再加1.
3.如果数字等于1,退出程序
''' from pylab import * number = int(input("请输入你需要验证的数字(正整数):"))
# 接收坐标值
Y = [] Y.append(number)
while number > 1:
if number % 2:
number = number * 3 + 1
Y.append(number)
else:
number = number / 2
Y.append(number)
if number == 1:
print("该数满足冰雹序列,图像如下")
X = np.arange(1, len(Y) + 1, 1)
plt.plot(X, Y)
plt.show()
else:
print("该数不满足冰雹序列!")

2.打包

pyinstaller -F 冰雹序列.py

这个画图包打包起来太大了,打包完300M+,真的6,以后少干这种事(以后可以研究,怎么样打包占用空间少)

3.运行

3.第三章:算法和程序开发

  什么是算法?

算法:计算或其他解决问题的操作需要遵循一个过程或者一套规则(解决问题的方法)

 后面似乎没有从解决问题的角度去描述问题了,只是单纯的介绍了一些基本概念

<读书笔记>001-以解决问题为导向的python编程实践的更多相关文章

  1. Python入门经典. 以解决计算问题为导向的Python编程实践

    Python入门经典. 以解决计算问题为导向的Python编程实践(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1juLsew8UiOErRheQPOuTaw 提取 ...

  2. 《android开发艺术探索》读书笔记(十四)--JNI和NDK编程

    接上篇<android开发艺术探索>读书笔记(十三)--综合技术 No1: Java JNI--Java Native Interface(java本地接口),它是为了方便java调用C. ...

  3. erl_0020 《面对软件错误构建可靠的分布式系统》读书笔记001 “面向并发COPL”

    在现实世界中,顺序化的(sequential)活动非常罕见.当我们走在大街上的时候,如果只看到一件事情发生的话我们一定会感到不可思议,我们期望碰到许多同时进行的活动. 如果我们不能对同时发生的众多事件 ...

  4. erl_0014 《硝烟中的erlang》 读书笔记001 “绪论”

    1.大家听说Erlang,往往是因为其对高并发的良好支持.其实,Erlang的核心特征是容错,从某种程度上讲,并发只是容错这个约束下的一个副产品.容错是Erlang语言的DNA,也是和其他所有编程语言 ...

  5. 你必须知道的.net读书笔记之第二回深入浅出关键字---对抽象编程:接口和抽象类

    请记住,面向对象思想的一个最重要的原则就是:面向接口编程. 借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,我认为其精髓简单说来就是:面向抽象编程. 抽象类应主要用于关系密切的对象,而接口 ...

  6. 读书笔记 effective c++ Item 48 了解模板元编程

    1. TMP是什么? 模板元编程(template metaprogramming TMP)是实现基于模板的C++程序的过程,它能够在编译期执行.你可以想一想:一个模板元程序是用C++实现的并且可以在 ...

  7. 【读书笔记】Linux命令行与Shell脚本编程大全

    Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...

  8. #Python学习笔记:1-3章 (基于《python编程,从入门到实践)

    第1-3章 这个文档是记录我学习python时一些学习笔记以及一些想法也可以称作复习笔记 第一章:起步这一章主要是从第一个"hello world"程序到python环境的搭建与配 ...

  9. Python入门经典 以解决计算问题为导向的Python编程 待完好

    1.4.2:python将代码分为两类:表达式和语句  表达式和语句::  表达式(值和运算符的结合,将产生新值--返回值. 假设在python shell中输入表达式将显示返回值.也就是说,假设x的 ...

随机推荐

  1. 杂项-Conda:Conda

    ylbtech-杂项-Conda:Conda 1.返回顶部 1. Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换.   外文名:Con ...

  2. CSS:CSS 图片廊

    ylbtech-CSS:CSS 图片廊 1.返回顶部 1. CSS 图片廊 以下是使用CSS创建图片廊: 图片廊 以下是使用 CSS 创建图片廊: 实例 <div class="res ...

  3. 记一次Tomcat运行失败记录

    记一次Tomcat运行失败记录 如图tomcat运行之后会出现这样的情况,在网上百度之后大部分都说的是web.xml或者其他配置文件的问题,但是根据网上修改了之后却还是老样子. 这里有比较好的网址可以 ...

  4. 根据已知值,选中selec中的选项

    $("#modal").find("select[name=materialType]").find("option").each(func ...

  5. 剑指offer——38二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.   题解: 在搜索二义树中,左子节点的值总是小于父节点的值,右子节点的值总 ...

  6. Lambda表达式底层分析

    一.我们先看下C#代码下Lamdba表达式的写法 // <summary> /// 写入日志委托 /// </summary> /// <param name=" ...

  7. java-day18

    函数式接口在java中指:有且仅有一个抽象方法的接口 @FunctionalInterface注解:可以检测接口是否是一个函数式接口 函数式接口的使用:一般可以作为方法的参数和返回值类型 自定义函数式 ...

  8. linux部署tomcat项目

    unzip apache-tomcat-7.0.55-windows- x64.zip     解压zip文件 chmod +x startup.sh shutdown.sh catalina.sh ...

  9. 提升方法(boosting)详解

    提升方法(boosting)详解 提升方法(boosting)是一种常用的统计学习方法,应用广泛且有效.在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性 ...

  10. VBA+SQL transform pivot union联合查询的基础应用

    Sub 项目状态查询() '如果“项目状态”是未转运营那么实施状态是不能选择的,因为还没有实施.'如果“项目状态”选择状态后,那么项目名称里面只显示该状态的项目名称.如果“项目状态”选择的不是未转运营 ...