---恢复内容开始---
一.格式化输出
现在有以下需求,让用户输入name, age, job,hobby 然后输出如下所示:
----------- info of Alex Li -----------
Name : Alex Li
Age : 22
job : Teacher
Hobbie: girl
------------- end -----------------
你怎么实现呢?你会发现,⽤用字符拼接的⽅方式还难实现这种格式的输出,所以⼀一起来学⼀一下新姿势
只需要把要打印的格式先准备好, 由于⾥里里⾯面的 ⼀一些信息是需要⽤用户输⼊入的,你没办法预设知道,因此可以先放置个占位符,再把字符串串⾥里里的占位符与外部的变量量做个映射关系就好啦
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类型. 否则程序会报错
使⽤用时,需要进⾏行行类型转换.
int(str) # 字符串串转换成int str(int) # int转换成字符串串
类似这样的操作在后⾯面还有很多
如果, 你头铁. 就不不想转换. 觉着转换很麻烦. 也可以全部都⽤用%s. 因为任何东⻄西都可以直接转换成字符串串--> 仅限%s
现在⼜又来新问题了了. 如果想输出:
我叫xxx, 今年年xx岁了了,我们已经学习了了2%的python基础了了
这⾥里里的问题出在哪⾥里里呢? 没错2%, 在字符串串中如果使⽤用了了%s这样的占位符. 那么所有的%都将变成占位符. 我们的2%也变成了了
占位符. ⽽而"%的"是不存在的, 这⾥里里我们需要使⽤用%%来表⽰示字符串串中的%.
注意: 如果你的字符串串中没有使⽤用过%s,%d站位. 那么不需要考虑这么多. 该%就%.没⽑毛病老铁.
print("我叫%s, 今年年22岁了了, 学习python2%%了了" % '王尼玛') # 有%占位符 print("我叫王尼玛, 今年年22岁, 已经凉凉了了100%了了") # 没有占位符⼆二. 基本运算符计算机可以进⾏行行的运算有很多种,可不不只加减乘除这么简单,运算按种类可分为:
⼆运算二. 基本运算符
算数运算、;比较运算符. 逻辑运算 复制运算 成员运算 身份运算 位运算
算数运算: a=10 b=20
+ | 两个数相加 |
- | 两个数相减 |
* | 两个数相乘,或者是一个被重复若字符串干次的 |
/ | x除以y |
% | 取余 |
// | 地板除 |
** | 求幂 |
比较运算
> | a大于b | |
< | a小于b |
|
>= | a大于等于b | |
<= | a小于等于b | |
=! | a不等于b | |
== | a和b相等 | |
<> | a不等于b 目前不推荐使用 |
赋值运算
= | 简单的赋值运算 |
+= | 加法赋值运算 |
-= | 减法赋值运算 |
/= | 除法赋值运算 |
*= | 乘法赋值运算 |
**= | 幂值赋值运算 |
//= | 取整除赋值运算 |
%= | 取余赋值运算 |
逻辑运算
and or not
针对逻辑运算的进⼀一步研究:
1, 在没有()的情况下not 优先级⾼高于 and,and优先级⾼高于or,即优先级关系为( )>not>and>or,同⼀一优先级从左往
右计算。
() > not > and > or
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。
print(x or y) x为真时 结果为y print(x and y) x为真时 结果为x
三. 编码的问题
python2解释器器在加载 .py ⽂文件中的代码时,会对内容进⾏行行编码(默认ascill),⽽而python3对内容进⾏行行编码的默认为utf-
8。
计算机:
早期. 计算机是美国发明的. 普及率不不⾼高, ⼀一般只是在美国使⽤用. 所以. 最早的编码结构就是按照美国⼈人的习惯来编码
的. 对应数字+字⺟母+特殊字符⼀一共也没多少. 所以就形成了了最早的编码ASCII码. 直到今天ASCII依然深深的影响着我们.
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字⺟母的⼀一套电
脑编码系统,主要⽤用于显示现代英语和其他⻄西欧语⾔言,其最多只能⽤用 8 位来表示(⼀一个字节),即: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
字⺟母A:0100 0001 # ASCII 字⺟母A:0000 0000 0100 0001 # 国标码
国标码的弊端: 只能中国⽤用. ⽇日本就垮了了. 所以国标码不满⾜足我们的使⽤用. 这时提出了了⼀一个万国码Unicode. unicode⼀一
开始设计是每个字符两个字节. 设计完了了. 发现我⼤大中国汉字依然⽆无法进⾏行行编码. 只能进⾏行行扩充. 扩充成32位也就是4个字
节. 这回够了了. 但是. 问题来了了. 中国字9万多. ⽽而unicode可以表⽰示40多亿. 根本⽤用不了了. 太浪费了了. 于是乎, 就提出了了新的
UTF编码.可变⻓长度编码
UTF-8: 每个字符最少占8位. 每个字符占⽤用的字节数不定.根据⽂文字内容进⾏行行具体编码. 比如. 英⽂文. 就⼀一个字节就够了了. 汉
字占3个字节. 这时即满⾜足了了中⽂文. 也满⾜足了了节约. 也是⽬目前使⽤用频率最⾼高的⼀一种编码
UTF-16: 每个字符最少占16位.
GBK: 每个字符占2个字节, 16位.
单位转换:
8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
补充1: while循环.
while 条件:
循环体
else: 循环在正常情况跳出之后会执⾏行行这⾥里
index = 1 while index < 11: if index == 8: # break pass else: print(index) index = index+1 else:print("你好")
注意: 如果循环是通过break退出的. 那么while后⾯面的else将不会被执⾏行行, 只有在while条件判断是假的时候才会执⾏行行这个
else
pass: 不表⽰示任何内容. 为了了代码的完整性. 占位⽽而已
补充2: in和not in
可以判断xxx字符串串是否出现在xxxxx字符串串中
content = input("请输⼊入你的评论") if "苍⽼老老师" in content or '邱⽼老老师' in content: print('你输⼊入的内容不不合法') else: print("评论成功"
while循环的代码
# 死循环 # count = 1 # while count <= 5: # print("喷死你..") # count = count + 1 # 数数 1-100 # count = 1 # while count < 101: # print(count) # count = count + 2 # 让用户一直去输入内容, 并打印. 直到用户输入q的时候退出程序 # while True: # content = input("请输入一句话,(输入q退出程序):") # if content == 'q': # break # 打断. 终止当前本层循环 # print(content) flag = True while flag: content = input("请输入一句话,(输入q退出程序):") if content == 'q': flag = False # 打断. 终止当前本层循环 print(content) else: print("123") # while True: # content = input("请输入一句话,(输入q退出程序):") # if content == 'q': # continue # 停止当前本次循环. 继续执行下一次循环 # print(content) # break和continue的区别: break是彻底的停止掉当前层循环. continue停止当前本次循环,继续执行下一次循环 # count = 1 # while count <= 10: # if count == 4: # count = count + 1 # continue # 用来排除一些内容 # print(count) # count = count + 1 # 必须要写 # count = 1 # while count <= 20: # if count == 10: # break # 不会触发else的执行, while...else...是一个整体. break的时候彻底的停止这个整体 # print(count) # count = count + 1 # else: # 当上面的条件不成立的时候执行这个else中的代码 # print("数完了")
格式化的代码
# name="alex" # age = 38 # hobby = "浪" # location = "湖边" # # # print(age+"岁的"+name+"在"+location+"喜欢"+hobby) # # # 格式化 # # %s 占位. 占位的是字符串, 全能的. 什么都能接 # # %d 占位. 占位的是数字 # print("%s岁的%s在%s喜欢%s" % (age, name, location, hobby)) # name = input("请输入名字:") # age = input("请输入年龄:") # job = input("请输入你的工作:") # hobby = input("请输入你的爱好:") # # s = '''------------ info of %s ----------- # Name : %s # Age : %s # job : %s # Hobbie: %s # ------------- end -----------------''' % (name, name, age, job, hobby) # # print(s) # name = 'sylar' # # 如果你的字符串中出现了%s这样的格式化的内容. 后面的%都认为是格式化.如果想要使用%. 需要转义 %% # print("我叫%s, 我已经学习了2%%的python了" % (name)) # # print("我叫周润发. 我已经活了50%了")
简单基本运算的代码
# print(1+1) # print(1-1) # print(1*2) # print(1/2) # print(10%3) # 计算余数 10/3=3......1 # n = 49 # if n % 2 == 1: # print("奇数") # else: # print("偶数") # print(10//3) # 整除. 地板除. 计算商 # print(5**3) # 5的2次幂 m**n m的n次幂 # a = 10 # b = 20 # print(a == b) # 等于 # print(a != b) # 不等于 a = 1 b = 2 a += b # a = 3 a+=b => a = a + b # a *= b => a = a * b print(a) print(b)
逻辑运算的代码
# 1. and 并且的含义. 左右两端同时为真. 结果才能是真. # 2. or 或者的含义. 左右两端有一个是真. 结果就是真. 所有的条件都是假. 结果才是假 # 3. not 取反 非真既假, 非假既真 # 顺序: () => not => and => or 相同的运算. 从左往右算 # print(1>2 and 4<6 or 5>7) # print(1 > 2 or 3 > 4) # print(5>3 or 4<6) # print(5>3 or 4>6) # 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 # x or y 如果x是0 返回y, 如果x是非零, 返回x # print(1 or 2) # 1 # print(1 or 0) # 1 # print(0 or 1) # 1 # print(0 or 2) # 2 # print(0 or 1 or 2 or 3) # print(3 or 0 or 1 or 0 or 2) # and和or相反. 不要去总结and. 记住or # print(1 and 2) # 2 # print(0 and 2) # 0 # print(1 and 0) # 0 # print(0 and 1) # 0 # print(1 and 2 or 3) # print(1 or 2 and 3) # False: 0, True: 1(非零) # print(1 and 2>3) # print(2>3 and 1) # print(1 > 2 or 0 and 3 < 6 or 5) # 先算and 后算or
in and not in 代码
content = input("请输入你的评论:") if "马化腾" not in content: print("你的言论不和谐") else: print(content)