Python基础(一),Day1
- 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
1 2 3 4 | 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下
1 2 3 4 5 6 7 | 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下
1 2 3 4 5 6 7 | 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的语句
1 2 3 4 5 | #!/usr/bin/env python print ( "Hello World" ) #输出: hello world |
缩进
python是一个优美的语言,所以程序不像C/C++/JAVA 是用{}
来区分代码块,而是靠缩进来区分代码块的。
1 2 3 4 5 6 | #!/usr/bin/env python print ( "hello world" ) for i in range ( 10 ): print (i) if i = 5 : break |
执行
在winodws下 用命令行python
来执行
4.变量
python的变量声明和php等多类型语言类似,不需要声明变量类型
1 2 3 4 5 | #!/usr/bin/env python # version python 3.x name = "python" # 字符串类型 num = 5 # 整型 |
上述代码中,给变量名为name的赋值为str类型的python,给num赋值int类型数字5。
变量命名规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 命名规则: 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.注释
当行注视:# 被注释内容
多行注释:””” 被注释内容 “””
1 2 3 4 5 6 7 | # 被注释内容单行注释 """ 被注释内容 被注释内容 被注释内容 被注释内容 """ |
注释的内容程序不会执行,注释是给开发者用来提示等作用的
7.格式化字符串
1 2 3 4 5 6 7 8 | #!/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.用户输入
1 2 3 4 5 | #!/usr/bin/env python #name = raw_input("What is your name?") #python2.x版本下的输入 name = input ( "What is your name?" ) print ( "Hello " + name ) |
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
1 2 3 4 5 6 7 | #!/usr/bin/env python import getpass # 将用户输入的内容赋值给 pwd 变量 pwd = getpass.getpass( "请输入密码:" ) # 打印输入的内容 print (pwd) |
但是getpass()
在Pycharm软件不能正常使用,需要在交互模式下来执行
9.常用模块初始
os模块、sys模块
10.if判断
各个语言都存在用来判断的语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/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
1 2 3 4 5 6 7 8 9 10 | i = 0 while True : i + = 1 输出: 1 2 3 ... 无限循环累加 |
只要满足while后面的条件 就会一直循环执行while代码块里的内容
for
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/env python for i in range ( 5 ): print (i) #输出: 1 2 3 4 5 |
break
在循环语句中,可以使用break
跳出整个循环
1 2 3 4 5 6 7 8 9 10 11 12 | #!/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
跳出本次循环,接着执行一下循环
1 2 3 4 5 6 7 8 9 10 11 | #!/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. 菜单数据保存在文件中
模拟登录作业
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #!/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
1 2 3 | username,password, 0 , 0 , semaseming, 111111 , 0 , 0 , root, 111 , 0 , 1 , |
三级菜单代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #!/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 ( "退出程序" ) |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步