Python:入门到放弃之基础篇(一)

2023-11-11


前言

此系列代码完全基于python3和pycharm2021.2。

一、python的标识符

  1. 标识符由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
  2. 标识符不能和 Python 中的保留字相同。
  3. Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
  4. 在 Python 中,标识符中的字母是严格区分大小写的
  5. 虽然标识符可以有下划线,但以下划线开头的标识符往往含有特殊含义,因此不建议使用下划线开头的标识符,除非你确实要这么做。
例:下列标识符合法:
	abcd
	abc_d
	Abc_3d
	IF          //python区分大小写,所以if是保留字,但IF不是,可以用
	下列标识符不合法:
	3abc		//数字不能开头
	if			//标识符不能与保留字相同
	@abc		//标识符不能有空格、@、% 以及 $ 等特殊字符

python的保留字可以通过print(keyword.kwlist)来打印。

二、python变量类型

  1. python是弱类型的语言,但不代表它没有类型,只不过它会动态绑定类型而无需我们关注。变量的类型可以通过 type()函数来打印
  2. Python 中标准的数据类型:
    Number(数字)
    String(字符串)
    List(列表)
    Tuple(元组)
    Set(集合)
    Dictionary(字典)
  3. 得益于python异常丰富的标准库,python的数据类型有许多的函数用法,有兴趣的同学可以去查阅资料。

1.Number

  1. Python的数字类型支持 int(整型)、float(浮点)、bool(布尔)、complex(复数)。
  2. python中bool的两种类型True和False其实分别是1和0,所以布尔值实际上可以与其他数值相加。
例如:
	a=10.01
    print(True+a)		//输出会是11.01

2.String

  1. 字符串的赋值:
str='xxxx'
str1="xxxx"
如果特殊字符,需要使用反斜杠来进行转义,
   			例:str="xxx\nccc"
   				print(str)			//输出是两行,第一行是Ru,第二行是oob
   	如果不想转义,那么可以在字符串前加一个r,
   			例:str=r"xxx\nccc"
   			print(str)			//输出是xxx\nccc	
  1. 字符串可以进行切片操作,来方便的截取其中的部分字符
语法格式:字符串变量名[头下标:尾下标] 	获取的结果含头不含尾。//下标从0开始,依次往后增大,但也可以是负数,意为从后往前走。
例:
	a="abcdefg"
    print(a[0:3])	//输出是abc
    print(a[0:-3])	//输出是abcd
  1. 字符串之间也可以使用加号进行拼接,使用乘号来多次输出
例:
	a="abcdefg"
     print(a+"123")	//输出是abcdefg123
     print(a*2)	//输出是abcdefgabcdefg
  1. python的字符串是不可变的,所以不能对某一下标赋值

3.List

  1. 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。其中的元素类型可以互不相同,也可以进行嵌套。
  2. 列表也可以和字符串一样进行拼接和截取,截取后返回一个新的列表。同样含头不含尾。
  3. 列表中的元素是可以改变的。
例:
   	list = [123, “abcd” , 2.23,[456,"efg"] ]
   	tinylist = [123, 'runoob']

   	print (list)           		 //输出[123, 'abcd', 2.23, [456, 'efg']]
   	print (list[0])       	 	 //输出123
   	print (list[3])      	 	 //输出[456, 'efg']
   	print (list[0:3])   	  	 //输出[123, 'abcd', 2.23]
   	print (list * 2)    		//输出[123, 'abcd', 2.23, [456, 'efg'], 123, 'abcd', 2.23, [456, 'efg']]
   	print (list + [789,"qwe"])	//输出[123, 'abcd', 2.23, [456, 'efg'], 789, 'qwe']

4.Tuple

  1. 元组和列表类似,也可以切片、拼接、重复输出。元组元素写在小括号 () 里,元素类型可以不相同,但元素不能修改。
  2. 元素不能修改的意思是元素的引用不能修改,也就是不能通过元组下标来修改元素,但元素本身的值可以变化
例:
	a=123
    list=[789,"abc"]
    tuple = (a, 456, list)
    list=[147,"asd"]
    print(tuple)		//输出(123, 456, [789, 'abc'])
    print(list)			//输出[147, 'asd'],list的元素值发生了变化   

5.Set

  1. 集合,和数学上的集合概念相似,不保证内部元素的有序性、没有重复元素、可以进行并集、差集、交集的运算。
  2. 使用大括号 { } 或者 set() 函数可以创建集合,但如果要创建一个空集合则不能使用 { },因为 { } 是用来创建一个空字典。
  3. 正因为集合的无序性,所以不能够知道一个元素在集合中的具体位置,所以也就不能对集合采取切片操作。
例:
	set1={"java","c++","c","c","python"}
    print(set1)		//我这里输出的结果为{'java', 'c++', 'python', 'c'},可以看到两个c只输出了一个;同时由于集合的无序性,这个输出结果的元素之间的顺序也是会变化的
    set2={"java1","c++","c","c","python"}
    print(set1-set2)	//计算差集,输出{'java'}
    print(set1|set2)	//计算并集,输出{'c', 'c++', 'java1', 'python', 'java'}
    print(set1&set2)	//计算交集,输出{'c++', 'python', 'c'}
    //再次强调,集合是无序的,所以不用纠结于不同次输出结果的外表上的不同。

6.Dictionary

  1. 字典,顾名思义,就像一本新华字典一样,如果我们需要查到一个汉字,那么就需要通过拼音、偏旁等方法来得到一个页码,才能查到这个汉字。在python的字典中,这个“拼音”、“偏旁”被称为key(键),这个页码被称为value(值),字典正式通过这个key - value的方式来一一对应的存储元素。
  2. 正因为字典的一一对应的特性,所以key必须是唯一的。
  3. 字典用 { } 标识,它是一个无序的 key - value的集合。
例:  
	dict={"1":"我是key为1的值","xxxx":"我是key为xxxx的值"}
  	print(dict)			//输出{'1': '我是key为1的值', 'xxxx': '我是key为xxxx的值'}
 	print(dict.get("1"))//输出我是key为1的值
 	print(dict.keys())//这个函数会输出字典中所有的key,本例中输出dict_keys(['1', 'xxxx'])
  	print(dict.values())//这个函数会输出字典中所有的value,本例中输出dict_values(['我是key为1的值', '我是key为xxxx的值'])

三、python流程控制

任何编程语言都绕不开三大流程控制语句,同时,任何一个功能都是由三大流程控制语句的组合来实现。

1.顺序流程控制

顺序流程控制就是自顶向下,一直走下去,而不考虑任何可能的折返、驻留等操作,一鼓作气完成所有语句,并且每条语句只执行一次。

例:
   	dict={"1":"我是key为1的值","xxxx":"我是key为xxxx的值"}
	print(dict)
	print(dict.get("1"))
 	print(dict.keys())    
 	print(dict.values())
以上文代码为例,整个程序从字典的定义开始,到输出字典的所有value为止,每一条语句都在上一条语句执行完毕后才开始执行,并且执行成功后便不会再有被执行的可能。

2.分支流程控制

  1. 分支流程控制就是在程序有多种不同的执行方法时,使用条件来控制具体的执行语句。比如我们去买瓜。如果它保熟,那么我们就买,如果不保熟就化身华强(雾)…
格式:
		if  条件判断式  :	//条件判断式的结果是一个布尔值,即True或False,也只能是这两个值,当然布尔值的本质是1和0,所以条件判断式是1或0也可以
			具体操作 
		elif 条件表达式 :		// 这个条件表达式是在不满足上面条件的前提下的条件表达式
   			具体操作 
   		else  :			//	这个是在上述所有条件都不满足后所做的操作。
   			具体操作
例:
   	a=int(input("请输入一个数:"))		//注意这里input得到的是一个字符串类型,需要我们去转换为整型。
   	if a>50 :
     	  print("xx")
    elif a>30 :
      	 print("aaa")
   	else :
      	 print("dddd")
   	
当有多个if同时满足时,则将全部执行
例:
    a=50
    if a>30 :
       print("xx")
    if a>20 :
       print("aaa")	//程序会输出xx后换行输出aaa
//一般情况下,我们不经常用elif,只使用if-else就能满足大多数要求。
  1. 三元表达式
    三元表达式在很多语言中都有,而且格式基本一样,而python这个三元表达式的格式,就比较特立独行
格式 :
	条件为True时返回的值  if  条件判断式  else  条件为False时返回的值

3.循环流程控制

循环操作十分常用,比如我们需要输出0-1000内的所有整数,或者是输出某一集合内的所有元素,这个时候就需要用到循环,它的核心就是重复相同操作。同时,python中循环也分为while循环和for循环两种。

  1. while循环
    当条件判断式为True时才执行具体操作
格式:
	while 条件判断式  :			//条件判断式的结果是一个布尔值,即True或False,也只能是这两个值,当然布尔值的本质是1和0,所以条件判断式是1或0也可以
		  具体操作
例: 
	while 2-1 :
    print("233")		//2-1=1,实质上是True,所以这个程序会一直输出233(当然这就是一个死循环了,是我们应该避免发生的情况。),同理,如果把2-1改成2-2,那么2-2=0,则这个程序就不会有任何输出
  1. for循环
格式:
	for  条件判断式 :	//这里的条件判断式主要是用来遍历
		 具体操作
例:
	for num  in range(0,101,2): //range(start,end,step)的作用是返回一个列表,列表中含有从start开始依次递增step直到end(不包含end)的所有值
      	print(num)	//这个程序会输出0到100之间的所有偶数
  1. 循环中断语句
    一般情况下我们写循环都是为了在大量重复操作中得到一个特殊的操作(比如寻找一些特定的值),而得到后就没必要继续。那么就需要break语句来结束循环;或者我们在一大堆操作中不需要某些操作,那么我们也可以使用continue略过它。
例:
	  for num  in range(0,101,2):
      if num==2 :
          print(num)
          break			//程序的意思是从这一大堆数中,我们只需要2,所以遍历到了2之后就直接输出然后结束循环。

例:
	  for num  in range(0,101,2):
     	  if num==2 :
        	 continue
      	  print(num)
     //程序的意思是在0到100的整数中,我们不需要2这个数字,所以遍历到2就略过不输出,其他正常输出。
  1. else语句
    循环操作也可以有else语句,它会在循环正常执行完毕之后再执行,for和while都可以用,但是不建议,因为一般情况下它作用不大,反而在代码比较复杂时会增大代码的阅读难度。
例:
	  for num  in range(0,101,2):
      	  if num==2 :
       		 continue
      	  print(num)
  	  else:
          print("我是else")

总结

无论学习任何一门语言,首先都要学习它的数据类型以及基础语法,python虽然说相对易学,但各种细节以及灵活运用都需要经常实践才能掌握。特别是对于学过java和c的人来说,某些python的语法特性反而会比较难以理解,就像一个从小被严加看管的的孩子突然飞出牢笼一样,自由的同时也会十分迷茫。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:入门到放弃之基础篇(一) 的相关文章

  • 使用python查找txt文件中字母出现的次数

    我需要从 txt 文件中读取该字母并打印 txt 文件中出现的次数 到目前为止 我已经能够在一行中打印内容 但计数有问题 有人可以指导吗 infile open grades txt content infile read for char
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 无法在 selenium 和 requests 之间传递 cookie,以便使用后者进行抓取

    我用 python 结合 selenium 编写了一个脚本来登录网站 然后从driver to requests这样我就可以继续使用requests进行进一步的活动 I used item soup select one div class
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 可以使用哪些技术来衡量 pandas/numpy 解决方案的性能

    Question 如何简洁全面地衡量下面各个功能的性能 Example 考虑数据框df df pd DataFrame Group list QLCKPXNLNTIXAWYMWACA Value 29 52 71 51 45 76 68 6
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • IndexError - 具有匀称形状的笛卡尔 PolygonPatch

    我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上 这曾经工作得很好 最近 我收到索引错误 我将代码分解为最简单的操作 但它甚至无法执行最简单的循环 import descartes import shapely geome
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发

随机推荐

  • linux下如何使用 tcpdump 进行抓包详细教程

    非功能测试总览 前面的非功能测试总览种提出的 tcp网络访问dump 进行的额外补充 1 tcpdum核心参数详解 2 理解tcpdump的输出 3 常规过滤规则 4 可选参数解析 5 过滤规则组合 6 特殊过滤规则 7 如何抓取更为准确的
  • 查看linux服务主机,Linux下CodeStriker Server的搭建

    分为以下几个步骤 1 检查并安装Perl解析程序 一般情况下Lnux系统中自带perl解析程序 运行rpm qa grep perl 可以检查是否安装有 在本次安装中 检查到目标机器上装有版本号为5 8 8 10的perl解析程序 如系统中
  • maven中的scope--依赖范围

    初学springboot 在maven配置中了解的 记录下来 在一个maven项目中 如果存在编译需要而发布不需要的jar包 可以用scope标签 值设为provided
  • Aspose转换功能演示:使用C#以编程方式将STL转换为PDF或图像

    STL 立体光刻的缩写 代表3D表面几何形状 这些通常在与CAD有关的应用程序中使用 使用Aspose可以轻松快捷地将STL文件转换为PDF 由于PDF格式的兼容性 这种文件格式转换在需要查看不同操作系统和环境中的信息的情况下很有用 同样
  • 【数据结构--顺序表】移除元素(移除数组中等于val的元素,返回移除后数组新长度)

    题目描述 思路1 定义一个指针str指向首元素 遍历数组nums 如果 str val 则将该元素后面的所有元素前挪一位覆盖该元素 若 str val 则str 然而我们来看看这种写法的时间复杂度 我们可否将时间复杂度优化一下呢 由此想到第
  • PyQty5—第一课:安装及简单的界面设计(附代码)

    在日常办公中我们将经常使用的代码与PyQty5进行配合 从而设计出GUI的小程序 这样不经界面好看而且可以进行打包 发给自己的亲朋好友们进行使用 那么今天我们就来进行PyQty5的第一节课 1 首先我们需要安装PyQty5的库 库名 安装
  • TypeScript 基本类型(一)

    1 boolean 布尔值 true false let isDone boolean false 2 number 数字 和JavaScript 一样 TypeScript 里的所有数字都是浮点数 另外支持二进制 八进制 十进制 十六进制
  • C++ QT连接SQL Server基操

    以下是一个使用C QT连接SQL Server的示例代码 include
  • uniapp登录流程详解uni.login

    uni login OBJECT 登录 H5平台登陆注意事项 微信内嵌浏览器运行H5版时 可通过js sdk实现微信登陆 需要引入一个单独的js 详见普通浏览器上实现微信登陆 并非开放API 需要向微信申请 仅个别开发者有此权限H5平台的其
  • 带你认识一下“京东到家-网关系统”

    京东到家三周年活动已然结束 在这2年里 我们的网关系统经历过了618 1020 双11 双12 415等多个非常有意义的考试 回顾起来依旧让人觉得很刺激 每次考前我们和市场部都做了大量的效果预估 压测 扩容 但是活动当日依旧是惊心动魄 瞬时
  • 2021组队训练赛第11场

    我们的终极目标不是AC 而是获取经验 2021组队训练赛第11场 我们的终极目标不是AC 而是获取经验 问题 A ABB 题意 考点 问题 C Bob in Wonderland 题意 考点 问题 F Zeldain Garden 题意 考
  • Spring框架之注解编程

    代码和配置 代码结构 maven依赖
  • Xshell连接不上虚拟机的问题和解决办法

    第一次用xshell 一直连不上linux 搞了好久 也查了很多办法 但是最后也终于解决了 在这里我分享一下自己的解决办法 再列举网上的办法 希望可以帮助其他人 1 你的linux ip地址没有配置 ip地址没有配置 你需要自己配置 配置的
  • 转行IT:网络工程师VS网络安全工程师,哪个能带你走上人生巅峰?

    记得曾经有人说过这样一个俗语 三百六十行 行行转IT 或许听到这个话的时候会觉得是一句玩笑话 但是浏览到网络上一些关于就业的文章 就能够明白这句话的真正意义所在 随着互联网的发展 越来越多人选择 甚至转行到IT行业 今天就带大家了解 网络工
  • AI实战营第二期 第五节 《目标检测与MMDetection》——笔记6

    文章目录 摘要 主要特性 常用概念 框 边界框 交并比 loU 感受野 有效感受野 置信度 目标检测的基本思路 难点 滑框 在特征图进行密集计算 边界框回归 基于锚框VS无锚框 NMS 非极大值抑制 使周密集预测模型进行推理步骤 如何训练
  • 在Ubuntu里面.AppImage格式安装

    具体而言 直接运行appimage就可以实现 安装 先给软件包可执行权限 chmod u x
  • CS5263芯片 DP转HDMI视频转换芯片 适用于HDMI单转线

    应用 DP转HDMI 视频芯片 分辨率可达到4K 60HZ 产品描述 Capstone CS5263AN是一款高性能DP1 4到HDMI2 0b转换器 设计用于将DP1 4源连接到HDMI2 0b接收器 CS5263AN集成了DP1 4兼容
  • Basic 1047 编程团体赛 (20分)

    题目 编程团体赛的规则为 每个参赛队由若干队员组成 所有队员独立比赛 参赛队的成绩为所有队员的成绩和 成绩最高的队获胜 现给定所有队员的比赛成绩 请你编写程序找出冠军队 输入格式 输入第一行给出一个正整数 N 1 0 4
  • STM32学习笔记—SPI通信

    1 SPI简介 2 函数配置 1 SPI简介 SPI通信是一种高速的 全双工的同步通信总线 通讯时 只占用四条线 MISO MOSI CS SCLK 其中cs为片选线 sclk为时钟线 一般同步通讯带有时钟线 像uart异步通信的就不带 m
  • Python:入门到放弃之基础篇(一)

    文章目录 前言 一 python的标识符 二 python变量类型 1 Number 2 String 3 List 4 Tuple 5 Set 6 Dictionary 三 python流程控制 1 顺序流程控制 2 分支流程控制 3 循