- python的安装
- python2.x与3.x的部分区别
- 第一个python程序
- 变量
- 字符编码
- 注释
- 格式化字符串
- 用户输入
- 常用的模块初始
- if判断
- 循环语句
- 作业
1.python的安装
可以在python的官方网站上下载python 地址是 https://www.python.org/downloads/
官方网站是有两个不同的版本 一个是python2.x 一个是python3.x 这个两个版本是并不兼容,我下载的是python3.x
在winodws下python安装直接双击.exe文件,然后可以一路的下一步。(当然,比如程序保存的位置什么的,你还是需要看看的)
然后CTRL+R输入cmd弹出命令行,输入python
C:\Users\administrator>python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
即安装成功,并且系统环境变量也添加成功
2. python2.x 和python3.x的区别(简单的了解)
print的输出不同
最直接明显的区别是python2.x输出语句print ""
变成了python3.x中的print()
函数,也就是python3中必须用括号来将需要输出的对象括起来。
另外在python2.7.x中官方做了对python3.x的兼容,所以在2.7.x版本中是支持print()输出,但是python3.x
是不支持print""
,会报错SyntaxError: Missing parentheses in call to 'print'
在python2.7.10下
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print "hello world"
hello world
>>> print("hello world")
hello world
>>>
在python3.5.1下
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print ("hello world")
hello world
>>> print "hello world"
SyntaxError: Missing parentheses in call to 'print'
>>>
Unicode
python2.x 需要在头部申明? # -*- coding:utf-8 -*-
才能在程序中输出中文,不然会报错,而python3.x可以直接对中文的输出
input解析用户输入
在python2.x中用input()
获取用户的输入存储为int,使用raw_input()
存储为str。
而在python3.x中,input()
就将用户的输入存储为str类型,避免2.x版本中,在input()
中输入其他类型引起不必要的报错。
某些库改名字了
额,2.x版本还没用好,并不熟悉库,所以也没记住什么库改了,学好认识3.x的库就好了把
3.第一个Python程序
输出第一个3.x的语句
#!/usr/bin/env python
print ("Hello World")
#输出:
hello world
缩进
python是一个优美的语言,所以程序不像C/C++/JAVA 是用{}
来区分代码块,而是靠缩进来区分代码块的。
#!/usr/bin/env python
print("hello world")
for i in range(10):
print(i)
if i = 5:
break
执行
在winodws下 用命令行python
来执行
4.变量
python的变量声明和php等多类型语言类似,不需要声明变量类型
#!/usr/bin/env python
# version python 3.x
name = "python" # 字符串类型
num = 5 # 整型
上述代码中,给变量名为name的赋值为str类型的python,给num赋值int类型数字5。
变量命名规则
命名规则:
1.只能包含数字、字母和下划线
2.不能以数字开头
3.不能是python的关键字
符合上面条件的都可以申明为变量名
比如:
name
name0629
szy_wm
_num_0629
都是可以的
下面这些都是不可以的:
1name
number xing
aaaa$
if
变量赋值
name1 = "A"
name2 = 'B'
num1 = 5
num2 = 6
在python中直接使用等号=
赋值,字符串类型用''
或者""
包含起来,数字类型直接输入数字。类型由python自动识别
5.字符编码
python2中默认是支持ascill如果输出中文需要先应该显示的告诉python解释器,用什么编码来执行源代码,即:# -*- coding: utf-8 -*-
6.注释
当行注视:# 被注释内容
多行注释:””” 被注释内容 “””
# 被注释内容单行注释
""" 被注释内容
被注释内容
被注释内容
被注释内容
"""
注释的内容程序不会执行,注释是给开发者用来提示等作用的
7.格式化字符串
#!/usr/bin/env python
name = "SemameMing"
age = 23
money = 5.20
print("%s今年%d岁,身上只有%f块钱"% (name,age,money))
输出:
>>>SemameMing今年23岁,身上只有5.200000块钱
可以看见print里的%s
%d
%f
被变量给替换
字符串是%s , 整数是%d , 浮点是%f
8.用户输入
#!/usr/bin/env python
#name = raw_input("What is your name?") #python2.x版本下的输入
name = input("What is your name?")
print("Hello " + name )
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python
import getpass
# 将用户输入的内容赋值给 pwd 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)
但是getpass()
在Pycharm软件不能正常使用,需要在交互模式下来执行
9.常用模块初始
os模块、sys模块
10.if判断
各个语言都存在用来判断的语句
#!/usr/bin/env python
num = 1
if num == 1:
print('这个判断是对的')
#或者
if num == 1:
print('这个判断是对的')
else:
pass
#或者
if num == 1:
print('这个判断是对的')
else:
print('这个判断是错的')
if
或者 if...else..
或者 if...elif...else...
语句都是判断语句,根据自己的具体程序要求来使用
11.循环语句
while
i = 0
while True:
i += 1
输出:
1
2
3
...
无限循环累加
只要满足while后面的条件 就会一直循环执行while代码块里的内容
for
#!/usr/bin/env python
for i in range(5):
print(i)
#输出:
1
2
3
4
5
break
在循环语句中,可以使用break
跳出整个循环
#!/usr/bin/env python
i = 0
while True
i += 1
print(i)
if i == 3:
break
#输出:
1
2
3
比如上诉代码 while True本身是一个无限循环,但是当i累加到3的 执行了if判断里的break 就跳出了循环
continue
在循环语句中,可以使用continue
跳出本次循环,接着执行一下循环
#!/usr/bin/env python
i = 0
for i in range(5)
print(i)
if i == 3:
break
#输出:
1
2
4
5
12.作业
模拟登陆:
1. 用户输入帐号密码进行登陆
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户
三级菜单:
1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中
模拟登录作业
#!/usr/bin/env python
# -*-coding:utf-8-*-
# Author:SemaseMing
# Time:2016-08-16 23:40
# ---------------
# 编写登陆接口
# 输入用户名密码
# 认证成功后显示欢迎信息
# 输错三次后锁定
# -----------------
import os
import sys
userdict = {}
wuserdata = []
REEOR_NUM = 3 # 最大失败出次
USERFILE = 'user.txt' # 配置文件名称
if os.path.exists(USERFILE):
print("系统文件加载正常")
else:
print("丢失配置文件,请检查文件完整性,退出")
sys.exit(1)
print("欢迎来到Python系统,请先登录")
while True:
username = input("用户名:")
password = input("密码:")
# 读取用户登陆文件
user_data = open(USERFILE)
for data in user_data:
userlist = data.strip()
userdata = userlist.split(',')
user_name = userdata[0].strip()
user_passwd = userdata[1].strip()
user_lock = userdata[2].strip()
user_error_num = int(userdata[3].strip())
userdict[user_name] = {'username':user_name,'password':user_passwd,'lock':user_lock,'errornum':user_error_num}
user_data.close()
# 判断用户账户是否合法
if username in userdict.keys():
if userdict[username]['lock'] == '1':
print('该账户已被锁定,请联系管理员')
break
# 判断用户名密码是否匹配
if username == userdict[username]['username'] and password == userdict[username]['password']:
print("Success! 登录成功,欢迎",username)
break
else:
userdict[username]['errornum'] += 1
if userdict[username]['errornum'] >= REEOR_NUM:
print('帐号密码输入错误%d次,被锁定,退出' % REEOR_NUM)
userdict[username]['lock'] = 1
userdict[username]['errornum'] = 0
else:
print('帐号密码错误')
wirte_data = open(USERFILE,'w+')
for t in userdict.values():
wuserdata = [t['username'], t['password'], str(t['lock']), str(t['errornum']), '\n']
wuserdatestr = ','.join(wuserdata)
wirte_data.write(wuserdatestr)
wirte_data.close()
if userdict[username]['errornum'] >= 3:
break
else:
print('帐号或密码错误')
user.txt
username,password,0,0,
semaseming,111111,0,0,
root,111,0,1,
三级菜单代码
#!/usr/bin/env python
# -*-coding:utf-8-*-
# Author:SemaseMing
# Time:2016-08-17 22:23
# 三级菜单。
# b:返回上一级 q:退出整个程序 y:到第一级
# 还是一个总的菜单呢
menu_list = {
1: {
'name': '中国'
, 'info': {
1: {
'name': '北京',
'info': {
1: {
'name': '北京市',
'info': '北京是中国的首都'
}
}
},
2: {
'name': '上海',
'info': {
1: {
'name': '上海市',
'info': '上海是一个非常有魅力的地方,我想去的地方'
}
}
}
}
},
2: {
'name': '美国',
'info': {
1: {
'name': '加州',
'info': {
1: {
'name': '洛杉矶',
'info': '天使之城'
},
2: {
'name': '旧金山',
'info': '旧金山唐人街'
}
}
}
}
}
}
country_flag = True #第一层循环控制
QUIT = "q" #退出字符
LAST = "b" #上一层字符
DYC = "y" #返回到第一层
print("欢迎来到菜单选择 %s:退出 %s:返回上一层 %s: 返回到第一层" % (QUIT, LAST, DYC))
#第一层循环
while country_flag:
province_flag = True # 第二层循环控制
city_flag = True # 第三层循环控制
for i in menu_list:
print(i, '.', menu_list[i]['name'])
num_1 = input("请输入一级菜单号:")
if num_1==QUIT:
print("退出程序")
country_flag = False
continue
elif num_1 == LAST:
print("第一层没有上一级")
continue
elif num_1 == DYC:
print("这就是第一层拉")
elif num_1.isdigit():
num_int_1 = int(num_1)
if num_int_1 <= len(menu_list):
#第二层循环
while province_flag:
city_flag = True
for k in menu_list[num_int_1]['info']:
print(k,'.',menu_list[num_int_1]['info'][k]['name'])
num_2 = input("请输入二级菜单:")
if num_2==QUIT:
country_flag = False
province_flag = False
continue
elif num_2 == LAST:
province_flag = False
continue
elif num_2 == DYC:
province_flag = False
continue
elif num_2.isdigit():
num_int_2 = int(num_2)
if num_int_2 <= len(menu_list[num_int_1]['info']):
#第三层循环
while city_flag:
for l in menu_list[num_int_1]['info'][num_int_2]['info']:
print(l, '.', menu_list[num_int_1]['info'][num_int_2]['info'][l]['name'],menu_list[num_int_1]['info'][num_int_2]['info'][l]['info'])
num_3 = input("请输入菜单:")
if num_3 == QUIT:
print("退出程序")
country_flag =False
province_flag = False
city_flag = False
continue
elif num_3 == LAST:
city_flag = False
continue
elif num_3 == DYC:
province_flag = False
city_flag = False
continue
elif num_3.isdigit():
print("这已经是最后一层菜单,请其他选择 %s:退出 %s:返回上一层 %s: 返回到第一层"% (QUIT, LAST, DYC))
else:
print('错误的数字编号输入,请重新输入')
else:
print('错误的数字编号输入')
else: # 第一层的退到第一层
pass
print("退出程序")