python 2 和 3 的最大的区别: py 3 提供了对Unicode的支持
很多内容都已经支持3.0 ,但是还有一个很大的模块没有支持:twisted
第一个程序Helloworld:
1 print('hello world!') hello world
Hello World
退出命令行条件下的解释器:
>>>exit()
外部创建python文件,文件名后缀为什么要.py?
为了告知别人这是一个python文件,这是一种规范
windows下运行python 文件:
>>>python hello.py
linux 下应该如何直接运行:
先更改文件的权限:chmod 755 hello.py
因为在linux在系统中装了新版本的python 是默认装在 usr/local/bin/下 另外在文件中应该加入:
#!usr/bin/env python表示在系统环境变量找python解释器,其中env表示在环境变量中查找,可以使用使用系统默认的python
#!usr/bin/python 表示在usr/bin 中直接找,直接用的系统原装的python
闲扯淡,各种版本的hello world
1 #include
2
3 int main(void)4
5 {6
7 std::cout<
9 return0;10
11 }
c++
1 #include
2
3 int main(void)4
5 {6
7 printf("hello world!");8
9 return0;10
11 }
C
1 public classHelloWorld{2
3 public static void main(String [] args){4
5 System.out.println("hello world!");6
7 }8
9 }
JAVA
1 <?php2
3 echo"hello world!"
4
5 ?>
php
1 puts"hello world!"
ruby
1 package main2 import "fmt"
3 func main()4 {5 fmt.printf("hello world!");6 }
go
开发工具:
建议使用pycharm,可以使用社区或者专业版
使用原因,有提示,界面友好,可以调试,可以直观运行。其中主要的是能够调试
关于变量:
变量:为了存放内容(数据)让后面的代码进行调用而存在的。
python 是一门动态语言,不需要进行变量类型的声明,默认存成string 即字符串类型。
name = "Fennec"
name = "Fennec"name2=nameprint("My name is",name,name2)
name= "LazyFennec"name= "LazyFennec"
print("My name is",name,name2)#(question what is the name2 now)
关于变量的值得一个操作的思考
解析:变量的赋值其实是指向内容的,其内容是在内存中的,当其另外赋值的时候,也就是在另一块内存中另外存一个内容然后再指向这个新的内容,那么对应的原来的内容还是没有变化的,故name2还是指向原来的Fennec
变量定义的规则:
变量只能是字母、数字或者下划线的任意组合
变量名的第一个字符不能是数字
关键字不能作为变量名,具体如下列表所示:
[and,as,assert,class,continue,def,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield]
变量的约定俗成:
命名一定要能够看出来是什么意思
对于比较复杂的变量名有两种表示方式:
下划线:my_name = "Fennec"驼峰式:MyName= "Fennec"
极其不推荐的命名方式:
xingming = "Fennec"姓名= "Fennec"
这两种都是很low的
python中没有常量,如果想表示一个常量,则应该大写:
PIE = 3.1415926
大写表示这个变量不应该修改。
对于字符编码的区别和介绍:
二进制 0 1
ASCII 8位,可以表示255个符号,其中整个西方世界用了127个
GB2312 1980年,一共收入7445个字符
GBK1.0 1995年,21886个汉字,中国最常用的
GB18030 2000年,27484个汉字
Unicode: 显然ASCII码无法将世界上各种文字和符号全部表示,所以,就需要一种可以代表所有字符和符号的编码,即:Unicode(统一码,万国码,单一码)
其规定了现有的字符和符号最少由16位来表示(2个字节),即:2**16 = 65536。注:此处说的是最少,即有可能更多。
UTF-8:是对Unicode码的压缩版,可边长的,所有的英文单词字符,在utf-8中存的时候是用ascii码使用1byte,对于中文来说使用utf8时使用3bytes(1bytes=8bit)
执行以下程序:
name = "你好,世界!"
print(">>>",name)
在python2中会有编码方面的问题,所以程序会报错。
应该在第一行加入
#-*- coding:utf-8 -*-
因为在python 3中默认使用utf8,所以不存在这种问题。
会直接输出
>>>你好,世界!
注释:
单行注释 #
多行注释
'''……
内容
……'''
多个(3个)引号除了注释,还可以打印多行
msg = '''there are so
many words
you can see.'''
print(msg)
例子
打印结果;
there are so
many words
you can see.
用户交互:
关于input:
username = input("username")
password= input("password")print(username,password)
关于格式化输出:
name = input("name")
age= input("age")
job= input("job")
info= '''--------info of'''+name+'''--------
Name:'''+name+'''Age:'''+age+'''Job:'''+jobprint(info)
第一种形式
name = input("name")
age= input("age")
job= input("job")
info= '''--------info of %s--------
Name:%s
Age:%s
Job:%s''' %(name,name,age,job)print(info)
第二种形式
ps:%s表示输入字符串,另外的还有%d,%f等等。
另外可以把上面的age改成%d,这个时候再运行程序会报错,因为格式不是数字
name = input("name")
age= input("age")
job= input("job")
info= '''--------info of %s--------
Name:%s
Age:%d
Job:%s''' %(name,name,age,job)print(info)
类型问题
检测方式
print(type(age))
>>>
此时需要进行类型转换
age = int(input("age"))
正确的程序如下:
name = input("name")
age= int(input("age"))
job= input("job")
info= '''--------info of %s--------
Name:%s
Age:%d
Job:%s''' %(name,name,age,job)print(info)
关于python2中raw_input和input的区别:
python3中input和python2中raw_input 是同一种东西,而python2中的input是一种输入的是什么就是样的就是什么样的格式的语法,不建议使用,忘记就好。
name = input("name")
age= int(input("age"))
job= input("job")
info= '''--------info of {_name}--------
Name:{_name}
Age:{_age}
Job:{_job}'''.format(_name =name,
_age=age,
_job=job)print(info)
第三种形式
name = input("name")
age= int(input("age"))
job= input("job")
info= '''--------info of {0}--------
Name:{0}
Age:{1}
Job:{2}'''.format(name,age,job)print(info)
第四种形式
关于用户密码问题
username = input("username")
password= input("password")print(username,password);
以上会密码会直接在输入时显示,结果如下
>>>username:fennec>>>password:123456
>>>fennec 123456
可以使用getpass来屏蔽密码显示
importgetpass
username= input("username")
password= getpass.getpass("password")print(username,password);
显示结果:
>>>username:fennec>>>password:>>>fennec 123456
注意,上面的getpass一般只在cmd中有效,在编程软件中如PyCharm无效
if else 条件跳转语句
#!/usr/bin/env python#-*- coding:utf-8 -*-#Author:Fennec D
_username= "fennec"_password= "123456"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!")
while 循环
#猜数字
number= 41count=0while count<3:
count+= 1guess_num= int(input("guess the number:"))if guess_num==number:print("oh yeah,you got it!")break
elif guess_num
print("hey man,you have tried so many times, you lose the game")
for 循环
#for循环
for i in range(10):
print(i)
#猜数字
number = 41count=0for count in range(3):
count+= 1guess_num= int(input("guess the number:"))if guess_num==number:print("oh yeah,you got it!")break
elif guess_num
#这里同样可以用else,原因是,这里的else 是指上面的内容如果正常执行结束,则执行else的内容,否则如果被break,则不执行
#for循环
for i in range(0,10,2):#这里的range 的三个参数分别表示 开始位置,结束位置,步长
print(i)
continue
#continue
for i in range(10):if i<3:print("i:",i)else:continue #跳出本次循环,执行下一次循环
print("hehe...")
1 for i in range(1,10):2 for j in range(1,i+1):3 print("{0} * {1}= {sum}".format(i,j,sum=i*j),end="\t")4 print()
九九乘法表
效果: