(python语言程序设计教程)自学一

news2024/11/19 12:32:40

(python语言程序设计教程)自学一

文章目录

  • 前言
  • 一、计算机基础概述
    • 1. 计算机硬件组成
    • 2. 计算机软件与程序设计语言
  • 二、python语言简介
  • 三、turtle库
    • 3.1. 画布设置:
    • 3.2. 基本方法
    • 3.3. 基本图形绘制
  • 四、课后习题
    • 4.1. 求圆柱体体积
    • 4.2. 绘制一个内嵌了一个正三角形的圆
    • 4.3. 绘制多个具有公共交点的圆
    • 4.4. 猜数游戏
  • 总结


前言

本系列文章,主要是对学校开设的python课程进行总结,教科书为:python语言程序设计


一、计算机基础概述

1. 计算机硬件组成

在这里插入图片描述

2. 计算机软件与程序设计语言

从最开始的机器语言到汇编语言,再到现在绝大多数程序设计者都在使用的高级语言,如python、Java、C++等。程序代码只是对某个问题解决方案的计算机实现。学会如何思考,才是最有价值的。

例题:
在这里插入图片描述

# 抓小偷问题
zheng_jia = []
thiefs = ["A", "B", "C", "D"]
for thief in thiefs:
    if thief == "A":
        A = False
        B = False
        C = False
        D = True
        zheng_jia.append([A, B, C, D])
    elif thief == "B":
        A = True
        B = False
        C = False
        D = True
        zheng_jia.append([A, B, C, D])
    elif thief == "C":
        A = True
        B = True
        C = False
        D = True
        zheng_jia.append([A, B, C, D])
    else:
        A = True
        B = False
        C = True
        D = False
        zheng_jia.append([A, B, C, D])
print(zheng_jia)
result = []
for i, sublist in enumerate(zheng_jia):
    true_count = sublist.count(True)
    fasle_count = sublist.count(False)

    if true_count == 3 and fasle_count == 1:
        result.append(i)

print(result)
mubiao_sublist = [zheng_jia[i] for i in result]
print(mubiao_sublist)
zhen_thief = [thiefs[i] for i in result]
print(zhen_thief)

#结果:
[[False, False, False, True], [True, False, False, True], [True, True, False, True], [True, False, True, False]]
[2]
[[True, True, False, True]]
['C']

由此可知,C为小偷

二、python语言简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。. Python 的设计具有很强的可读性,在TIOBE官网中我们可以看到python语言在诸多编程语言中位居榜首

在这里插入图片描述

python语言是一门“胶水语言”,有极好的扩展性,当然它也有缺点:执行效率不高。
python语言也被预言将成为AI时代的第一语言。
总之,“人生苦短,我用python”

三、turtle库

首先介绍一下turtle库:turtle是Python标准库之一,是入门级图形绘制函数库。

3.1. 画布设置:

import turtle
#画布位置及大小设置
turtle.setup(width= 600,height= 600,startx= 200,starty=200)
#画布大小、颜色设置
turtle.screensize(canvwidth= 400,canvheight=400,bg= "white")
turtle.getscreen()

在这里插入图片描述

3.2. 基本方法

在这里插入图片描述

3.3. 基本图形绘制

  1. 绘制90°夹角折线段
turtle.pendown() #落笔,移动时绘图
turtle.forward(100) #水平向右为前进方向
turtle.right(90) #前进方向向右转90°
turtle.forward(100)
# 保持画布显示
turtle.done()


  1. 绘制黑色粗边框、红色填充三角形
# 绘制黑色粗边框、红色填充三角形
turtle.color("black",'red')
turtle.pensize(3) #设置画笔宽度
turtle.setheading(60) #设置当前角度方向
turtle.begin_fill() #开始填充图形
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.end_fill()

# 保持画布显示
turtle.done()

  1. 其它
#绘制半径为100像素的圆
turtle.circle(100)
#绘制半径为100像素、圆心角为90°的圆弧
turtle.circle(100,90)
#绘制半径为100像素的内接八边形
turtle.circle(radius= 100,steps=8)
#绘制直径为20像素的红色圆点
turtle.dot(20,"red")
# 保持画布显示
turtle.done()

  1. 绘制奥运五环
import turtle
turtle.pensize(3)
# 绘制蓝色圆环
turtle.pencolor('blue')
turtle.circle(50)
# 绘制黑色圆环
turtle.penup()  #提笔准备平移
turtle.forward(110)  #前进(向右)110像素,平移至点2
turtle.pencolor('black')
turtle.pendown()
turtle.circle(50)
#绘制红色圆环
turtle.penup()
turtle.forward(110)
turtle.pencolor('red')
turtle.pendown()
turtle.circle(50)
# 绘制黄色圆环
turtle.penup()
turtle.backward(170) #后退170像素
turtle.right(90) #向右旋转 90°,准备下移
turtle.forward(50) #向下移动50像素,移至点4
turtle.setheading(0) #前进方向重新设置为0°,即水平向右
turtle.pencolor('yellow')
turtle.pendown()
turtle.circle(50)
# 绘制绿色圆环
turtle.penup()
turtle.forward(110)
turtle.pencolor('green')
turtle.pendown()
turtle.circle(50)

turtle.done()

在这里插入图片描述

四、课后习题

4.1. 求圆柱体体积

import math
r = eval(input("请输入圆柱体的半径:"))
h = eval(input("请输入圆柱体的高度:"))
volume= math.pi*r*r*h
print("半径为{}高为{}的圆柱体体积为:{:.2f}".format(r,h,volume))

#或者
import numpy as np
r = int(input())
h = int(input())
volume = np.pi *r*r *h
print(volume)

4.2. 绘制一个内嵌了一个正三角形的圆

import turtle as t
import math
t.pensize(2) #设置画笔宽度
t.right(90)#画笔方向向右旋转 90°,从向右转为向下
t.penup() #抬起画笔,下移时不绘制线条
t.forward(200)#画笔下移 200 像素
t.pendown()# 放下画笔,准备绘制线条
t.left(90) # 画笔方向向左旋转 90°,从向下转为向右
# 绘制圆形
r=200
t.circle(r)
# 绘制内嵌正三角形
len= r*math.sqrt(3)
t.left(60)
t.forward(len)
t.left(120)
t.forward(len)
t.left(120)
t.forward(len)
t.done()

4.3. 绘制多个具有公共交点的圆

import turtle as t
t.color("green")
t.speed("fast")
for i in range(20):
    t.shape("turtle")
    t.circle(100,360)
    t.left(18)
t.done()

在这里插入图片描述

4.4. 猜数游戏

import random as rd
target = rd.randint(1,100) 
print("==========================")
count = 0
while True:
    guess = eval(input("请输入猜测的数值:"))
    count +=1
    if guess>target:
        print("大了")
    elif guess<target:
        print("小了")
    else:
        print(f"恭喜你,第{count}次就答对了")
        break




#改进一下这个猜数游戏:
import random
target = random.randint(0, 100)
# print("随机数:", target)
count = 1
success = False
#设置次数限制为10次
while count <= 10:
    print("*" * 20)
    num = input(f"第{count}次,您输入的数字为:")
    if num == "quit":
        break
    if not str(num).isnumeric():
        print("不可以哦,您输入的不是数字,请继续吧")
        continue
    num = float(num)

    if num == target:
        print("恭喜您答对了,数字是:", target)
        success = True
        break
    elif num < target:
        print("您猜小了")
    else:
        print("您猜大了")

    count += 1

if not success:
    print("很遗憾,您没有猜对,正确数字是:", target)


总结

本篇文章总结了该书的第一章,之后也会继续学习后面的章节。

天下皆知美之为美,斯恶矣;皆知善之为善,斯不善矣。

–2023-9-14 筑基篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis 多租户隔离 ACL 权限控制(redis-cli / nodejs的ioredis )

Redis 6版本之后&#xff1a;提供ACL的功能对用户进行更细粒度的权限控制 &#xff1a;&#xff08;1&#xff09;接入权限:用户名和密码&#xff08;2&#xff09;可以执行的命令&#xff08;3&#xff09;可以操作的 KEY ACL常用规则介绍&#xff1a; 指令列表 //增加可操…

学Python的漫画漫步进阶 -- 第六步

学Python的漫画漫步进阶 -- 第六步 六、容器类型的数据6.1 序列6.1.1 序列的索引操作6.1.2 加和乘操作6.1.3 切片操作6.1.4 成员测试 6.2 列表6.2.1 创建列表6.2.2 追加元素6.2.3 插入元素6.2.4 替换元素6.2.5 删除元素 6.3 元组6.3.1 创建元组6.3.2 元组拆包 6.4 集合6.4.1 创…

【Java 基础篇】Java类型通配符:解密泛型的神秘面纱

在Java中&#xff0c;类型通配符&#xff08;Type Wildcard&#xff09;是泛型的重要概念之一。它使得我们能够更加灵活地处理泛型类型&#xff0c;使代码更通用且可复用。本文将深入探讨Java类型通配符的用法、语法和最佳实践。 什么是类型通配符&#xff1f; 类型通配符是一…

ArcGIS 10.4安装教程!

软件介绍&#xff1a;ArcGIS是一款专业的电子地图信息编辑和开发软件&#xff0c;提供一种快速并且使用简单的方式浏览地理信息&#xff0c;无论是2D还是3D的信息。软件内置多种编辑工具&#xff0c;可以轻松的完成地图生产全过程&#xff0c;为地图分析和处理提供了新的解决方…

计算机毕设 大数据上海租房数据爬取与分析可视化 -python 数据分析 可视化

# 1 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通…

算法与设计分析--分治算法的设计与分析

某不知名学校的第二次算法实验报告&#xff0c;一共四道题 全部来自力扣 第一题 ​​​​​​169. 多数元素 题目描述&#xff1a; 给定一个大小为 n 的数组&#xff0c;找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&am…

Docker概念通讲

目录 什么是Docker&#xff1f; Docker的应用场景有哪些&#xff1f; Docker的优点有哪些&#xff1f; Docker与虚拟机的区别是什么&#xff1f; Docker的三大核心是什么&#xff1f; 如何快速安装Docker&#xff1f; 如何修改Docker的存储位置&#xff1f; Docker镜像常…

敏捷管理的4价值观12准则

一、敏捷管理的的4个价值观 个体和交互胜过流程和工具可工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划 二、敏捷管理的12条准则 上篇解读了对于敏捷价值观的理解&#xff0c;这篇来聊一聊敏捷的12指导准则。关于敏捷宣言的12条准则的原始描述&…

Dokcer搭建Apache Guacamole堡垒机

一、什么是堡垒机 “堡垒机” 这个词通常指的是 “堡垒机器”&#xff08;Bastion Host&#xff09;的简称。堡垒机是一种计算机系统或网络设备&#xff0c;用于增强计算机网络的安全性。它在网络中充当一个重要的安全关口&#xff0c;通过限制对内部网络的访问&#xff0c;帮…

LeetCode(力扣)860. 柠檬水找零Python

LeetCode860. 柠檬水找零 题目链接代码 题目链接 https://leetcode.cn/problems/lemonade-change/ 代码 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five 0ten 0twenty 0for i in range(len(bills)):if bills[i] 5:five 1if bills[i] 10…

pdf怎么压缩的小一点?pdf文件压缩方法汇总

在日常生活中&#xff0c;我们常常需要处理大量的PDF文件。有时候&#xff0c;这些PDF文件可能因为内容丰富、结构复杂而体积庞大&#xff0c;给我们的存储和传输带来了不便。那么&#xff0c;如何将这些PDF文件压缩得小一点&#xff0c;以便更方便地使用呢&#xff1f; 一、嗨…

Git(6)——GitHub

目录 一、简介 二、概要 三、注册 ​四、创建仓库 五、推送本地代码 六、拉取远端代码 一、简介 在Git&#xff08;5&#xff09;中&#xff0c;我们已经对Git分支的概念和用法有了一定了解&#xff0c;对于在本地进行代码版本管理&#xff0c;其实当前所学的东西基本已经…

【个人博客系统 × Redis】“最后的升级” · 连接Redis · Redis的基本使用

【JavaEE】进阶 个人博客系统&#xff08;7&#xff09; 文章目录 【JavaEE】进阶 个人博客系统&#xff08;7&#xff09;1. linux安装Redis1.1 通过yum商店下载Redis1.2 启动Redis1.3 操作Redis 2. Redis的基本使用&#xff08;关键字大小写不区分&#xff09;2.1 set2.2 g…

Lombok中的@Builder注解的使用

Lombok中的Builder注解的使用 作用 Builder注解的作用主要是用来生成对象&#xff0c;并且可以为对象链式赋值。 引入依赖 因为Builder注解是lombok中的东西&#xff0c;所以第一步我们需要引入lombok的依赖&#xff0c;如下图&#xff1a; 第二步给实体类加上Builder注解…

每日一博 - Token Based Authentication VS HMAC Authentication 实现web安全

文章目录 概念HMAC工作原理 概念 Token Based Authentication和HMAC&#xff08;Hash-based Message Authentication Code&#xff09;Authentication都是用于身份验证和数据完整性验证的安全机制&#xff0c;但它们有不同的工作方式和适用场景。以下是它们的主要区别和比较&a…

idea把项目打成jar包步骤详解

最近产品需要预研一个小功能&#xff0c;开始后在本地开发测试好之后&#xff0c;需要打成jar提供出去&#xff0c;今天弄完了&#xff0c;决定把这个步骤记录下来&#xff0c;便于以后轻车熟路。 打成jar要有mian方法的入口&#xff0c;所以我们在代码中需要定义一个main方法&…

学Python的漫画漫步进阶 -- 第七步

学Python的漫画漫步进阶 -- 第七步 七、字符串7.1 字符串的表示方式7.1.1 普通字符串7.1.2 原始字符串7.1.3 长字符串 7.2 字符串与数字的相互转换7.2.1 将字符串转换为数字7.2.2 将数字转换为字符串 7.3 格式化字符串7.3.1 使用占位符7.3.2 格式化控制符 7.4 操作字符串7.4.1 …

四、数学建模之图与网络模型

1.定义 2.例题及软件代码求解 一、定义 1.图和网络是相关概念 &#xff08;1&#xff09;图&#xff08;Graph&#xff09;&#xff1a;图是数学和计算机科学中的一个抽象概念&#xff0c;它由一组节点&#xff08;顶点&#xff09;和连接这些节点的边组成。图可以是有向的&…

VSCode配置c/c++环境 MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0) 彻底删除vscode(包括插件及配置!)

目录 一、简介 二、下载 1 旧版安装&#xff08;8.1.0&#xff09; 从 sourceforge.net 下载 2 新版安装(本次采用较新版本~~~) 从 github 下载 从 镜像站点 下载 自己编译 三、安装与配置 1. 在线安装&#xff08;这里仅作参考了解&#xff09; 2. 离线安装&…

JavaScript 知识扫盲

JavaScript 知识扫盲 写在前面一、JavaScript 写入形式二、常用输入输出三、JS 是动态类型语言四、运算符五、数组1、数组创建2、获取和修改数组元素3、新增元素4、删除元素 六、函数七、对象1、对象的创建2、属性方法的使用 八、JavaScript 和 Java 对比九、事件1、常见事件2、…