编译型: 把代码一次性编译成二进制文件,如C/C++
优点:运行效率高
缺点:开发效率慢,不能跨平台
解释型: 当程序运行时,一行一行解释二进制语言
优点:开发效率高,可以跨平台
缺点:运行效率低,但其实是感觉不出来的
相当于标识符,隔开条件与结果
1.改变条件,使其不成立;
2.使用break 或者 continue 语句
三种思路:第一:加入空格这个思路;第二:Pass 语句,什么都不执行
第三,用continue语句,这个最简洁。
# 第一:加入空格这个思路
number = 0
while number < 10:
number += 1
if number == 7:
print(' ')
else:
print(number)
#第二:Pass 什么都不执行
number = 0
while number < 10:
number += 1
if number == 7:
pass
else:
print(number)
# 第三,最优解,最简洁
number = 0
while number < 10:
number += 1
if number == 7:
continue
print(number)
刚入门学习的话,只要能把代码写出来,能出结果就好了。至于代码的优化,简洁等需要积累。
思路:第一,最简单的写法,从1开始,自加2即可;第二,标准写法,取余数。
# 第一种:直接让count自加2即可,count += 2
count = 1
while count < 101:
print(count)
count += 2
# 第二种:标准写法,奇数对2取余数为1,然后打印这些数即是奇数。
count = 1
while count < 101:
if count % 2 == 1:
print(count)
count += 1
注:偶数同样如此。
按照第一种写法,只需把count = 0
即可;
按照第二种写法,把if那块改成if count % 2 == 0:
或者if count % 2 !=1:
即可
观察:奇数的时候是正号,偶数的时候是负号,可想到用if语句,分支。图解如下:
count = 1
sum = 0
while count < 100:
if count % 2 == 1:
sum = sum + count
if count % 2 == 0:
sum = sum - count
count += 1
print (sum)
思路:用户交互-input,有账号密码,只能输入三次–while循环三次。
tries = 0
while tries < 3:
username = input('请输入账号:')
password = int(input('请输入密码:'))
if username == 'Lric' and password == 123:
print ('登陆成功')
else:
print('登录失败,请重新登录')
tries += 1
else:
print('输错超过三次,您的用户已经被锁定,请20分钟后再试')
对比自己写的代码,不用先定义 account
和 password
的值,直接判断是否等于心里设想的那个值即可。
引入:以下代码是Alex的自我介绍,但是这只是他自己的。能不能我输入谁的名字,就输出谁的信息?这就需要用到格式化输出了。
name = input('请输入你的姓名:')
age = input('请输入你的年龄:')
height = input('请输入你的身高:')
print ('我的名字是:',name '我的年龄是:', age '我的身高是:',height)
#输出
请输入你的姓名:Alex
请输入你的年龄:23
请输入你的身高:173
我的名字是: Alex 我的年龄是: 23 我的身高是: 173
假如有一个练习,问姓名,年龄,工作,爱好,需要打印成以下格式,怎么办呢?
------------ info of Alex Li -----------
Name : Alex Li
Age : 22
job : Teacher
Hobbie: girl
------------- end -----------------
**格式化输出:**其实就是占位,告诉计算机这个地方我后面需要根据用户的输入,来进行替换
name = input('your name is :')
age = input('your age is :')
height = input('your height is ')
job = input('your job is:')
hobby = input('your hobby is:')
info = '''------------ info of %s ----------- # 每一个%s 相当于一个占位符,替换name
Name : %s #代表nane
Age : %d #代表age
Height: %d #代表height
job : %s #代表job
Hobby: %s #代表hobby
------------- end -----------------''' %(name,name,age,height,job,hobby)
print(info)
运行下
为什么会报错?
报错的原因是%d
要求是数字类型,而不是字符串。但是我们明明输入的24呀?这是因为input
接受的默认为字符串类型。
那怎么解决?
把类型转换一下 或者把%d
改成%s
即可
思考:在格式化输出的时候,的确需要输出%那怎么操作?
现在有如下代码
info = "我是%s,年龄%d,目前学习进度为3%"%('Ric',18)
print(info)
会报错。因为当出现%时,默认就是占位%。的确需要%,那怎么操作呢?用两个%%,相当于转义符,告诉计算机后面%是要打印的!
info = "我是%s,年龄%d,目前学习进度为3%%"%('Ric',18)
print(info)
那后面再加一个s呢,会报错吗?不会,因为前面有一个%了,直接把后面的%s
当作字符串输出了。
info = "我是%s,年龄%d,目前学习进度为3%%s"%('Ric',18)
print(info)
#输出
我是Ric,年龄18,目前学习进度为3%s
引入:问题,QQ是如何传递信息的?这涉及到七层协议,需要一层一层的拆解,拆到最底层走的是电信号,也即计算机能识别的二进制
假如:
00000 代表“你” 0101 代表 “好” 0100 代表“啊”。但是,把它们放在一起,就不知到是什么意思了。
0000001010100 计算机在不知道以上含义的前提下能准确识别吗?
因此,就要制定一个规则,逢几个数字为一组
基于此,有了美国ASCII码
美国ASCII码
只适用于显示英语等,最开始只有7位,但设计者为了以后的拓展,预留了一位,因此有8位(0000 0000),8位表示一个字节,2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
补充:单位换算
8bit = 1 byte (一个字节)
1024 byte = 1 KB
1024 KB = 1 MB
1024 MB =1 GB
1024 GB = 1TB
但是只能满足英文,而不能显示世界上其他语言和符号。为了解决这个问题,推行了一个万国码——Unicode
Unicode
它为每种语言中的每个字符设定了统一并且唯一的二进制编码,用16位(2个字节)来表示现有的字符和符号。共有 2** 16 = 65536种。但是,中文有9w多字,还是不够。后面用32位(4个字节)来表示中文,但是这样空间太冗余,占用资源太浪费。于是对Unicode进行了升级——Utf-8,Utf-16,Utf-32
Utf-8
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:
英文中的内容用1个字节保存;
欧洲的字符用2个字节保存;
东亚的字符用3个字节(2 ** 24 = 16777216)保存。
gbk:中国国产,只用于中文和ascii码中文字。用一个字节表示英文,两个字节表示中文
重点关注逻辑运算符
运算优先级 ()> not > and> or
练习:写出下列代码的输出结果
print(3>4 or 4<3 and 1==1) # False
print(1 < 2 and 3 < 4 or 1>2) # True
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) #True
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # False
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #False
print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) #False
思考:若逻辑运算符前后全是数字呢? 如以下代码
print(0 or 2) #2
print(3 or 2) #3
print(1 and 2) #2
print(0 and 2) #0
运算规则:
(1)x or y , x为真,值就是x,x为假,值是y;
(2)x and y, x为真,值是y,x为假,值是x
以上记忆一个就可以了,and 和 or 是相反的。
思考:以下代码返回什么?
print(1 > 2 and 3 or 4 and 3 < 2)
返回False。为什么
从左至右依次运算!!再按照and or 先后顺序
1.False and 3 or 4 and False
2.False or False
以下练习同理
print(2 or 1 < 3) # 2
print(3 and 1 < 3) #True
print(0 or 1 < 3) #True
print(0 and 1 < 3) #0
print(5 and 3 < 1 and 2) #False
print(0 or 3 < 1 and 2) #False
Q:python中的>
或者<
之类的运算符的优先级比or
大,比and
小?
不全对哦!
优先级:比较运算符(> < >= <=
)比 逻辑运算符 (not and or
)要高。
点击移步运算优先级
如果觉得这篇文章对你有小小的帮助的话,记得给文章点个“赞”哦,博主在此感谢!