Python入门
一.while循环
什么是循环?说白了就是重复某个事物,你可以让它一直重复,也可以通过添加一些条件,让这个循环在我们的掌握中!下面让我们进入今天额内容.
1.while循环的语法
while 条件:
循环体
1 2 | while True : #True 表示这个条件一直成立 print ( '你好' ) #死循环 会一直打印 你好 |
死循环在我们生活中也有应用到,比如:输入用户名和密码这种情况,输入错误可以一直输,当然也有次数限制的情况,这个会在下面的内容中提到
while 条件:
循环体
else:
循环体
1 2 3 4 5 | s = input ( '输入数字:' ) while s > 60 : #你输入的数字如果大于60,就会打印下面的结果 print ( '及格' ) else : #else 是否则的意思,如果小于60,就执行下面的代码 print ( '不及格' ) |
上面的只是最简单的情况,通常while会和if语句组合使用,这样可以实现更多的功能
例如:
1 2 3 4 5 6 | s = input ( '输入数字:' ) while True : if s > 60 : print ( '及格' ) else : print ( '不及格' )<br> |
上面的这种情况还是不够完美,还是死循环,又想实现功能,又想让它在实现完功能后自动停止,怎么办呢?
这里就要我们认识两个单词:break,continue
break 结束循环
continue 结束本次循环继续下次循环
1 2 3 4 5 6 7 8 9 10 | s = input ( '输入数字:' ) while True : if s > '60' : print ( '及格' ) break else : print ( '不及格' ) break 结果:如果你输入的数字大于 60 ,打印完及格就会结束循环 输入的数字小于 60 ,会打印不及格,同样也会结束循环 |
这是break一个简单的小应用,下面我们来说说continue的应用
注意: 如果循环是通过break退出的. 那么while后面的else将不会被执行, 只有在while条件判断是假的时候才会执行这个 else
1 2 3 4 5 6 7 8 9 10 | while True : user = input ( '请输入用户名:' ) pwd = input ( '请输入密码:' ) if user = = '喜羊羊' and pwd = = '123' print ( '登录成功' ) break else : print ( '用户名或者密码错误,请重新输入' ) continue 结果:用户名输入 '喜羊羊' 和密码输入 '123' ,则显示登陆成功,然后就会结束循环<br> 有一个或者两个都没输对,就会显示用户名或密码错误,重新输入, continue 就是起到输入不正确,让你能重新输入<br> 否则就会一直打印 '用户名或密码错误,请重新输入' <br> |
这种情况就是就是我们生活中经常遇到的登录情况,是不是很有画面感,当然我们还能限制输入次数,防止被盗.
1 2 3 4 5 6 7 8 | count = 1 #定义一个计数器<br>while count <= 3: #把条件设置在一个范围,只能输入三次,三次都不对就会退出程序 user = input ( '请输入用户名:' ) pwd = input ( '请输入密码:' ) if user = = '喜羊羊' and pwd = = '123' #用户名和密码都正确才能登陆成功 print ( '登录成功' ) break else : print ( '用户名或者密码错误,请重新输入' )<br> count + = 1 #每次让它加1,既可以循环,又能限制次数,当上边count不满足条件就会自动停止 |
同样,我们也可以用while循环让程序数数,从1数到100
1 2 3 4 | count = 1 while count < = 100 : print (count) count = count + 1 <br>结果: 1 <br> 2 <br> 3 <br> ...<br> 100 数数. 1 - 100 奇数<br>count = 1 <br> while count < = 100 :<br> print (count)<br> count = count + 2 |
while循环求和
1 2 3 4 5 6 7 | 计算 1 - 100 之间所有的数的和 sum = 0 # sum: 0 + 1 + 2 + 3 + 4....99 + 100 count = 1 # count: 1, 2, 3, 4, 99,100, 101 while count < = 100 : sum = sum + count # 累加运算 count = count + 1 print ( sum ) |
二.格式化输出
现在如果我们有这种需求,让用户输入name, age, job,hobby 然后输出如下所示:
1 2 3 4 5 6 | - - - - - - - - - - - - info of Alex Li - - - - - - - - - - - Name : Alex Li Age : 22 job : Teacher Hobbie: girl - - - - - - - - - - - - - end - - - - - - - - - - - - - - - - - |
你怎么实现呢?你会发现,用字符拼接的方式很难实现这种格式的输出,所以一起来学习下新姿势 只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预先知道,因此可以先放置个占位 符,再把字符串里的占位符与外部的变量做个映射关系就好啦!
1 2 3 4 5 6 7 8 9 10 11 12 13 | name = input ( "Name:" ) age = input ( "Age:" ) job = input ( "Job:" ) hobby = input ( "Hobbie:" ) info = ''' ------------ info of %s ----------- #这里的每个 %s 就是⼀个占位符,本行的代表后面拓号里的name Name : %s #代表 name Age : %s #代表 age job : %s #代表 job Hobbie: %s #代表 hobbie ------------- end ----------------- ''' % (name,name,age,job,hobbie) # 这里的 % 号就是把前面的字符串与括号后面的变量关联起来 print (info) |
%s就是代表字符串占位符,除此之外,还有%d, 是数字占位符,如果把上面的age后面的换成%d,就代表你必须只能输入数字 , 这时对应的数据必须是int类型 . 否则程序会报错 , 使用时 , 需要进行类型转换.
1 2 | int ( str ) # 字符串转换成int str ( int ) # int转换成字符串 |
类似这样的操作在后面还有很多, 如果 你头铁, 就不想转换, 觉着转换很麻烦, 也可以全部都用%s. 因为任何东西都可以直接转换成字符串--> 仅限%s .现在又来新问题了. 如果想输出:
1 | 我叫xxx, 今年xx岁了,我们已经学习了 2 % 的python基础了 |
这里的问题出在哪里呢? 没错2%, 在字符串中如果使用了%s这样的占位符. 那么所有的%都将变成占位符. 我们的2%也变成了 占位符. 而"%的"是不存在的, 这里我们需要使用%%来表示字符串中的%.
注意: 如果你的字符串中没有使用过%s,%d站位. 那么不需要考虑这么多. 该%就%.没毛病老铁.
1 2 | print ( "我叫%s, 今年22岁了, 学习python2%%了" % '王尼玛' ) # 有%占位符 print ( "我叫王尼玛, 今年22岁, 已经凉凉了100%了" ) # 没有占位符 |
三.运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为:
算数运算、 比较运算、 逻辑运算、 赋值运算、 成员运算、 身份运算、 位运算.
今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
2.1算数运算
假设我们现在设置两个变量 : a = 10 b = 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 运算符 描述 实例 + 加 + 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 - 10 * 乘 * 两个数相乘或返回一个被重复若干次的字符串 a * b 输出结果 200 / 除 / x除以y b / a 输出结果 2 % 取模 % 返回除法的余数 b % a 输出结果 0 * * 幂 * * 返回x的y次幂 a * * b 10 的 20 次方 100000000000000000000 / / 取整除 / / 返回商的整数部分 9 / / 2 输出结果 4 9.0 / / 2.0 输出结果 4.0 |
2.2 比较运算
以下假设变量:a=10,b=20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 运算符 描述 实例 = = 等于 - 比较对象是否相等 (a = = b)返回 False ! = 不等于 - 比较两个对象是否不相等 (a = = b)返回 True <> 不等于 - 比较两个对象是否不相等 (a <> b)返回 True > 大于 - 返回x是否大于y (a > b)返回 False < 小于 - 返回x是否小于y (a < b)返回 True > = 大于等于 - 返回x是否大于等于y (a > = b)返回 False < = 小于等于 - 返回x是否小于等于y (a < = b)返回 True |
注意: <> 不等于,类似于 !=,不过python3.x版本以后都用 !=
所有比较运算符返回1表示真,返回0表示假,这分别与特殊的变量True和False等价.变量名记得要大写
2.3 赋值运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 运算符 描述 实例 = 简单的赋值运算符 c = a + b 将 a + b的运算结果赋值为c + = 加法赋值运算符 c + = a等效于 c = c + a - = 减法赋值运算符 c - = a等效于 c = c - a * = 乘法赋值运算符 c * = a等效于 c = c * a / = 除法赋值运算符 c / = a等效于 c = c / a % = 取模赋值运算符 c % = a等效于 c = c % a * * = 幂赋值运算符 c * * = a等效于 c = c * * a / / = 取整除赋值运算符 c / / = a等效于 c = c / / a |
2.4 逻辑运算
1 2 3 4 5 6 | 运算符 描述 实例 and 布尔 '与' ,如果x为 False ,x and y返回 False ,否则它返回y的计算值 (a and b) 返回 True or 布尔 '或' ,如果x是 True ,它返回 True ,否则它返回y的计算值 (a and b) 返回 True not 布尔 '非' ,如果x为 True ,返回 False .如果x为 False ,它返回 True not (a and b)返回 False |
针对逻辑运算的进一步研究:
1, 在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同级优先级从左往右计算。
() > not > and > or
例题: 判断下列逻辑语句的True,False。
1 2 3 4 5 6 | 3 > 4 or 4 < 3 and 1 = = 1 1 < 2 and 3 < 4 or 1 > 2 2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 |
2. x or y , x为真,值就是x,x为假,值是y;
x and y, x为真,值是y,x为假,值是x
in和not in
可以判断xxx字符串是否出现在xxxxx字符串中
content = input("请输入你的评论:") if "苍老师" in content or '邱老师' in content: print('你输入的内容不合法') else: print("评论成功")
四.初始编码
python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),在python3对内容进行编码的默认为utf-8。
早期, 计算机是美国发明的, 普及率不高, 一般只是在美国使用. 所以, 最早的编码结构就是按照美国人的习惯来编码的,对应数字+字母+特殊字符总共也没多少. 所以就形成了最早的编码ASCII码, 直到今天ASCII依然深深的影响着我们. ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电 脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(1个字节),即:2**8 = 256,所 以,ASCII码最多只能表示 256 个符号.
随着计算机的发展, 以及普及率的提高, 流行到欧洲和亚洲, 这时ASCII码就不合适了. 比如: 中国汉字有几万个,而ASCII 最多也就256个位置, 所以ASCII不行了, 怎么办呢? 这时, 不同的国家就提出了不同的编码来适用于各国的语言环境. 比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等. 这时各个国家都可以使用计算机了. GBK, 国标码占用2个字节, 对应ASCII码 GBK直接兼容, 因为计算机底层是用英文写的, 你不支持英文肯定不行, 而英文已经使用了ASCII码, 所以GBK要兼容ASCII, 这里GBK国标码前面的ASCII码部分, 由于使用两个字节, 所以对于ASCII码而言, 前9位都是0.
1 2 | 字母A: 0100 0001 # ASCII 字母A: 0000 0000 0100 0001 # 国标码 |
国标码的弊端: 只能中国用,日本就垮了, 所以国标码不满足我们的使用, 这时提出了一个万国码Unicode. unicode刚开始设计是每个字符两个字节, 设计完了, 发现我们中国汉字依然无法进行编码, 只能进行扩充, 扩充成32位也就是4个字节, 这回够了, 但是问题来了, 中国字9万多, 而unicode可以表示40多亿, 根本用不了, 太浪费了, 于是乎, 就提出了新的 UTF编码.可变长度编码.
UTF-8: 每个字符最少占8位, 每个字符占用的字节数不定, 根据文字内容进行具体编码. 比如: 英文, 就1个字节就够了, 汉 字占3个字节, 这时既满足了中文, 也满足了节约, 也是目前使用频率最高的一种编码.
UTF-16: 每个字符最少占16位. GBK: 每个字符占2个字节, 16位.
GBK: 每个字符占2个字节, 16位.
单位转换:
8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024PB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
常用到TB就够了
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!