Python入门

一.while循环

  什么是循环?说白了就是重复某个事物,你可以让它一直重复,也可以通过添加一些条件,让这个循环在我们的掌握中!下面让我们进入今天额内容.

  1.while循环的语法

    while 条件:

      循环体

while True:       #True 表示这个条件一直成立
    print('你好')   #死循环  会一直打印 你好

  死循环在我们生活中也有应用到,比如:输入用户名和密码这种情况,输入错误可以一直输,当然也有次数限制的情况,这个会在下面的内容中提到

  while 条件:

    循环体

  else:

    循环体

s = input('输入数字:')
while s > 60:    #你输入的数字如果大于60,就会打印下面的结果
    print('及格')
else:            #else 是否则的意思,如果小于60,就执行下面的代码
    print('不及格')

  上面的只是最简单的情况,通常while会和if语句组合使用,这样可以实现更多的功能

例如:

s = input('输入数字:')
while True:
    if s > 60:
        print('及格')
    else:
        print('不及格')
 

  上面的这种情况还是不够完美,还是死循环,又想实现功能,又想让它在实现完功能后自动停止,怎么办呢?

这里就要我们认识两个单词:break,continue

break 结束循环

continue 结束本次循环继续下次循环

s = input('输入数字:')
while True:
    if s > '60':
        print('及格')
     break
    else:
        print('不及格')
     break
结果:如果你输入的数字大于60,打印完及格就会结束循环
  输入的数字小于60,会打印不及格,同样也会结束循环  

这是break一个简单的小应用,下面我们来说说continue的应用

注意: 如果循环是通过break退出的. 那么while后面的else将不会被执行, 只有在while条件判断是假的时候才会执行这个 else

while True:
    user = input('请输入用户名:')
    pwd = input('请输入密码:')
    if user == '喜羊羊' and pwd == '123'
        print('登录成功')
        break
    else:
        print('用户名或者密码错误,请重新输入')
        continue    
结果:用户名输入'喜羊羊'和密码输入'123',则显示登陆成功,然后就会结束循环
   有一个或者两个都没输对,就会显示用户名或密码错误,重新输入,continue就是起到输入不正确,让你能重新输入
   否则就会一直打印'用户名或密码错误,请重新输入'

  这种情况就是就是我们生活中经常遇到的登录情况,是不是很有画面感,当然我们还能限制输入次数,防止被盗.

count = 1      #定义一个计数器
while count <= 3: #把条件设置在一个范围,只能输入三次,三次都不对就会退出程序 user = input('请输入用户名:') pwd = input('请输入密码:') if user == '喜羊羊' and pwd == '123' #用户名和密码都正确才能登陆成功 print('登录成功') break else: print('用户名或者密码错误,请重新输入')
     count += 1 #每次让它加1,既可以循环,又能限制次数,当上边count不满足条件就会自动停止

同样,我们也可以用while循环让程序数数,从1数到100

 count = 1
 while count <= 100:
     print(count) 
     count = count + 1
结果:1
   2
   3
  ...
  100
数数. 1-100奇数
count = 1
while count <= 100:
print(count)
count = count + 2

while循环求和

计算 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 然后输出如下所示:
------------ 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%了") # 没有占位符 

三.运算符

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

算数运算、 比较运算、 逻辑运算、 赋值运算、 成员运算、 身份运算、 位运算.

今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

  2.1算数运算

    假设我们现在设置两个变量 : a = 10   b = 20

运算符     描述                                                                     实例

   +        加 + 两个对象相加                                              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

运算符                描述                                                实例
 ==        等于 - 比较对象是否相等                                   (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 赋值运算

运算符                描述                                                实例
 =             简单的赋值运算符                                   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 逻辑运算

运算符                            描述                                     实例                                   
 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。

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.

字母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就够了

 

  

原文地址:https://www.cnblogs.com/pythoncainiao/p/10029768.html