fish3129 发表于 2018-8-15 07:21:10

python之day1

  初学python会有学python2还是python3的困惑,因为现在公司的实际环境下大部分还是用2.7编写的代码,python3.X又向下不兼容2.X,我认为作为初学者更应该从python3着手:

[*]  python3和python2区别不是很大,只有在某些语法、某些库名不一样而已;
[*]  python2官方只支持到2020年,且不会有大版本的更新;
[*]  官方的所有标准库只在python3中更新;
  所以还是忘掉python2吧,它已经是过去时了。
  第一个程序hello world!
  print('hello world!') #这里单引号或双引号均可

  也可以创建一个helloworld.py的文件执行:

  在Linux下(为2.7版本):
  #!/usr/bin/env python#声明解释器是什么,告诉操作系统用什么方式打开
  Print “hello world”    #python3中必须加(),python2中可以省略
  保存为hello.py
  增加执行权限:chmod 755 hello.py
  直接执行: ./hello.py即可
  变量
  如何定义变量:name = ”Tone”    #变量声名并赋值后指向该值的内存地址
  调用变量:print(“My name is”,name)
  变量定义的原则
  1、变量名只能是字母、数字或下划线的任意组合;
  2、变量名的第一个字符不能是数字;
  3、关键字不能声明为变量;
  4、约定俗成:变量名有含义英文单词,不要用拼音,单词之间用_隔开,gf_of_oldboy,每个单词的首字母大写;
  Python中没有常量的概念,但约定俗成变量全是大写表示常量,如:PIE = “chang liang”(注:可以更改)
  字符编码与二进制
  Python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascii)
  ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8=256-1,所以,ASCII码最多只能表示255个符号。可以参考ASCII码表。
  为了处理汉字,程序员设计了用于简体中文的GB231和用于繁体中文的big5
  GB2312(1980年)共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中5个空位是D7FA-D7FE。
  GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求,所以手机、MP3一般只支持GB2312。
  从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一的处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。
  有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GBK18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。
  各个国家使用扩展位,导致混乱,国际开始定制新的标准即:Unicode
  Unicode占用2个字符,统一编码
  UTF-8 可变长的编码,存英文占用1byte,中文占用3bytes
  Python2中默认使用ASCII编码,所以不支持中文,可以指定编码方式:
  # -*- coding:UTF-8-*-
  Name = “你好,世界”
  Print(name)
  Python3天生支持中文,默认就是utf-8
  用户交互程序
  注释:单行可以用#,多行可以用三个’’’开头,三个’’’结尾
  赋值:单行可以使用'或是"没有区别,只是在值中有单引号出现时使用"更清晰,name="i'm Tone"
  多行赋值必须使用'''
  用户输入:input等待用户输入
  python2中的raw_input和python3中的input一样,python2中的input不要使用
  格式化输出1:多行可以使用加号拼接的方法(尽量不要用该方法)
  格式化输出2:可以使用%s:字符串;%d:数字;%f:浮点型的方式,如下程序
  默认所有输入的数据类型为字符串,可以使用int强制转换,并可以使用type查看类型
  name= input("name:")
  age = int(input("age:"))
  print(type(age))
  job = input("job:")
  salary = int(input("salary:"))
  info = '''
  ------------info of %s------------
  name:%s
  age:%d
  job:%s
  salary:%d
  '''%(name,name,age,job,salary)
  print (info)
  格式化输出3:可以使用{}的方式,如下
  info='''
  -----------------info of {_name}----------------------
  name:{_name}
  age:{_age}
  job:{_job}
  salary:{_salary}
  '''.format(_name=name,
  _age=age,
  _job=job,
  _salary=salary)
  或者
  info='''
  -----------------info of {0}----------------------
  name:{0}
  age:{1}
  job:{2}
  salary:{3}
  '''.format(name,age,job,salary)
  If else流程判断
  实现密码密文显示效果:
  import getpass   #调用模块标准库
  username=input("username:")
  password=getpass.getpass("password:")    #pycharm中不好用
  print(username,password)
  判断输入的用户名密码是否正确
  _username="tone"
  _password="pass123"
  username=input("username:")
  password=input("password:")
  if _username==username and _password==password:
  print("welcome user {name} login..".format(name=username))   #强制缩进
  else:
  print("invalid username or password.")
  定义一个年龄,然后判断年龄大小
  real_age = 33
  guess_age = int(input("input your guess age:"))
  if guess_age == real_age:
  print("congratulations,you got it.")
  elif guess_age > real_age:
  print("think smaller..")
  else:
  print("think bigger..")
  While循环
  在上面程序基础上增加功能:给3次机会猜年龄
  real_age= 33
  count = 0
  while count < 3:
  guess_age = int(input("input your guess age:"))
  if guess_age == real_age:
  print("congratulations,you got it.")
  elif guess_age > real_age:
  print("think smaller..")
  else:
  print("think bigger..")
  count += 1
  增加友好提示信息,当猜3次没有猜出来,提示游戏结束(low代码)
  real_age= 33
  count = 0
  while count < 3:
  guess_age = int(input("input your guess age:"))
  if guess_age == real_age:
  print("congratulations,you got it.")
  break
  elif guess_age > real_age:
  print("think smaller..")
  else:
  print("think bigger..")
  count += 1
  if count == 3:
  print("guess too many times,game over!")
  
  增加友好提示信息,当猜3次没有猜出来,提示游戏结束(high代码)使用whileelse的语法
  real_age= 33
  count = 0
  while count < 3:
  guess_age = int(input("input your guess age:"))
  if guess_age == real_age:
  print("congratulations,you got it.")
  break
  elif guess_age > real_age:
  print("think smaller..")
  else:
  print("think bigger..")
  count += 1
  else:
  print("guess too many times,game over!")
  
  While循环优化版本
  range(10)表示0到9的一组数字集
  for 可以结合else使用
  range(0,10,2)0到10之间的数,2表示间隔数步长
  猜年龄游戏,升级到每次有3次机会,并可以选择玩与不玩
  real_age= 33
  count = 0
  while count < 3:
  guess_age = int(input("guess age:"))
  if guess_age == real_age:
  print("congratulation,you got it")
  break
  elif guess_age > real_age:
  print("think smaller..")
  else:
  print("think bigger..")
  count += 1
  if count == 3:
  play_agin = input("play game agin,yes or not:")
  if play_agin == "y" or play_agin == "yes":
  count = 0
  For循环及作业要求
  总结:continue表示结束本次循环,不执行continue以下的代码,但继续循环
  break结束整个循环,不执行break以下的代码,并跳出循环,继续执行循环外的代码
页: [1]
查看完整版本: python之day1