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 
# 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("退出程序")

  

 

转载于:https://www.cnblogs.com/wangdaming/p/5872638.html

你可能感兴趣的:(Python基础(一),Day1)