python之路-Day1 自记笔记

一、为什么选择python3?

python2是遗产,python3是现在和未来的语言 目前2.7会支持到2020年,2.x版本不会再有大变动和更新

所有的最新的标准库更新只会在3.x版本出现 3.x不兼容老版本,是最激进的改变, python3可以直接默认写中文了,详见字符编码知识点

某些库改名了 下划线取消,大写变小写

twisted目前还不支持3.x,他是一个非常强大又复杂的异步网络框架,异步的牛逼之处在于单线程的能力还优于多线程,预计2018-2019会支持

我的第一个python程序:hello world

print ("Hello World!")

二、变量

变量就是把内容存起来,后面留着调用使用,变量存在内存中

变量的使用:直接赋值就可以

  1 # Auther: Tank Jarvis
  2 name1 = "Tank"
  3 print(name1)
玩个有意思的:
  1 # Auther: Tank Jarvis
  2 
  3 print("Hello world")
  4 
  5 name1 = "Tank"
  6 name2 = name1
  7 print(name1)
  8 print(name2)
  9 
 10 name1 = "Jarvis"
 11 
 12 print(name1)
 13 print(name2)

name2会跟随name1而改变吗?

答案是不会,为什么?因为变量的指向是内存,一开始name1与name2都指向了内存的Tank,后来name1变为Jarvis,name2还是指向Tank而不是name1,所以要明白我们变量的内容都在内存里,每个变量也都在指向内存中的赋值。

扫描二维码关注公众号,回复: 4158960 查看本文章

1.变量的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

另外变量名字要有意义,别整一个字母就当变量 、别整拼音当变量、别整中文当变量 01405150


三、字符编码

计算机只认识0与1

怎么用0与1表示所有的数字?  就用二进制

0   1   2   4   8   16    32    64    128    256    512    1024    2048    4096 。。。

依次是从2的0次方开始向后计算

2**0   2**1   2**2   2**3   2**4   2**5 。。。

如果要表示79,就可以这么去想 79-64=15   15-8=7  7-4=3  3-2=1  1-1=0,用到了64、8、4、2、1,用到就是1,没用到就是0

那么79的二进制就是 :

0   1   2   4   8   16    32    64

0   1   1   1   1    0      0      1

79=1001111


那么计算机只认识0  1 那怎么把字符和0 1 关联起来??

就用到了字符编码,规定某些数字固定对应某些字符,就产生了ASCII(没过标准信息交换代码)

一共占用2**8  不大于128位数字


但是中文几千个字装不下,怎么办?

既然127个装不下就扩展

128-一个数 就当做目录,GB2312(1980年),这个目录里存了7445个汉字字符,

后来1995年GBK1.0收录21003个汉字字符

最后2000年GB18030收录了27484个汉字,同时还有少数民族文字

一些MP3 手机一般只支持GB2312

我们最常用的是GBK

为了避免各个国家都搞自己的编码太乱,后来出来了统一标准:Unicode,统一万国码但是不兼容GBK等,Unicode存的多了,占用的空间就大,ASCII码一个字符占8个比特位,Unicode一个字符,不论中文汉字还是英文字母,都占16个比特位,也就是2个字节,就会出现空间有被占满的风险

然后在unicode基础上出现了UTF-8,字符的大小可变长,所有的英文字符按照ascii码存,所有的汉字按照unicode存,所以不会占用多余的空间


ASCII码 2**8个  占1个字节

  1980年 GB2312 支持7000多个汉字

    1995年 GBK1.0 支持20000+汉字

      2000年 GB18030 支持27000+汉字

    90年代初出现了 Unicode 统一占2个字节

      UTF-8  英文 1个字节  中文 3个字节



python3与python2的区别就是python3是UTF-8编码,默认支持中文,python2默认是ASCII编码,要想在python2里写中文,就要先声明字符集为UTF-8

  1 _*_ coding:utf-8 _*_
  2 或者
  3 -*- coding:utf-8 –*-



四、用户交互

1.注释

单行注释: #

多行注释: ‘’’    多行内容    ‘’’      或者     “”“    多行内容    ”“”

                多行注释的内容也可以被赋予给变量



2.用户输入 (交互)

  1 username = input("Please input your username:")
  2 password = input("Please input your password:")
  3 
  4 print(username, password)
  5 

用户交互+格式化输出   %s的使用方法:

  1 name = input("Name:")
  2 age = input("Age:")
  3 job = input("Job:")
  4 salary = input("Salary:")
  5 
  6 info = ''' -----------Info of  %s-----------
  7 Name: %s
  8 Age:%s
  9 Job:%s
 10 Salary: %s
 11 '''  % (name,name,age,job,salary)
 12 
 13 print(info)

%s 代表的是string,字符串,在Age处也可以写 %d,代表数字整数(但是要注意str与int之间的转换,因为数字也是str,要是想用%d,需要转化为int)

%f 代表浮点,一般是小数



用户交互+格式化输出   format的使用方法:

  1 name = input("Name:")
  2 age = input("Age:")
  3 job = input("Job:")
  4 salary = input("Salary:")
  5 
  6 info = ''' -----------Info of {Name}-----------
  7 Name: {Name}
  8 Age:{Age}
  9 Job:{Job}
 10 Salary: {Salary}
 11 '''  .format(Name = name, Age = age, Job = job, Salary = salary)
 12 
 13 print(info)


用户交互+格式化输出   format{参数}的使用方法:

  1 name = input("Name:")
  2 age = input("Age:")
  3 job = input("Job:")
  4 salary = input("Salary:")
  5 
  6 info = ''' -----------Info of {0}-----------
  7 Name: {0}
  8 Age:{1}
  9 Job:{2}
 10 Salary: {3}
 11 '''  .format(name, age, job, salary)
 12 
 13 print(info)



五、初识模块

什么是模块? python有标准库,直接import导入进来,再调用这个模块的语句就可以使用了。


比如之前说的输入用户名密码是明文的,怎么搞成密文的?

  1 # Auther: Tank Jarvis
  2 import getpass
  3 
  4 username = input("Username: ")
  5 password = getpass.getpass("Password: ")
  6 
  7 print(username,password)
  8 # pycharm不能使用这个模块哦!


六、逻辑判断

1. if-else  while-else

  1 # Auther: Tank Jarvis
  2 
  3 _username = "tank"
  4 _password = "123"
  5 count = 0
  6 
  7 while count < 3:
  8     username = input("Username: ")
  9     password = input("Password: ")
 10 
 11     if username == _username and password == _password:
 12         print("Welcome {name}!".format(name = username))
 13         break
 14     else:
 15         print("You input a wrong num or passwd, please try again!")
 16         count += 1
 17 else:
 18     print("You have tried 3 times wrong, get off")

2. 猜数字-while循环   注意数字是int ,input 默认把输入的变成字符串

  1 # Auther: Tank Jarvis
  2 age_of_tank = 28
  3 print("Let's play a game , guess the age of tank.")
  4 count = 0
  5 while count < 6:
  6     guessnum = input("Input your answer: ")
  7     if int(guessnum) > int(age_of_tank):
  8         print("Your answer is bigger, try again.")
  9         count += 1
 10     elif int(guessnum) == int(age_of_tank):
 11         print("You got the right answer, good job!")
 12         break
 13     else:
 14         print("Your answer is smaller, try again")
 15         count += 1
 16 else:
 17     print("You have tried 6 times, Bad luck, bye")

3. 猜数字-for循环

  1 # Auther: Tank Jarvis
  2 age_of_tank = 28
  3 print("Let's play a game , guess the age of tank.")
  4 for i in range(6):
  5     guessnum = input("Input your answer: ")
  6     if int(guessnum) > int(age_of_tank):
  7         print("Your answer is bigger, try again.")
  8     elif int(guessnum) == int(age_of_tank):
  9         print("You got the right answer, good job!")
 10         break
 11     else:
 12         print("Your answer is smaller, try again")
 13 else:
 14     print("You have tried 6 times, Bad luck,bye")

4.猜数字-无限循环

  1 # Auther: Tank Jarvis
  2 age_of_tank = 28
  3 print("Let's play a game , guess the age of tank.")
  4 count = 0
  5 while count < 6:
  6     guessnum = input("Input your answer: ")
  7     if int(guessnum) > int(age_of_tank):
  8         print("Your answer is bigger, try again.")
  9         count += 1
 10     elif int(guessnum) == int(age_of_tank):
 11         print("You got the right answer, good job!")
 12         break
 13     else:
 14         print("Your answer is smaller, try again")
 15         count += 1
 16     if count == 6:
 17         confirm = input("Do you want to continue guess?")
 18         if confirm != 'n':
 19             count = 0
 20         else:
 21             break

5.break-continue

continue 是直接跳到下一次循环

break 是结束整个循环


6.循环套循环

  1 for i in range(10):
  2     print('---------', i )
  3     for j in range(10):
  4         print(j)
  5         if j > 5:
  6             break


七:练习

1.编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

2.多级菜单

  • 三级菜单
  • 可依次选择进入各子菜单
  • 所需新知识点:列表、字典


猜你喜欢

转载自www.cnblogs.com/tianker/p/9989277.html
今日推荐