python 2 和 3 的最大的区别: py 3 提供了对Unicode的支持
很多内容都已经支持3.0 ,但是还有一个很大的模块没有支持:twisted
第一个程序Helloworld:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 print('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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 3 int main(void) 4 5 { 6 7 std::cout<<"hello world!"; 8 9 return 0; 10 11 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 3 int main(void) 4 5 { 6 7 printf("hello world!"); 8 9 return 0; 10 11 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class HelloWorld{ 2 3 public static void main(String [] args){ 4 5 System.out.println("hello world!"); 6 7 } 8 9 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 3 echo"hello world!" 4 5 ?>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 puts"hello world!"
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package main 2 import "fmt" 3 func main() 4 { 5 fmt.printf("hello world!"); 6 }
开发工具:
建议使用pycharm,可以使用社区或者专业版
使用原因,有提示,界面友好,可以调试,可以直观运行。其中主要的是能够调试
关于变量:
变量:为了存放内容(数据)让后面的代码进行调用而存在的。
python 是一门动态语言,不需要进行变量类型的声明,默认存成string 即字符串类型。
name = "Fennec"
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = "Fennec" name2 = name print("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个)引号除了注释,还可以打印多行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
关于格式化输出:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = input("name") age = input("age") job = input("job") info = ''' --------info of '''+name+'''-------- Name:'''+name+''' Age:'''+age+''' Job:'''+job print(info)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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,这个时候再运行程序会报错,因为格式不是数字
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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))
>>> <class 'str'>
此时需要进行类型转换
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是一种输入的是什么就是样的就是什么样的格式的语法,不建议使用,忘记就好。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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来屏蔽密码显示
import getpass 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 = 41 count = 0 while count<3: count += 1 guess_num = int(input("guess the number:")) if guess_num== number: print("oh yeah,you got it!") break elif guess_num<number: print("you may try to guess the bigger one.") else: print("you may try to guess the smaller one.") else: #python 特有的,其他语言并不支持那么做 print("hey man,you have tried so many times, you lose the game")
for 循环
#for循环
for i in range(10):
print(i)
#猜数字 number = 41 count = 0 for count in range(3): count += 1 guess_num = int(input("guess the number:")) if guess_num== number: print("oh yeah,you got it!") break elif guess_num<number: print("you may try to guess the bigger one.") else: print("you may try to guess the smaller one.") else: print("hey man,you have tried so many times, you lose the game")
#这里同样可以用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...")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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()
效果: