python学习笔记(一)——入门

简介: python很多人都非常熟悉,而我作为后知后觉者,虽然慢人一步,但是学习永远不会晚。其实作为shell,不管是perl还是ruby、powershell等,语法很相似的,我以前没接触过python,现在从最基础的学起,当然对于非常简单的并没有详细记录,简单的准备记录下应该注意的地方。

     python很多人都非常熟悉,而我作为后知后觉者,虽然慢人一步,但是学习永远不会晚。其实作为shell,不管是perl还是ruby、powershell等,语法很相似的,我以前没接触过python,现在从最基础的学起,当然对于非常简单的并没有详细记录,简单的准备记录下应该注意的地方。虽然python3.X的shell工具已经出来了,但是相关教程好像没找到,而且与python2.x语法好多不兼容。所以我的学习环境是python shell2.7,也是目前最稳定和常用的版本吧。

  娱乐阶段:

  学习python之前,先来看看python的设计哲学,我觉得Guido van Rossum一定是个有趣的人,能将设计思想展现在python解释器中,呵呵。输入import this 命令:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.       优美胜于丑陋
Explicit is better than implicit.    明了胜于晦涩
Simple is better than complex.       简单胜过复杂
Complex is better than complicated.  复杂胜过凌乱
Flat is better than nested.      扁平胜于嵌套
Sparse is better than dense.      间隔胜于紧凑
Readability counts.           可读性很重要
Special cases aren't special enough to break the rules.   即使假借特例的实用性之名,也不违背这些规则
Although practicality beats purity.   虽然实用性次于纯度
Errors should never pass silently.    错误不应该被无声的忽略
Unless explicitly silenced.        除非明确的沉默       
In the face of ambiguity, refuse the temptation to guess. 当存在多种可能时,不要尝试去猜测
There should be one-- and preferably only one --obvious way to do it. 应该有一个,最好只有一个,明显能做到这一点
Although that way may not be obvious at first unless you're Dutch.虽然这种 方式可能不容易,除非你是python之父
Now is better than never.    现在做总比不做好
Although never is often better than *right* now.  虽然过去从未比现在好
If the implementation is hard to explain, it's a bad idea.  如果这个实现不容易解释,那么它肯定是坏主意
If the implementation is easy to explain, it may be a good idea.   如果这个实现容易解释,那么它很可能是个好主意
Namespaces are one honking great idea -- let's do more of those!  命名空间是一种绝妙的理念,应当多加利用
>>> 

  哈哈,和一般的语言不同,在“hello world”程序开始之前,它还有一番人生哲学啊。

    初步入门:

    第一个python程序:(和其他脚本一样,可以按tab键快速选择)

>>> print "hello world"    ==>print是一个函数
hello world
>>> 

    这个在python3.0的解释器中运行是错误的,应该写成:print("hello world"),不管这些,以下均是2.X版本下。

  基础知识:

  交互式python解释器可以当非常强大的计算器使用 

>>> 1+1
2
>>> 1/2   ==>和其他语言一样,不做任何处理的情况下,这个是取整
0
>>> 1.0/2  ==>将任意一个数写成浮点形式,则结果会与精度最大的保持一致
0.5
>>> 1./2   ==>单独写个小数点也行
0.5
>>> 1//2   ==>   //这个符号是专门取整的
0
>>> 

         假如不想每次都要这么费劲一下,我就想在python里执行普通的除法,有办法:

>>> from __future__ import division   ==>注意future左右是两个下划线
>>> 1/2
0.5
>>> 1//2   ==>在这种情况下你反而想取整数部分了,使用//
>>> 0
>>>1.//2
>>>0.0

      长整型和进制:

>>> 958346283662845  ==>2.2版本以前是不能处理长整型的,范围是-2147483648~2147483647
958346283662845L   ==>L表示长整型,而且是大写
>>> 0xAF  ==>16进制
175
>>> 010   ==>8进制  (010首数字是0,表8进制)
8
>>> 

  获取用户输入:

>>> x=input("x=")
x=3
>>> y=input("y=")
y=4
>>> x*y
12

     函数:

>>> pow(2,3)   ==>求幂函数
8
>>> 2**3
8
>>> abs(-10)   ==>取绝对值
10
>>> round(5/2) ==>这里是先算5/2,即2,所以round(2)=2.0
2.0
>>> round(2.5) ==>把浮点数四舍五入为最接近的整数值
3.0
>>> floor(32.9) ==>取为不大于该数的最大整数
32

  模块:

>>> floor(23.5)
==>出错了
Traceback (most recent call last):   
  File "<pyshell#29>", line 1, in <module>
    floor(23.5)
NameError: name 'floor' is not defined
>>> import math   ==>引入模块math
>>> math.floor(23.5)
23.0
>>> int(math.floor(23.5))  ==>转换为整数
23
>>> 

   那我不想每次都输入math.来调用相应函数,如下写法:

>>> from math import floor
>>> floor(3.2)
3.0

  cmath和复数:

  在高中的时候有复数的预算,比如对一个复数取平方根,python提供了对复数处理的机制,但是要引入cmath模块。

>>> sqrt(-9)

Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    sqrt(-9)
NameError: name 'sqrt' is not defined
>>> import math   ==>引入math模块也无效
>>> math.sqrt(-9)

Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    math.sqrt(-9)
ValueError: math domain error
>>> import cmath  ==>引入cmath模块
>>> cmath.sqrt(-9)
3j
>>> (1+3j)*(9-2j)  ==>还可以进行计算
(15+25j)
>>> 

(__future__这个模块比较特别,它可以导入那些在未来会成为标准python组成的新特性)

  保存并执行程序:

  现在建一个python文件,扩展名是.py,把 print "hello python!"写入,双击,我们看到的是一闪而过的一个黑框,我记得在执行C#窗体程序的时候也会出现这种情况,只要在主程序结尾加上"Console.ReadKey()"就行了,这里也是,要给控制台一个提醒输入的机会,不然运行完就退出了,在结尾加一个语句:raw_input()。再双击即可弹出“hello python!”

执行这个文件hello.py
name=raw_input ("what is you name:")
print "hello "+name +"!"
raw_input()

      字符串:

>>> "hello python!"   ==>双引号会把原字符串按原样显示
'hello python!'
>>> "we'll go shopping!"
"we'll go shopping!"
>>> 'we'll go shopping!'
SyntaxError: invalid syntax
>>> 'we\'ll go shopping!'   ==>转义单引号
"we'll go shopping!"
>>> "\"hello,python!\" she said"   ==>字符串本身有双引号的情况
'"hello,python!" she said'
>>>"hello " + "python!"   ==>字符串拼接
'hello python!'

       str & repr:

  您可能发现了,不用print打印出的字符串显示出来的时候会被单引号括起来。所有通过python打印的字符串是被引号括起来的,这是因为python打印值的时候会保持该值在代码中的状态,而不是你希望用户看到的状态。

>>> print "hello world"
hello world
>>> print 'hello world'
hello world
>>> "hello world"
'hello world'
>>> 'hello world'
'hello world'
>>> print 10000L
10000
>>> 10000L
10000L
>>> 

     这里讨论的实际是值转换成字符串的两种机制,

   str函数:会把值转换为较理性的字符串,以便用户可以理解

   repr函数:会创建一个字符串,以合法的python表达式的形式表示值。

>>> print repr("hello python!")
'hello python!'
>>> print repr(100000L)
100000L
>>> print str("hello python!")    ==>显然,用户更希望看到的是str函数处理后的结果
hello python!
>>> print str(10000L)
10000
>>> 

    其实python有时候也没有这么智能,在高级语言中,好像数字有时候可以自动转换为字符串型

>>> age=22
>>> print "my age is "+ age

Traceback (most recent call last):
  File "<pyshell#72>", line 1, in <module>
    print "my age is "+ age
TypeError: cannot concatenate 'str' and 'int' objects
>>> print "my age is "+ str(age)
my age is 22
>>> 

   input & raw_input

      这样,我们先运行两个脚本,代码如下:

name=input("please input your name:")
print "hello,"+name

另一个脚本是将上述input改为raw_input

  运行会发现,第一个出错。其实不运行脚本也行,我么直接在解释器里运行命令吧!

>>> name =input("please input name:")
please input name:Jay

Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    name =input ("please input name:")
  File "<string>", line 1, in <module>
NameError: name 'Jay' is not defined
>>> name =raw_input ("please input name:")
please input name:Jay

     其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字肯定没有问题,但是要求用户每次输入一个东西还需要加引号,这不太友好。

  想反,raw_input函数会把所有的输入当做原始数据,然后自动将其放入字符串中,所以不会出错,所以我们应尽可能使用 raw_input()

     长字符串

  如果需要写一个很长的字符串,它需要跨多行,可以使用三个单引号,强制换行用反斜杠\

>>> '''asdgh
agjaw
ag'''
'asdgh\nagjaw\nag'
>>> 1+5+\
      4+6
16
>>>

      python中对多个反斜杠(路径中常用)转义除了加\,可以在整个字串的前面加r

>>> print 'c:\temp\test.txt'   
c:    emp    est.txt      ==>\t是制表符,所以会将\t作为一个制表符显示
>>> print 'c:\\temp\\test.txt'   ==>用传统的\转义
c:\temp\test.txt
>>> print r'c:\temp\test.txt'    ==>在前面加r转义
c:\temp\test.txt
>>> 

     

      常用的函数:abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、long(object)、math.ceil(number)(返回上入整数)、math.floor(number)(返回下舍整数)、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits])

     

     以上知识非常基础,刚入门,如有错误,请指出,谢谢!

 

      

 

作者: zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
目录
相关文章
|
27天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
15天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
20天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【10月更文挑战第42天】本文是一篇技术性文章,旨在为初学者提供一份关于如何使用Python进行数据分析的入门指南。我们将从安装必要的工具开始,然后逐步介绍如何导入数据、处理数据、进行数据可视化以及建立预测模型。本文的目标是帮助读者理解数据分析的基本步骤和方法,并通过实际的代码示例来加深理解。
49 3
|
1月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
16天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
16天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
36 7
|
17天前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
34 5
|
16天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
42 3
|
20天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
下一篇
DataWorks