1、在linux下写python脚本,开头的解释器宣告的写法应该是#!/usr/bin/env python
定义变量name="liubo" age=21 所有使用引号引起的内容都是字符串
变量的意义是标示数据,所以变量名称应该有意义
遇到复杂变量名是使用“_”分割多个单词或单词首字母大写
son_of_twins_brother_age = 2
NameOfTwinsGf = "FengJie"
不可以使用“-”连接单词
不可以使用数字开头
不可以使用特殊字符
变量名中不可以有空格
不可以使用关键字作为变量
在python2.X的时候默认支持ASCII编码,如果需要中文需要明确指示编码表,写法为:
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
python3默认使用utf-8编码,因此不需要特别宣示,仅需要
#!/usr/bin/env python用来宣示解释器即可(linux运行)
python开发规范,每一行最大不应超过80个字符
注释
#用于单行注释
使用3个引号(前后各三个)用于多行注释
‘‘‘
XXX
XXX
‘‘‘
打印用户输入的内容
在3.0中的写法
user_input = input("input your name:")
print("user input msg:",user_input)
在2.7中的写法
user_input = raw_input("input your name:")
print("user input msg:",user_input)
在2.7中input会认为你输入的不是字符串,而是变量名,因此如果要将输入的内容付给变量,应该使用raw_input。否则会报错
但是input如果是数字,就会认为是数字。因此 在2.7中input可以是数字,也可以是变量名,如果是字符串则只能用raw_input
因此2.7中基本不用input
格式化字符串
#!/usr/bin/envpython
#_*_coding:utf-8_*_
Name=input("inputyourname:")
Age=input("inputyourage:")
Job=input("inputyourjob:")
msg=‘‘‘
Informationforuser:%s
-----------------------
Name:%s
Age:%s
Job:%s
-----------END------------
‘‘‘%(Name,Name,Age,Job)# %前后均有空格
print(msg)
%s代表字符串,还可以替换为%d代表输入的是数字
但是如果要使用%d,必须要确保这个变量为数字类型,input输入的内容都是字符串类型,因此Age变量不能直接使用%d,而要将输入的内容转为int类型
即
Age=int(input("input your age: "))
Name=input("inputyourname:")
Age=int(input("inputyourage:"))
Job=input("inputyourjob:")
msg=‘‘‘
Informationforuser:%s
-----------------------
Name:%s
Age:%d
Job:%s
-----------END------------
‘‘‘%(Name,Name,Age,Job)#%前后均有空格
print(msg)
格式化数据类型有3中
$s 字符串
$d 数字
$f 小数
导入模块(导入的内容只能在windows的CMD或linux下使用,pycharm不能用)
import getpass #导入一个可以使输入变成密文的模块
username = input("username: ")
password = getpass.getpass("password : ")
import os #导入系统命令模块
os.system("df") #用于打印系统命令
os.mkdir("/root/123") #用于创建一个文件夹
os.system("df -h") 这个命令的输出有2个,一个是实际的命令输出,一个是输出结果,命令输出就是df的内容(系统存储使用情况),输出结果就是0
如果我们直接 cmd = os.system("df -h"),则cmd中只有输出结果,如果要想将命令输出复制则应该写为
cmd = os.popen("df -h").read(),先用popen将结果保存到内存中,再read一下
实际import 命令后面接的模块就是一个python的脚本,但是不能带.py后缀
可是这个脚本的位置需要注意,默认情况下系统会到特定的路径下寻找脚本,或者是当前路径下。查找特定路径的方法为
import sys
print(sys.path)
>>> import sys
>>> print(sys.path)
[‘‘, ‘/usr/local/python3/lib/python35.zip‘, ‘/usr/local/python3/lib/python3.5‘, ‘/usr/local/python3/lib/python3.5/plat-linux‘, ‘/usr/local/python3/lib/python3.5/lib-dynload‘, ‘/usr/local/python3/lib/python3.5/site-packages‘]
从这里可以看出因为第一个位子的是‘‘,因此说明当前路径的优先级是最高的,因此如果在当前路径下存在一个其他路径中的同名脚本,则当前路径优先
我们可以自己写一个模块,就用之前的
import getpass
username = input("username: ")
password = getpass.getpass("password : ")
print(username,password)
保存为pass.py,然后将其保存到上面的路径中,之后就可以在其他的脚本中import pass来导入这个模块了
if 判断
python是一个有强烈格式的语言,其语法格式依照严格的缩进
user="liubo"
passwd="cisco,123"
username=input("inputyourusername;")
password=input("inputyourpassword:")
if user == username:
print("usernameiscorrect...")
if passwd == password:
print("Welcomelogin...")
else:
print("passwordisinvalid...")
else:
print("usernameisinvalid")
同时,if可以多条件判断
user="liubo"
passwd="cisco,123"
username=input("inputyourusername;")
password=input("inputyourpassword:")
if user==username and passwd==password:
print("Welcome login")
else:
print("usernameorpassworisinvalid")
循环
for i in range(10): range(10)代表0到9的10个数
循环10次,但是只能猜3次,超过3次自动跳出
age=32
foriinrange(10):
ifi<3:
gage=int(input("inputage:"))
ifgage>age:
print("guessmorethanage")
elifgage<age:
print("guesslessthanage")
else:
print("yougotit")
break
else:
print("toomanytimes")
break
for i in range(10)
i=100
在上面的内容中,range(10)代表的是一个序列,因此在for的循环中每次i的值是这个序列中的值依次被赋值,即便下面重新将i赋值,只要仍在这个循环中,这个i仍然会被range覆盖
跳出程序
1、跳出整个程序,break,设置完成后,当运行到break时,就会结束程序
2、跳出当次循环,continue,设置完成后,当运行到continue时,会结束当次循环,但是整体循环仍然还会有
作业一:博客
作业二:编写登录程序
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
作业三:多级菜单
1.北京
2.上海
>>input
1.东城
2.西城
>>input
1.沙河
>>input
同时输入b返回上级菜单,q退出程序
流程图 processon.com
readme:
SVN:
作业命名day1