python基础二
格式化输出
制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx。要完成这个需求就要用到格式化输出,例子如下:
name = input('输入您的名字:') location = input('输入您喜欢的地点:') hobby = input('输入您的爱好:') print('英俊潇洒的%s,最喜欢在%s地方通过%s和钢铁侠大战' % (name, location, hobby))
其中%号就是格式化输出的占位符,这里的%s中的s是str字符串类型,也可以是%d,d代表的是数字类型。而要格式化输出的变量要放在输出的内容的后面的%()的括号中,并且要按对应填写,变量之间用逗号隔开。ps:变量的类型要和%后所跟的字符类型要对应,不然会报错!
name = input('请输入你的名字:') age = int(input('请输入你的年龄:')) job = input('请输入你的工作:') hobby = input('兴趣爱好:') msg = '''-------- info of %s -------- Name : %s Age : %d Job : %s Hobby: %s -------- end --------''' % (name, name, age, job, hobby) print(msg)
字符编码
众所周知,电子计算机内部都是通过二进制数字来处理数据的,即0101001这种。但是人类沟通和交流都是用文字来完成的,但是这些文字并不能被只能处理二进制数字的计算机所理解而进行处理。因此人们创造了一个“密码本”,将文字和二进制数字设定了一个对应表,以此来使计算机能够处理我们的文字信息。
最早的“密码本”叫ASCII,因为计算机是美国发明的,所以ASCII包含了英文字母大小写,特殊字符和数字。ASCII 8位(一个字节)表示一个字符,如01000001表示大写字母A,所以它最多也就只能表示256种。
但是随着计算机的发展,ASCII不能满足其他国家的使用,所以为了涵盖所有国家的文字字符,创办了万国码Unicode。Unicode 32位(四个字节)表示一个字符,这个就造成了一个字符所占空间过大,对计算机储存和处理数据造成了很大的影响。因此在Unicode的基础上升级出了新的编码方式utf-8,utf-8 英文的用8位去表示一个字符,而欧洲和亚洲的一些国家的用16位去表示一个字符,中文则用24位去表示一个字符。以此来节省字符的占用空间。
中国人自己也发明了一种编码,叫GBK,其中文用两个字节表示。
数据单位换算表 | ||
8bit | = | 1byte |
1024byte | = | 1KB |
1024KB | = | 1MB |
1024MB | = | 1GB |
1024GB | = | 1TB |
基本运算符
算数运算符
假设a=10,b=20
比较运算符
假设a=10,b=20
赋值运算符
假设a=10,b=20
逻辑运算符
and
print(2 > 1 and 1 < 4) #结果为True print(2 > 1 and 1 > 4) #结果为False
or
print(2 > 1 or 1 > 4) #结果为True print(2 < 1 or 1 > 4) #结果为False
not
print(not 2 > 1) #结果为False print(not 2 < 1) #结果为True
当不同的逻辑运算符同时出现时怎么办呢?这就要考虑到他们的优先级了。
优先级:() > not > and > or
通过下面的练习就能够明白优先级的问题:
print(3 > 4 or 4 < 3 and 1 == 1) # F print(1 < 2 and 3 < 4 or 1 > 2) # T print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # T print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # F print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # F print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # F
以上逻辑运算符两边的都是比较,如果都是数字或者一边是数字一边是比较时,又会是什么结果呢?
两边都是数字的
'''x or y x为True,则返回x(非零数字都为True)''' print(1 or 2) # 1 print(3 or 2) # 3 print(0 or 2) # 2 print(0 or 100) # 100 '''x and y x为True,则返回y''' print(1 and 2) #2 print(0 and 2) #0
一边为数字一边为比较的
'''x or y x为True,则返回x,x为数字就返回数字,为比较就返回比较的结果(True或False)反之为y''' print(2 or 1 < 3) #2 print(1 < 3 or 2) #True '''x and y x为True,则返回y,y为数字就返回数字,为比较就返回比较的结果(True或False)反之为x''' print(2 and 1 < 3) #True print(1 < 3 and 2) #2
ps:如果同时有or和and,上面的优先级同样适用!