初学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代码)使用while else的语法
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以下的代码,并跳出循环,继续执行循环外的代码