热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python基础(一),Day1

python的安装python2.x与3.x的部分区别第一个python程序变量字符编码注释格式化字符串用户输入常用的模块初始if判断循环语句作业1.python的安装可以在pyt
  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.xname = "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 pythonimport getpass
# 将用户输入的内容赋值给 pwd 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)

但是getpass()在Pycharm软件不能正常使用,需要在交互模式下来执行

9.常用模块初始

os模块、sys模块

10.if判断

各个语言都存在用来判断的语句

#!/usr/bin/env pythonnum = 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 pythonfor i in range(5):print(i)#输出:
1
2
3
4
5

break

在循环语句中,可以使用break跳出整个循环

#!/usr/bin/env python
i = 0
while Truei += 1print(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 sysuserdict = {}
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)breakelse:userdict[username]['errornum'] += 1if userdict[username]['errornum'] >= REEOR_NUM:print('帐号密码输入错误%d次,被锁定,退出' % REEOR_NUM)userdict[username]['lock'] = 1userdict[username]['errornum'] = 0else: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:breakelse: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 &#61; True # 第二层循环控制city_flag &#61; True # 第三层循环控制for i in menu_list:print(i, &#39;.&#39;, menu_list[i][&#39;name&#39;])num_1 &#61; input("请输入一级菜单号:")if num_1&#61;&#61;QUIT:print("退出程序")country_flag &#61; Falsecontinueelif num_1 &#61;&#61; LAST:print("第一层没有上一级")continueelif num_1 &#61;&#61; DYC:print("这就是第一层拉")elif num_1.isdigit():num_int_1 &#61; int(num_1)if num_int_1 <&#61; len(menu_list):#第二层循环while province_flag:city_flag &#61; Truefor k in menu_list[num_int_1][&#39;info&#39;]:print(k,&#39;.&#39;,menu_list[num_int_1][&#39;info&#39;][k][&#39;name&#39;])num_2 &#61; input("请输入二级菜单:")if num_2&#61;&#61;QUIT:country_flag &#61; Falseprovince_flag &#61; Falsecontinueelif num_2 &#61;&#61; LAST:province_flag &#61; Falsecontinueelif num_2 &#61;&#61; DYC:province_flag &#61; Falsecontinueelif num_2.isdigit():num_int_2 &#61; int(num_2)if num_int_2 <&#61; len(menu_list[num_int_1][&#39;info&#39;]):#第三层循环while city_flag:for l in menu_list[num_int_1][&#39;info&#39;][num_int_2][&#39;info&#39;]:print(l, &#39;.&#39;, menu_list[num_int_1][&#39;info&#39;][num_int_2][&#39;info&#39;][l][&#39;name&#39;],menu_list[num_int_1][&#39;info&#39;][num_int_2][&#39;info&#39;][l][&#39;info&#39;])num_3 &#61; input("请输入菜单:")if num_3 &#61;&#61; QUIT:print("退出程序")country_flag &#61;Falseprovince_flag &#61; Falsecity_flag &#61; Falsecontinueelif num_3 &#61;&#61; LAST:city_flag &#61; Falsecontinueelif num_3 &#61;&#61; DYC:province_flag &#61; Falsecity_flag &#61; Falsecontinueelif num_3.isdigit():print("这已经是最后一层菜单&#xff0c;请其他选择 %s&#xff1a;退出 %s&#xff1a;返回上一层 %s: 返回到第一层"% (QUIT, LAST, DYC))else:print(&#39;错误的数字编号输入,请重新输入&#39;)else:print(&#39;错误的数字编号输入&#39;)else: # 第一层的退到第一层passprint("退出程序")

  

 

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



推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文详细说明了在JavaScript中解决alert弹出窗口文本换行问题的方法。通过给alert弹出的文本添加换行符,可以实现在弹窗中显示多行文本的效果。同时,提供了相关代码示例和注意事项,帮助读者更好地理解和应用这一解决方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
Yunir_944
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有