计算机科学和Python编程导论(二 ) Python简介

2023-10-29

基本概念

1. 编程语言的分类

低级编程与高级编程:二者之间的区别是,编写程序时,我们是使用机器层次的指令和数据对象(底层操作),还是使用语言设计者提供的更为抽象的操作(图形用户界面,UI)。

通用性与专注于某一应用领域:指编程语言中的基本操作是广泛适用的还是只针对某个领域,例如SQL。

解释运行与编译运行:指程序员编写的指令序列,即源代码是直接执行(通过解释器,使用解释型语言编写的程序更易调试,因为解释器可以给出与源代码相关的错误信息。),还是要先转换成机器层次的基础操作序列。(通过编译器,编译型语言(如,java)编写的程序速度更快,占用的空间也更少。)

2. Python 基本元素

python中对象:对象分为标量对象(不可再分)和非标量对象(有内部结构,可再分)。Python有以下4类标量对象:

  1. int:表示整数。
  2. float:表示实数。
  3. bool:表示布尔值True和False。
  4. None:这个类型只有一个值。

操作符:对象和操作符可以组成表达式,每个表达式都相当于某种类型的对象,我们称其为表达式的值。

int类型和float类型支持的操作符

  1. i + j:i和j的和。
  2. i - j:表示i减j。
  3. i * j:i和j的积。
  4. i // j:表示整数除法。只返回商,不返回余数。
  5. i / j:表示i除以j。
  6. i % j:表示int i除以int j的余数。通常读作i mod j,是i modulo j的缩写。
  7. i ** j:表示i的j次方。如果i和j都是int类型,结果也是int类型。

:如果i和j都是int类型,结果也是int类型。如果其中任意一个是float类型,那么结果就是float类型。

比较运算符:包括:==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)和<=(小于等于)。

bool类型上的基本操作符:and、or和not

  1. a and b:当a和b都为True时,值为True,否则为False。
  2. a or b:当a和b至少有一个为True时,值为True,否则为False。
  3. not a:如果a为False,值为True;如果a为True,值为False。

变量:在Python中,变量仅是名称,没有其他意义。赋值语句将=左边的名称与=右边的表达式所表示的对象关联起来,一个对象可以有一个或多个名称与之关联,也可以不关联任何名称。

多重赋值:Python支持多重赋值。如:x, y = 2, 3

变量名:将程序写得清晰易懂极其重要,恰当地选择变量名称在增强程序可读性方面扮演了重要角色。

  1. 在Python中,变量名可以包含大写字母、小写字母、数字(但不能以数字开头)和特殊字符_。
  2. Python变量名是大小写敏感的,如Julie和julie就是不同的变量名。最后,Python中还有少量的保留字(有时称为关键字),它们有专门的意义,不能用作变量名。
  3. Python 3中的保留字包括and、as、assert、break、class、continue、def、del、elif、else、except、False、finally、for、from、global、if、import、in、is、lambda、nonlocal、None、not、or、pass、raise、return、True、try、while、with和 yield。

3. 程序分支

最简单的分支型程序是条件语句

程序运行时间:

  1. 假定每行代码都需要以单位时间运行,那么有n行代码的直线型程序就需要n个单位时间。那么有n行代码的分支型程序呢?它运行的时间可能会少于n个单位时间,但绝不会超过n个单位时间,因为每行代码至多运行一次。
  2. 如果一个程序运行的最长时间是由程序长度决定的,那么可以称为以常数时间运行。这并不意味着它每次运行都执行相同的步骤,而意味着存在一个常数k,使得这个程序肯定会在k个步骤之内结束运行。其中隐含的意义是,这种程序的运行时间并不随着程序输入量的增加而增加。

4. 字符串和输入

str类型的对象:用来表示由字符组成的字符串。str类型的字面量可以用单引号或双引号表示,如’abc’或”abc”。

重载:即根据应用其上的对象类型的不同,它的意义也不同。操作符+存在重载的情形,例如:

  1. 应用于两个数值对象时,它表示相加;
  2. 应用于两个字符串时,它表示连接。

字符串:是Python中的序列类型之一。所有序列类型都可以执行以下操作:

  1. 可以使用len函数求出字符串的长度。例如,len(‘abc’)的值是3。
  2. 可以使用索引从字符串提取单个字符。例如,在解释器中输入’abc’[0]会显示字符串’a’。
  3. 可以使用切片操作从字符串提取任意长度的子串。如果s是个字符串,那么表达式s[start:end]就表示s中从索引start开始至索引end-1结束的子串。例如,’abc’[1:3] =’bc’ 。
    :为什么在索引end-1 处而不是在end 处结束呢? 这样做是为了让’abc’[0:len(‘abc’)]这样的表达式具有我们希望的值。如果冒号前面的索引值省略,那么默认值为0;如果冒号后面的索引值省略,那么默认值就是字符串的长度。于是,表达式’abc’[:]在语义上就等同于更加冗长的’abc’[0:len(‘abc’)]。

input函数:可以直接接受用户输入。它可以使用一个字符串作为参数,显示在shell中作为提示信息,然后等待用户输入,用户输入以回车键结束。用户输入的行信息被看作一个字符串,并成为这个函数的返回值。

name = input('Enter your name: ')

字符串进行类型转换:只要字符串中的值是某种类型的有效字面量,就可以对字符串进行类型转换。

  1. 例如,int(‘3’) * 4的值是12。

  2. 当一个float值被转换成int值时,数值是被截断的(不是四舍五入)。
    例如,int(3.9)的值是int 3。

Unicode编码的由来

字符串存在编码问题。

  1. 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)(2的8次幂等于256,即8个位置每个位置可以选择0或者1,总共有256种可能,从0开始就到了255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。
  2. 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
  3. 类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
  4. Unicode通常用两个字节表示一个字符(这时候就有2的16次幂种可能),原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

UnicodeDecodeError处理:
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。 可以在第一行添加注释:

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。

5. 迭代

需要程序多次做同一件事情的时候,可以使用迭代语句,最简单的迭代语句就是for循环

编程练习

1.实际练习:编写一个程序,检查3个变量x、y和z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

# 解法1
def odd_max_input(x, y, z):
    list = []
    for i in [x, y, z]:
        if i % 2 == 1:
            list.append(i)
    if len(list) == 0:
        print('没有奇数')
    else:
        print(max(list))
# 解法2
def odd_max_input(x,y,z):
    a=sorted([x,y,z],reverse=True)
    for i in a:
        if i%2==1:
            return i
    print('没有奇数')
# 解法3
def odd_max_input2(x,y,z):    
    a=[x,y,z]
    max =0
    for i in a:
        if i%2==1:
            if i > max:
                max = i
    if max==0:  
        print('没有奇数')
    else:
        print(max)

2.实际练习:将以下代码中的注释替换为while循环语句。
numXs = int(input(‘How many times should I print the letter X? ‘))
toPrint = ”
numXss=abs(numXs)
concatenate X to toPrint numXs times

numXs = int(input('How many times should I print the letter X? '))
toPrint = ''
while numXss!=0:
    toPrint = toPrint+'X'
    numXss=numXss-1
print(toPrint)

3.实际练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数。如果用户没 有输入奇数,则输出一个消息进行说明。

# 解法1
a=0
numXs =[]
while a!=10:
    b=int(input('please input 10 int '))
    numXs.append(b)
    a+=1
numXss=sorted(numXs,reverse=True)
c=0
for i in numXss:
    c+=1
    if i%2==1:
        print('最大的奇数是{}'.format(i))
        break
    elif c==10:
# 解法2
r = input('输入10个数字,用,[英文格式]间隔:')
list = [i for i in map(lambda i: int(i), r.split(',')) if i % 2 == 1]
print(list)
if len(list) == 0:
    print('no odd')
else:
    print(max(list))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机科学和Python编程导论(二 ) Python简介 的相关文章

  • RK356x 修改uboot和kernel,让固件支持多个设备树DTB选择

    步骤如下 1 开发环境 1 1 实验环境 1 2 目标 2 Uboot修改 2 1 uboot默认配置文件 config 2 2 uboot从resource img获取DTB和kernel顺序过程 2 3 修改boot mode模式 2
  • Linux —— 1.5万字详解LVM逻辑卷管理

    文章目录 一 逻辑卷管理 1 LVM介绍 2 LVM基本概念 二 逻辑卷LVM应用 1 逻辑卷创建 1 准备物理设备 2 创建物理卷 pvcreate 3 创建卷组并将物理卷加入其中 vgcreate 4 创建逻辑卷 lvcreate 5
  • 前端Vue uni-app App/小程序/H5 通用tree树形结构图

    随着技术的发展 开发的复杂度也越来越高 传统开发方式将一个系统做成了整块应用 经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改 造成牵一发而动全身 通过组件化开发 可以有效实现单独开发 单独维护 而且他们之间可以
  • [YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122369147 目录 第1章 YOL
  • VS2010 如何添加H文件目录和LIB目录

    第一次使用VS2010 也是初学者开始编写VC 程序首先学习编写DLL文件 编译完自己的DLL文件后 要在其它项目中使用 开始遇到很多错 但是在网上搜索了好久后 终于解决了问题 H文件目录 依次点击 项目 XX 属性 C C 常规 在 附加
  • Window XP驱动开发(十四) 驱动应用程序端代码实现(针对USB2.0 芯片CY7C68013A,基于CyAPI.lib与Bulkloop固件)

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 需要源码的可以与我联系 在我的一篇文章 Window XP驱动开发 十二 驱动应用程序端 原理分析 中讲到了驱动应用程序端的
  • 产品经理的考核与评级

    一个叫 产品经理 的大学毕业生与一个同样叫 产品经理 的 有着4 5年工作经验的人 做的事情 需要的能力肯定不同 为了使PM更有成就感和更有明确的职业发展目标 根据互联网的资料大致整理了产品经理评级及考核标准 一 产品经理分级 产品经理级别
  • Linux网络编程_06_数据链路层MAC帧协议

    Linux网络编程总目录 点击下面链接即可到达对应章节 Linux网络编程 01 网络基础 Linux网络编程 02 socket套接字 Linux网络编程 03 应用层HTTP协议 Linux网络编程 04 传输层UDP和TCP协议 Li
  • 基于Springboot+Html的健身房管理系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 随着现代生活方
  • BugKu CTF(杂项篇MISC)--where is flag 4

    BugKu CTF 杂项篇MISC where is flag 4 文章目录 BugKu CTF 杂项篇MISC where is flag 4 膜拜大佬 题目1 txt 用到的python知识 python base64 base64字符
  • adb卸载自带应用

    adb shell pm uninstall k user 0 com baidu input huawei 卸载自带应用
  • 无法连接ssh的原因

    我先问大家一个问题 ssh协议是什么呢 ssh应该很多人都知道他的用途 ssh就是远程会话登录会话 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题 ssh的原理 在A上使用ssh连接B机 A向B发送连接请求 B收到请求后 将自己
  • Spark中的 官方求PI案例

    官方求PI案例 1 进入 opt module spark standalone 2 开启spark集群 sbin start all sh 3 写案例 bin spark submit class org apache spark exa
  • Python实战:python URL请求地址的拼接,标准库urllib.parse详解

    目录 使用urllib parse urljoin 方法拼接URL 使用urllib parse urlencode 方法拼接查询参数 urlparse urlsplit urldefrag urlunparse urlunsplit 手写
  • Linux nc(NetCat)命令详解

    http blog csdn net wang7dao article details 7684998 NetCat 在网络工具中有 瑞士军刀 美誉 其有Windows和Linux的版本 因为它短小精悍 1 84版本也不过25k 旧版本或缩

随机推荐

  • sqlmap (os-shell)

    Dancing with your ghost 环境准备 Kali IP 10 10 16 128 win 7 IP 10 10 16 131 使用 phpstudy 搭建 sql 注入漏洞环境 NAT 网络连接 漏洞源码 查看源码可以得知
  • OpenGL学习之路18---- 点光源

    代码放在github上 根据教程 ogldev一步步开始 记录学习历程 之前学习了三个基于平行光的光照模型 相关博文如下 OpenGL学习之路15 环境光 OpenGL学习之路16 漫射光 OpenGL学习之路17 镜面反射光 平行光没有起
  • gensim 将文本变成一个向量 DOCtoVEC

    D2V
  • Cascade network——multi-stage refinement

    文章目录 List Preview AttractioNet 2016 CRAFT CRAFT Objects from Images 2016 CC Net chained cascade network for object detec
  • jar包手动添加到本地maven仓库详解

    第一步 下载需要添加的jar包 可以在maven库中查找下载 也可以在对应官网下载 maven库网址 需要验证是真人 https mvnrepository com 第二步 将下载的jar包放到指定位置 位置自己指定 用得到 建议放在mav
  • css-将网页全局置灰

    亲测百分之百有效 在一些情况下需要将网页的全局颜色进行置灰处理 但是又不能影响到其他属性 此时我们只需要在主框架的样式中增加该属性即可 filter grayscale 100
  • Java的String相关的加号+和append比较

    上例子 package com smile core public class StringAppend public static void main String args 字符串常量用 连成串 实际上等于一个字符串 效率最高 long
  • C++ STL 互斥体

    mutex 互斥量 非定时的互斥体类 标准库包含两个非定时的互斥体类 std mutex std recursive mutex 每个类都支持下列方法 lock 阻塞直到取到锁 trylock 立刻返回获取锁结果 unlock 已经拥有st
  • linux线程学习(二)

    上一个linux线程学习是不带锁的线程不安全形式 只要不用共享资源还是可以的 但实际工作中我们遇到的往往是需要保障线程的访问的 因此这里实现了一个简单的线程池 为线程池的实现提供思路 Status类封装了环境变量与锁 作为一种状态保障线程的
  • Python错误:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte...

    错误提示如下 tf2 C Users user gt python Python 3 7 6 packaged by conda forge default Mar 5 2020 14 47 50 MSC v 1916 64 bit AMD
  • libcurl教程

    这个文档是小编在curl官网上使用谷歌翻译翻译的 详细信息看官网 curl 基本描述 本文档试图描述使用 libcurl 编程时要考虑的一般原则和一些基本方法 本文将主要关注 C 接口 但可能会很好地适用于其他接口 也会讲解一些个C接口相似
  • mongodb设置账号密码授权案例

    1 给admin授权管理员权限 gt use admin gt db createUser user admin pwd 123456 roles role root db admin 如果需要修改admin密码 gt db changeU
  • 链表有环(引申题:环在哪里)

    public class Test private static class ListNode int value ListNode next public static boolean hasCycle ListNode head if
  • 采集校园卡消费信息可视化(安徽工商职业学院)

    闲的没事干 分析下我自己的一卡通消费信息 使用了以下技术进行数据分析并且环境已经搭建好 Hadoop hive mysql sqoop centos7 python zeppelin 思路 python爬自己的消费记录 存入到mysql s
  • pthread函数总结

    概括 https www cnblogs com tianzeng p 8934060 html
  • linux 运行scrapy,linux下部署scrapy

    1 如何部署scrapy 下载scrapy client 下载地址 https github com scrapy scrapyd client 并进行安装 安装命令 python setup install 进入项目目录 执行scrapy
  • 【Unity3D日常BUG】Unity3D中出现“动画片段必须标记为Legacy的警告”消除方法

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 在开发中可能会遇到下面的警告 The Ani
  • 关于interface(接口继承)extends(接口)interface的问题

    前序 一直以来 我们学习java就被灌输了一个观点 类和抽象类 class 只能被继承 extends 接口 interface 只能被实现 implements 有个概念我们一直没有弄懂的是 类 class 可以实现接口 interfac
  • 刘积仁资本阳谋:东软熙康通过上市聆讯,三年亏损8亿元

    大数据产业创新服务媒体 聚焦数据 改变商业 9月中旬 第四次递表的东软熙康通过港交所上市聆讯 预计在9月30日之前完成IPO 作为国内首家以城市为入口的云医院平台厂商 东软熙康的互联网医疗服务包括互联网医院 远程医疗 智慧家庭医生 互联网居
  • 计算机科学和Python编程导论(二 ) Python简介

    基本概念 1 编程语言的分类 低级编程与高级编程 二者之间的区别是 编写程序时 我们是使用机器层次的指令和数据对象 底层操作 还是使用语言设计者提供的更为抽象的操作 图形用户界面 UI 通用性与专注于某一应用领域 指编程语言中的基本操作是广