Python基础1(2017-07-16)
先墨守常规写一个简单的hello world!这是所有语言学习的第一点。
name="hello world!"
print(name)
如上代码我们可以看到name="hello world !",是申明了一个变量,变量名是name,并且赋值"hello world !"
我们可以执行这个.py 文件试试。
可以看到一个简单的小程序就已经运行了,屏幕输出了hello world!
附上本人使用的python版本:
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释
单行注释:#
多行注释:'''备注是内容'''也可以是"""内容"""(单引号或者双引号)。
用户输入
name=input("What's your name ?")
print("Hello",name,", welcome to Python !")
本人选用的pycharm来执行语句
运行如下: 手动输入名字时敲下回车,程序执行结果。
通常有些情况下我们要输入密码,不让其显示出来,我们就需要导入一个模块getpass
import getpass
pwd = getpass.getpass("Please enter your password:")
这个程序需要在CMD里面运行.
模块初识
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。
import sys
print(sys.argv)
这个运行会显示出文件地址。
其实我们所写的任何一个.py程序代码都可以当做模块给其他.py文件进行调用。此时只需要我们将文件放到python专门放置模块的文件夹目录,即python的全局环境变量里面就可以了。基本是在一个叫\Python36\Lib\site-packages的路径下。
这时我们可以在同路径下的__pycache__文件夹下发现一个同名的.pyc文件。
.pyc是个什么鬼?
1. Python是一门解释型语言?
我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!
为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。
2. 解释型语言和编译型语言
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。
此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。
用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。
3. Python到底是什么
其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。
当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。
熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:
javac hello.java
java hello
只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。
4. 简述Python的运行过程
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
那么又有人会问,如果程序再次修改了,之前保存的.pyc不是已经失效了么?程序再次去寻找pyc还有意义么?这样系统逻辑流程不是不对了?
事实上系统流程没有变,运行的时候程序会记录一下最后一次修改的时间跟pyc文件生成时间就行比对,一个小小的判断便很轻松的解决掉上述的问题。
数据类型简介
整型&长整型&浮点型
首先python3开始已经不存在python2的那种,如果数据过大会从int型转换为long型,看张图就明白了.
a=2**100
print(type(a))
b=2.1893411381
print(type(b))
布尔值
真或假
name = input("name:")
age = int(input("age:"))
print(type(age))
salary = input("salary:")
company = input("company:") info1 = '''------employee information1 (%s)---------
name:%s
age:%d
salary:%s
company:%s
''' % (name , name , age ,salary ,company )
print(info1) info2 = '''------employee information2 {_name}---------
name:{_name}
age:{_age}
salary:{_salary}
company:{_company}
'''.format(_name=name,
_age=age,
_salary=salary,
_company=company)
print(info2) info3='''------employee information3 {0}---------
name:{0}
age:{1}
salary:{2}
company:{3}
'''.format(name,age,salary,company)
print(info3) """也可以一直用3个单引号截断 再用加号拼接,不过会占用好几块内存,不推荐试用"""
逻辑运算表达式简介
If...else..
actual="Y"
guess=input("Do you trust me ?(Y/N)")
if actual==guess:
print("Thanks !")
else:
print("No, you will regret it !")
再来一个带elseif的实例
actual_age=25
guess_age=int(input("Guess how old were I ?"))
if actual_age==guess_age:
print("Yes , you are right !")
elif actual_age>guess_age:
print("Nope, greater than your guessing. ")
else:
print("Nope, smaller than your guessing ")
这里涉及到一个输入的数据类型转换a=int(input("***"));
While语法:这时候我想让系统只给用户3次机会来玩这个游戏超过3次显示猜测次数过多,怎么做呢?
actual_age=25
count=0
while count<3:
guess_age=int(input("Guess how old were I ?"))
if actual_age==guess_age:
print("Yes , you are right !")
break
elif actual_age>guess_age:
print("Nope, greater than your guessing. ")
else:
print("Nope, smaller than your guessing ")
count+=1
if count==3:
print("You have tried too many times.")
Else讲解:这里重点说一下最后的count==3的问题,其实作为一门更优美更简介的语言,python提供了另外一个写法
actual_age=25
count=0
while count<3:
guess_age=int(input("Guess how old were I ?"))
if actual_age==guess_age:
print("Yes , you are right !")
break
elif actual_age>guess_age:
print("Nope, greater than your guessing. ")
else:
print("Nope, smaller than your guessing ")
count+=1
else:
print("You have tried too many times.")
如果此时希望让系统没输入3次就提示问一下要不要继续玩下去,又该怎么做呢?
count=0
myage=25
while count <3:
guessage=int(input("Guess my age :"))
if guessage==myage:
print("Yes, you got it !")
break
elif guessage>myage:
print("come on ! That's too old !")
else:
print("um, thanks for your appreciation but i am not a child")
count=count+1
if count==3 :
continue_guessing=input("Do you wanna play this game contineously ?(Y/N) :")
if continue_guessing=="Y":
count=0
else: print("Thanks for your playing .")
For语法:
首先来个简单的循环10次的语法:
for i in range(10):
print("This is for rotation : ",i)
输出结果:
This is for rotation : 0
This is for rotation : 1
This is for rotation : 2
This is for rotation : 3
This is for rotation : 4
This is for rotation : 5
This is for rotation : 6
This is for rotation : 7
This is for rotation : 8
This is for rotation : 9
此时想让这个程序隔一个数字输出一次,我们该怎么做?这里就不卖关子了,直接贴上python的语法
for i in range(0,10,2):
print("This is for rotation : ",i)
大家现在应该能猜到怎么使用for语法了
for i in range(x,y,z)
默认的z不输入是1,x是起始位置,y是循环的终点,z是每次循环的跨度。
所以我们可以写这样一句来代替
for i in range(1,10,2):
print("This is for rotation : ",i)
我想大家都应该知道输出结果是什么了
This is for rotation : 1
This is for rotation : 3
This is for rotation : 5
This is for rotation : 7
This is for rotation : 9
break与continue:
在返回到for循环的第一个语法,如果想让系统在大于7的时候直接跳出不循环,并且3的时候也不输出结果,如何实现?
for i in range(10):
if i>7:
break
elif i==3:
continue
else:
print("This is for rotation : ",i)
Python基础1(2017-07-16)的更多相关文章
- 【python基础】第07回 运算符和流程控制 2
本章内容概要 1.逻辑运算符补充 2.循环结构 本章内容详解 1.逻辑运算符补充 两边都不为0的情况 or 直接取前面的值 and 直接取后面的值如果存在0的情况 and 直接取0 or 直接取非0 ...
- python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))
首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- python 列表推导式 - python基础入门(16)
截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高. 一.什么是推导式 推导式是从一个或者多个 ...
- Python基础教程 - Tdcqma
1.1 普通字符串 1.21 错误与异常 1.41 XXXXXX 1.61 XXXXXX 1.81 XXXXXX 1.101 XXXXXX 1.2 转义字符串 1.22 装饰器 1 ...
- (路-莫)-Python基础一
一,Python介绍 1,python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打 ...
- 第一篇:python基础
python基础 python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...
- Python基础-week05
本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...
- python基础day1
一.python介绍 1.1简介 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum ...
- python基础语法及知识点总结
本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...
随机推荐
- 为什么 管理工具里没有Internet(IIS)管理器选项
如上图,localhost页能打开了,但是管理工具里没有iis管理器,主要原因是安装iis时候没有选择web管理工具,选取安装上就 有了
- 5WHY分析法:一个问题分析与解决的工具
5WHY分析法很多做项目的都知道,但是却很少有人能用到实处,或者是灵活运用,所以今天小编又来翻一遍这个“旧账”,让大家更了解5WHY分析法. 什么是5WHY分析法? 所谓5why分析法,又称“5问法” ...
- 自定义QMenu
参考: http://blog.csdn.net/qq1623803207/article/details/77449884 http://blog.sina.com.cn/s/blog_a6fb6c ...
- CentOS 7 (Linux) 下载百度网盘大文件
这个方法不仅适合下载 "百度网盘" 中的文件,还可以下载磁链之类的,总之,就是能够加快下载速度的方法. (参考了网上的多篇文章,自行实践,成功下载度盘大文件,并且提升了下载速度) ...
- Tree Restoration Gym - 101755F (并查集)
There is a tree of n vertices. For each vertex a list of all its successors is known (not only direc ...
- node.js(node.js+mongoose小案例)_实现简单的注册登录退出
一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...
- 一名全栈设计师的Mac工具箱(设计,开发,效率)
我喜欢把自己定义为一个会一些设计的全栈工程师.在一些大型企业项目中,我一般担任架构师的角色,而到了我自己负责的个人或开源项目中,我就成了一名全栈设计师.我喜欢用自学而来的那些设计技能进行网站或 ...
- Go-day01
Go-实现hello_world package main import "fmt" func main() { fmt.Println("hello world!&qu ...
- angular中因异步问题产生的错误解决方法
方法一 private userTaskList(){ let auth = this.make_basic_auth("kermit","kermit"); ...
- python机器学习-sklearn挖掘乳腺癌细胞(四)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...