python之路-1
一 python的一些语言规范
1#!/usr/bin/python 2#!usr/bin/env python 3# -*- coding:utf-8 -*-
再写脚本的时候我们会写以上的“注释行”先来看看它们的意思。
1:调用usr/bin/下的python解释器去解释执行你写的python脚本;
2:系统会自己去找系统中的解释器去执行;
3:告诉系统编码方式;(下面再讲其它的编码方式)
当然,linux系统下默认是安装了python的解释器,所以在写脚本的时候可以不加前面的注释行,但是执行的时候会有所不同,如下:
第一种方法:
用创建一个hello_world.py文件,文件内容如下:(hello world是一种信仰!)
执行脚本文件:
第二种方法:
下面是加了解释器的脚本执行方式:
你们可以动手试一下,第一种写的python脚本是没有办法用 ./hello_world.py的方法执行的,即使你给hello_world.py赋予了可执行的权限。
下面来讲讲编码方式的改变:
1 ascii(美国信息交换标准代码):最早的编码方式
2 GB2312:支持汉字
3 GBK1.0:支持更多的汉字
4 GB180303:支持最多的汉字
5 unicode:国际统一编码(适用于所有国家的计算机)
6 utf-8:由于unicode的编码导致了英文字母占计算机中的内存变成了两个字节所以产生了utf-8,当是英文字母时就会自动切换两个字节,汉字占3字节。
下面讲讲变量名
变量:变量只能用英文字母/数字/下划线。(即使python3.x可以用汉字作为变量名),不要用汉语拼音作为变量名(没有原因,就是比较low),两个到三个英文字母的变量名中间用下划线连接。
常量:用全大写的英文字母定义,如:PIE = 3.14159265354·····
二:在linux环境中的python Tab 自动补全
在linux中打开python的编辑器时写代码的时候是不会自动补全的,要导入补全的模块,操作如下:
1 进入python编辑器中 命令sys.path 看看自己python装位置
>>> sys.path ['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages']
可以看到我的python在usr/lib/python2.7
2 在usr/lib/下新建一个 startup.py文件,文件的代码如下:
#!/usr/bin/python import sys import readline import rlcompleter import atexit import os # tab completion readline.parse_and_bind('tab: complete') # history file histfile = os.path.join(os.environ['HOME'],'.pythonhistory') try: readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter
3 在 .bashrc文件中添加读取模块(以下是个shell,网页没有shell)
# .bashrc 000#for pyton # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi 000export PYTHONSTARTUP=/usr/lib/python2.7/startup.py
4 source .bashrc
5 在python编辑器中导入模块。
三 python中变量赋值逻辑
name = "xuwei" name2 = name name = "suchagal" print(name, name2)
输出结果:
suchagal,xuwei
可以看出name2并不是指向name,而是指向name指向的值。
四 用户名中的密码加密输入
我们在网页中可以看到,当用户要输入密码的时候,密码是黑色的点,在linux系统的登陆的时候输密码的时候你是看不到密码的,这个怎么实现了?
只需要导入 getpass模块,在代码中调用,如下:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal import getpass username = input("username:") password = getpass.getpass("password:") print(username,password)
这样在执行的时候,输密码的时候,密码就会被加密起来。
五 python中的输出控制
举个栗子
要实现如下的输出:
------------ info of---------- name:xuwei age:21 job:IT salary:20000
方法:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal name = input("name:") age = input("age:") job = input("job:") salary = input("salary:") info = ''' ------------ info of---------- name:'''+name+''' age:'''+age+''' job:'''+job+''' salary:'''+salary info1 = ''' ------------ info of---------- name: %s age: %s job: %s salary: %s ''' % (name,age,job,salary) info2 = ''' ------------ info of---------- name:{_name} age:{_age} job:{_job} salary:{_salary} '''.format(_name=name, _age=age, _job=job, _salary=salary) info3 = ''' ------------ info of---------- name:{0} age:{1} job:{2} salary:{3} '''.format(name, age, job, salary) print(info) print(info1) print(info2) print(info3) print("-----ifo $------\n" "name: %s\n" "age: %s\n" "job: %s\n" "salary: %s" % (name,age,job,salary))
info,info1,info2,info3,print()一共五种方法分别为(第一种,第二种···)
讲讲这几种方法的不同:
第一种:处理速度慢,占内存空间
第二种:和第五种差不多,比较常用
第三种:和第四种如出一辙,就是其中的变量变成了数字(注意数字的{})
六 python的流程控制
1,if ···elif···else···
和C语言的if ···else 用法类似(下面讲不同),elif就是else if 的意思
2,while···
while后面的表达式为真就循环其以下的代码,否则停止,一般和break连用,当循环得到想要的结果时,可以通过break跳出循环。和C/JAVA中的类似(为什么说类似,下面讲)
3,for···
for循环应该是和C/JAVA差别最大的一个了,用法:
for I in range(0,10,2)
表示i从0到9,间隔为2 赋值,来个例子:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal for i in range(0,10,2): print(i) if i ==6: print("i like six")
E:\python\python.exe E:/pycharm_workstation/2017-12-17/for循环.py 0 2 4 6 i like six 8 Process finished with exit code 0
在python中这些流程控制语句与java和C的不同点:
第一:python独特的缩进体制,如上图,
第二:这些流程控制语句的后面都能接else,表示这个流程全部运行结束,并不是因为break跳出的。也就是说由于break跳出流程控制时是不执行else中的代码的。
献上一个小游戏:
# -*- coding:utf-8 -*- #!/usr/bin/env python # Author:suchagal count = 0 age_of_suchagal = 23 while count < 3: guess_age = int(input("guess age:")) count = count + 1 if guess_age == age_of_suchagal: print("you are smart!") break elif guess_age < age_of_suchagal: print("ur guess is smaller") else : print("ur guess is bigger") if count == 3: guess_continue = input("do u want to try again?") if guess_continue != 'n': count = 0
好了,就写这么多了。送上一句励志英文
we cannot give up trying, fighting was worth it!