Python基础(一),Day1

  1. python的安装
  2. python2.x与3.x的部分区别
  3. 第一个python程序
  4. 变量
  5. 字符编码
  6. 注释
  7. 格式化字符串
  8. 用户输入
  9. 常用的模块初始
  10. if判断
  11. 循环语句
  12. 作业

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 <blog.v-api.cn>
# 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 <blog.v-api.cn>
# 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("退出程序")

  

上一篇:About_PHP


下一篇:c/c++编译原理