小白跟着大神学Python——Day02 基本运算符、编码初识

今天的主要内容有

1. Pycharm的安装与使用(详情可查看我的文章)

2.while循环

(1)基本循环

 
while 条件:
     
    # 循环体
 
    # 如果条件为真,那么循环体则执行
    # 如果条件为假,那么循环体不执行

(2)循环中止语句 

如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句

  • break用于完全结束一个循环,跳出循环体执行循环后面的语句
  • continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
  • 改变条件
  • exit(),quit() ,不建议使用因为这个是终止整个程序,而不是终止这个循环。

(3)

例子

while True:
    print('小苹果')
    print('小幸运')
    print('小星星')
    print('大星星')
print('凉凉')

break:

flag = True
while flag:
    print('小苹果')
    print('老男孩')
    break
    print('凤凰传奇')

continue:

flag = True
while flag:
    print('小苹果')
    print('老男孩')
    continue
    print('凤凰传奇')

从1打印到100:

# 利用while循环从1打印到100
count = 1
while count<101:
    print(count)
    count += 1
print('打印完了')

count = 1
flag = True
while flag:
    print(count)
    count += 1
    if count == 101:
        flag = False
print('打印完了2')

count = 1
flag = True
while flag:
    print(count)
    count += 1
    if count == 101:
        break
print('打印完了3')

还有很多....

3.格式化输出。

现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式

------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end -----------------

你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = 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,就代表你必须只能输入数字啦

我们运行一下,但是发现出错了。。。

说%d需要一个数字,而不是str, what? 我们明明输入的是数字呀,22,22呀。

不用担心 ,不要相信你的眼睛我们调试一下,看看输入的到底是不是数字呢?怎么看呢?查看数据类型的方法是什么来着?type()

name = input("Name:")
age = input("Age:")
print(type(age))

执行输出是

Name:Alex
Age:22
<class 'str'> #怎么会是str
Job:IT

让我大声告诉你,input接收的所有输入默认都是字符串格式!

要想程序不出错,那怎么办呢?简单,你可以把str转成int

age = int(  input("Age:")  )
print(type(age))

肯定没问题了。相反,能不能把数字转成字符串呢?必然可以,str( )

问题:现在有这么行代码

msg = "我是%s,年龄%d,目前学习进度为80%"%('金鑫',18)
print(msg)

这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?

msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18)
print(msg)

这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

4.基本运算符。

运算符

  计算机可以进行的运算有很多种,可不只加减乘除这么简单。

       运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算、成员运算

算数运算

以下假设变量:a=10,b=20

比较运算

以下假设变量:a=10,b=20

赋值运算

以下假设变量:a=10,b=20

逻辑运算

针对逻辑运算的进一步研究:

1.  在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

例题:

判断下列逻辑语句的True,False。

1,3>4 or 4<3 and 1==1
2,1 < 2 and 3 < 4 or 1>2 
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
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(1>1 or 3<4 or 4>5 and 2>1 and 9>8 or 7<6) #T
print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)#F
print(8 or 3 and 4 or 2 and 0 or 9 and 7)#8
print(0 or 2 and 3 and 4 or 6 and 0 or 3)#4
print(6 or 2 > 1)
print(3 or 2 > 1)
print(0 or 5 < 4)
print(5 < 4 or 3)
print(2 > 1 or 6)#T
print(3 and 2 > 1)#T
print(0 and 3 > 1)#0
print(2>1 and 3)#3
print(3>1 and 0)#0
print(3>1 and 2 or 2 < 3 and 3 and 3 > 2)#2

成员运算:

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

判断子元素是否在原字符串(字典,列表,集合)中:

例如:

a=input('请输入两个英文字母,如sd:')
while True:
    if a in " asdfgh":
        print('牛批')
        break
    elif a not in'asdfgh':
        print('再猜猜?')
        a = input('请输入两个英文字母,如sd:')

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

 

运算符描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

5.编码初识

编码到底是什么呢?所谓编码,是以固定的顺序排列字符,并以此做为记录、存贮、传递、交换的统一内部特征,这个字符排列顺序被称为“编码”。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。

Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,是刚开始的Unicode码,现在更多;一般为4个字节 2**32位。

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

GBK:GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布,目前中文版的WIN95、WIN98、WINDOWS NT以及WINDOWS 2000、WINDOWS XP、WIN 7等都支持GBK编码方案。

ASCII码:0000 0000 包含不了所有东西

unicode :万国码,将全世界所有的文字全都包含进去
起初:

一个字符 用16位 2个字节表示
位数: 0000 0000 0001 0010

升级:
一个字符 用32位 4个字节表示
位数: 0000 0000 0000 0010 0000 0000 0000 0000

太过于浪费资源浪费资源。

UTF-8:最少用8位表示一个字符
英文 : 0000 0000 8位表示一个字符
欧洲语: 0000 0000 0000 0000 16位 两个字节表示一个字符
中文: 0000 0000 0000 0000 0000 0000 24位 3个字节表示一个字符

gbk:国标 只包含英文与自己国家的文字
英文: 0000 0010 8位一个字节表示一个字符
中文:0000 0010 0000 0010 16位 两个字节表示一个字符

posted on 2018-12-20 21:27  C_Jayson  阅读(120)  评论(0)    收藏  举报

导航