1. 第一个程序hello world:
#!/usr/bin/env python3 #非指定
#!/usr/bin/python #指定的方法
print("hello world!")
#!/usr/bin/python #指定的方法
print("hello world!")
2. 变量:
定义:变量就是用来存储数据,方便程序调用;
name = 'Brace Li'
定义:变量就是用来存储数据,方便程序调用;
name = 'Brace Li'
name2 = name
print("My name is ", name, name2)
name = "Lucy chen"
print(name, name2)
输出:
My name is Brace Li Brace Li
Lucy chen Brace Li
变量的定义规则:
1. 变量名智能是字母,数字或下划线的任意组合;
2. 变量的第一个字符不能是数字;
3. 以下关键字不能声明为变量名;
['and','as','break'.......]
变量名要有特别的意义, 尽量为英语单词,可提高读性:
print("My name is ", name, name2)
name = "Lucy chen"
print(name, name2)
输出:
My name is Brace Li Brace Li
Lucy chen Brace Li
变量的定义规则:
1. 变量名智能是字母,数字或下划线的任意组合;
2. 变量的第一个字符不能是数字;
3. 以下关键字不能声明为变量名;
['and','as','break'.......]
变量名要有特别的意义, 尽量为英语单词,可提高读性:
例如:
name
age
gender
wife_of_brace
常量:永远不改变的 例如:圆周率
python 不支持常量。
在python中要定义常量,用全大写。例如:PIE=3.14
3. 字符编码:
计算机底层就是电路,只认识0和1,表示通电和断电的2种状态;
早期的字符编码:ASCII,美国标准信息交换代码,是基于拉丁字母的一套电脑编码系统
一个字符只能用1个字节8位来表示,即最多只能表示2**8-1=256-1个字符
ASSCII码(只用了127个,0-127),其最多只能表示255个符号。128-255是预留的。
关于中文:
GB2312 共收录了7445个字符,支持汉字太少;
GBK1.0收录了21886个汉字
GB18030取代了GBK1.0, 收录了27000多个汉字
国际ISO,兼容所有国家的语言:Unicode
统一码,万国码
缺点占用空间太大。
一个字符统一占2个字节,16位,对于英文字符存储空间是ASCII的2倍
UTF-8:支持Unicode可变长的
存一个中文需要3个字节。
存一个英文需要1个字节。
字节(bytes)=8 位bit
python3 默认是UTF-8字符
python2 默认是ASCII字符
在python2中显示中文需要指定解释器的编码
# -*- coding:utf-8 _*_ #告诉解释器使用utf-8编码
4. 程序的注释:
单行注释: #
多行注释: 三个单引号或三个双引号开始和三个单引号或三个双引号结束;
"""
hello,brace
"""
name
age
gender
wife_of_brace
常量:永远不改变的 例如:圆周率
python 不支持常量。
在python中要定义常量,用全大写。例如:PIE=3.14
3. 字符编码:
计算机底层就是电路,只认识0和1,表示通电和断电的2种状态;
早期的字符编码:ASCII,美国标准信息交换代码,是基于拉丁字母的一套电脑编码系统
一个字符只能用1个字节8位来表示,即最多只能表示2**8-1=256-1个字符
ASSCII码(只用了127个,0-127),其最多只能表示255个符号。128-255是预留的。
关于中文:
GB2312 共收录了7445个字符,支持汉字太少;
GBK1.0收录了21886个汉字
GB18030取代了GBK1.0, 收录了27000多个汉字
国际ISO,兼容所有国家的语言:Unicode
统一码,万国码
缺点占用空间太大。
一个字符统一占2个字节,16位,对于英文字符存储空间是ASCII的2倍
UTF-8:支持Unicode可变长的
存一个中文需要3个字节。
存一个英文需要1个字节。
字节(bytes)=8 位bit
python3 默认是UTF-8字符
python2 默认是ASCII字符
在python2中显示中文需要指定解释器的编码
# -*- coding:utf-8 _*_ #告诉解释器使用utf-8编码
4. 程序的注释:
单行注释: #
多行注释: 三个单引号或三个双引号开始和三个单引号或三个双引号结束;
"""
hello,brace
"""
三个单引号或三个双引号开始和结束,也可以表示打印信息;
help_info = """
usage:
1. xxxx;
2. xxxx;
"""
print(help_info)
5. 用户输入:
5. 用户输入:
username = input("user name:")
password = input("password:") #明文输入;
print(username, password)
password = input("password:") #明文输入;
print(username, password)
函数 input 表示的输入:
在python2中raw_input 和python3中的input功能一样。
python3中已经没有raw_input
在python2中raw_input 和python3中的input功能一样。
python3中已经没有raw_input
密文输入用户密码:
需要导入一个标准库: getpass
import getpass
password = getpass.getpass("password:")
print(password)
注意:这个库在pycharm中不好使;
6. 格式化输出
格式化输出1:
name = "brace"
age = 22
gender = "male"
job = "IT"
salary = 10000
需要导入一个标准库: getpass
import getpass
password = getpass.getpass("password:")
print(password)
注意:这个库在pycharm中不好使;
6. 格式化输出
格式化输出1:
name = "brace"
age = 22
gender = "male"
job = "IT"
salary = 10000
info = """
====== info of %s==========
Name:%s
Age:%d
Gender:%s
Job:%s
Salary:%d
""" %(name,name,age,gender,job,salary)
====== info of %s==========
Name:%s
Age:%d
Gender:%s
Job:%s
Salary:%d
""" %(name,name,age,gender,job,salary)
print(info)
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
格式化输出2:
info = """
====== info of {_name}==========
Name:{_name}
Age:{_age}
Gender:{_gender}
Job:{_job}
Salary:{_salary}
""" .format(_name=name,_age=age,_gender=gender,_job=job,_salary=salary)
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
格式化输出2:
info = """
====== info of {_name}==========
Name:{_name}
Age:{_age}
Gender:{_gender}
Job:{_job}
Salary:{_salary}
""" .format(_name=name,_age=age,_gender=gender,_job=job,_salary=salary)
print(info)
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
格式化输出3:
info = """
====== info of {0}==========
Name:{0}
Age:{1}
Gender:{2}
Job:{3}
Salary:{4}
""" .format(name,age,gender,job,salary)
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
格式化输出3:
info = """
====== info of {0}==========
Name:{0}
Age:{1}
Gender:{2}
Job:{3}
Salary:{4}
""" .format(name,age,gender,job,salary)
print(info)
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
7. 数据类型:
输出:
====== info of brace==========
Name:brace
Age:22
Gender:male
Job:IT
Salary:10000
7. 数据类型:
%s :表示字符类型
%d :表示整数类型
%f : 表示浮点类型
打印数据变量类型:
print(type(变量))
print(type(name))
print(type(age))
print(type(str(age)))
print(type(int(str(age))))
输出:
<class 'str'>
<class 'int'>
<class 'str'>
<class 'int'>
str() :强行转化为字符类型;
int() :强行转化为数字类型。
%d :表示整数类型
%f : 表示浮点类型
打印数据变量类型:
print(type(变量))
print(type(name))
print(type(age))
print(type(str(age)))
print(type(int(str(age))))
输出:
<class 'str'>
<class 'int'>
<class 'str'>
<class 'int'>
str() :强行转化为字符类型;
int() :强行转化为数字类型。
8. 循环判断语句:
例一 if....else :
username = input("name:")
password = input("password:")
_username = 'brace'
_password = '123'
if username == _username and password == _password:
print("Welcome user {name} login ..." .format(name=username))
else:
print("Invalid username and password")
_password = '123'
if username == _username and password == _password:
print("Welcome user {name} login ..." .format(name=username))
else:
print("Invalid username and password")
例二 if...elif...else:
age_of_brace = 30
guess_age = int(input("guess brace's age:"))
if guess_age == age_of_brace :
print("yes, you got it")
elif guess_age < age_of_brace :
print("think smaller")
else:
print("think bigger!")
例三 while 循环 while...else:
age_of_brace = 30
count = 0
while count < 3:
print("count:", count)
guess_age = int(input("guess brace's age:"))
count += 1
if guess_age == age_of_brace :
print("yes, you got it")
break
elif guess_age < age_of_brace :
print("think smaller")
else:
print("think bigger!")
else:
print("input error more than 3 times, exiting....")
age_of_brace = 30
guess_age = int(input("guess brace's age:"))
if guess_age == age_of_brace :
print("yes, you got it")
elif guess_age < age_of_brace :
print("think smaller")
else:
print("think bigger!")
例三 while 循环 while...else:
age_of_brace = 30
count = 0
while count < 3:
print("count:", count)
guess_age = int(input("guess brace's age:"))
count += 1
if guess_age == age_of_brace :
print("yes, you got it")
break
elif guess_age < age_of_brace :
print("think smaller")
else:
print("think bigger!")
else:
print("input error more than 3 times, exiting....")
例四:for 循环 for...else:
for i in range(10):
print(i)
for n in range(0,10,2):
print(n)
备注:
range(0,10,2)
0 起始
10 个数
2 步长
age_of_brace = 30
count = 0
for count in range(3):
print("count:", count+1)
guess_age = int(input("guess brace's age:"))
if guess_age == age_of_brace :
print("yes, you got it")
break
elif guess_age < age_of_brace :
print("think smaller")
else:
print("think bigger!")
else:
print("input error more than 3 times, exiting....")
break 跳出循序;
continue 继续执行新的循序
9. 判断变量是否为空的写法:
第一种:if X is None;
第二种:if not X;
当X为None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这些时,
not X为真,即无法分辨出他们之间的不同。
第三种:if not X is None;
10. 控制台输出带颜色的文字方法
格式:\033[显示方式;前景色;背景色m
说明:
前景色 背景色 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
说明:
前景色 背景色 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
显示方式 意义
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
例子:
\033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
\033[0m <!--采用终端默认设置,即取消颜色设置-->
-------------------------
0 终端默认设置
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
例子:
\033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色-->
\033[0m <!--采用终端默认设置,即取消颜色设置-->
print("\033[1;31;47m Error: Password is Null! \033[0m")
11. eval函数就是实现list、dict、tuple与str之间的转化
str函数把list,dict,tuple转为为字符串
# 字符串转换成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(b)
# 字符串转换成字典
a = "{1: 'a', 2: 'b'}"
print(type(a))
b = eval(a)
print(type(b))
print(b)
str函数把list,dict,tuple转为为字符串
# 字符串转换成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(b)
# 字符串转换成字典
a = "{1: 'a', 2: 'b'}"
print(type(a))
b = eval(a)
print(type(b))
print(b)
作业:
1. 编写登陆接口;
输入用户的密码;
认证成功后显示欢迎信息
输错三次后锁定(文件存储,锁定用户名)
2. 多级菜单:
三级菜单(省市县)
可依次选择进入各子菜单(能返回)
所需要新知识点,列表,字典
作业:
编写登陆接口;
输入用户的密码;
认证成功后显示欢迎信息
输错三次后锁定(文件存储,锁定用户名)
database.conf 格式:
{'brace': {'passwd': '12345', 'status': False}, 'lucy': {'passwd': '12345', 'status': 'True'}, 'kitty': {'passwd': '12345', 'status': 'True'}, 'jacky': {'passwd': '12345', 'status': 'True'}}
程序:
# Author:Brace Li
import getpass
sys_info = """
============================================================
= 登录系统 =
= V 1.00 =
============================================================
"""
print(sys_info)
import getpass
sys_info = """
============================================================
= 登录系统 =
= V 1.00 =
============================================================
"""
print(sys_info)
count = 1
# read data from database.conf
with open('database.conf', 'r') as fs:
data = eval(fs.read())
# read data from database.conf
with open('database.conf', 'r') as fs:
data = eval(fs.read())
while count < 4:
# input user name and password and keep them not null
while True:
user_name = input("Username:").strip()
if user_name:
break
else:
print("\033[1;31;47m Error: User Name is Null! \033[0m")
while True:
user_pwd = getpass.getpass("Password:").strip()
if user_pwd:
break
else:
print("\033[1;31;47m Error: Password is Null! \033[0m")
# check user name and password
if user_name in data.keys():
count += 1
if data[user_name]["passwd"] == user_pwd:
if not data[user_name]["status"]:
print("Error: The {_username} locked,pls contact with IT, Bye!!!".format(_username=user_name))
exit()
login_info = """
============================================================
欢迎{_username}进入登录系统
状态:{_status}
============================================================
= V 1.00 =
============================================================
1. 退出, 2. 注销
============================================================
""" .format(_username=user_name, _status=data[user_name]["status"])
print(login_info)
while True:
action_input = input("pls input >>").strip()
if action_input.isdigit():
if int(action_input) in (1, 2):
if int(action_input) == 1:
exit()
if int(action_input) == 2:
break
print("Error: Invalid input !")
if count > 3:
print(data[user_name]["status"])
data[user_name]["status"] = False
with open('database.conf', 'w') as fs:
fs.write(str(data))
print("Error: {_username} had try more than 3 times, {_username} had been locked,system exiting !" .format(_username=user_name))
exit()
print("Error: User name or Password not match !")
# input user name and password and keep them not null
while True:
user_name = input("Username:").strip()
if user_name:
break
else:
print("\033[1;31;47m Error: User Name is Null! \033[0m")
while True:
user_pwd = getpass.getpass("Password:").strip()
if user_pwd:
break
else:
print("\033[1;31;47m Error: Password is Null! \033[0m")
# check user name and password
if user_name in data.keys():
count += 1
if data[user_name]["passwd"] == user_pwd:
if not data[user_name]["status"]:
print("Error: The {_username} locked,pls contact with IT, Bye!!!".format(_username=user_name))
exit()
login_info = """
============================================================
欢迎{_username}进入登录系统
状态:{_status}
============================================================
= V 1.00 =
============================================================
1. 退出, 2. 注销
============================================================
""" .format(_username=user_name, _status=data[user_name]["status"])
print(login_info)
while True:
action_input = input("pls input >>").strip()
if action_input.isdigit():
if int(action_input) in (1, 2):
if int(action_input) == 1:
exit()
if int(action_input) == 2:
break
print("Error: Invalid input !")
if count > 3:
print(data[user_name]["status"])
data[user_name]["status"] = False
with open('database.conf', 'w') as fs:
fs.write(str(data))
print("Error: {_username} had try more than 3 times, {_username} had been locked,system exiting !" .format(_username=user_name))
exit()
print("Error: User name or Password not match !")