今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了。

Python相对于C\C++来说,在语法方面已经很简单了;甚至对于JavaScript也是很简单的,减去了很多冗余的部分,让程序的编写更简单便捷。

一、变量

Python变量的定义很简单,Python是动态强类型语言Python省去了定义时的数据类型。C\C++在定义变量的时候都要明确声明该变量的数据类型,如int、char、floor、double、string等等,JavaScript已经简化了变量定义,但是仍然需要声明如var、let。相比之下Python就显得很方便了,并且Python不需要在每一行代码后面加上分号。

Python声明变量的格式为变量名 = “变量值”,例如:

name = "cen"

Python在变量的命名上与其他的编程语言类似,由字母、数字和下划线组成,由字母或下划线开始;并且有很多预留关键字不可以作为变量名:and,as,assert,break,class,continue,def,del,elif,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield

常量

在很多编程语言中都可以定义常量,Python也不例外。不过Python对于常量的定义就简单的多,只需要将常量名用全大写字母来命名即可。

二、注释

Python中单行注释:#,多行注释用'''......'''包起来,当然'''......'''也可以用于多行打印,下面会有例子,这里就不再赘述了。

三、输入与格式化输出

1、输入

  C\C++在用户交互是使用的输入有scanf和cin,Python的用户交互程序则用的是input,并且Python的输入相比较于C\C++来说对格式的要求比较低,并且语法也相对比较简单,可以将输入内容和提示内容在一条语句内显示。Python2中的输入raw_input与Python3中的input是相同的,其实Python2中也有另一个input方法,不过其效果比较鸡肋,所以不推荐使用。Python3中的input方法才是正道。

格式如下:变量名 = input ("提示内容")  例如:输入用户名和密码:

username = input("name: ")
password = input("password: ")
print(username,password)

执行效果如下:

name: cen
password: 123
cen 123

大家可以看到无论是用户名和密码都是明文的,安全性很低,那么在输入时加密输入密码,类似于JavaScript中的input-password标签,应该怎么做呢?

  getpass.getpass()

首先,要在代码中引入Python的标准库:import getpass,然后就可以愉快的使用getpass.getpass()方法啦

import getpass

username = input("username: ")
password = getpass.getpass("password: ")
print (username,password)

执行效果如下:

name: cen
password:
cen 123

不过这个方法在PyCharm中无法执行,不方便调试,这是一个缺点,另一个缺点是在输入密码时看不到输入的位数,并且没有退格效果。

2、格式化输出

这个直接用例子来理解,例如:在Python中输入以下数据并输出如下格式:

----information of 姓名----
Name:
Age:
Job:
Salary:
name = input("name")
age = input("age")
job = input("job")
salary = input("salary")

Python中输出可以有一下几种方法:

(1)字符串拼接法

字符串拼接法就说到了我们上面说的'''......'''多行打印。实现代码:

info1 = '''
----information of ''' + name + '''----
Nmae:''' + name + '''
Age:''' + age + '''
Job:''' + job + '''
Salary:''' + salary
print(info1)

不过字符串拼接法是最不好用的一种方法,多次开辟内存空间,效率低下,不建议使用。

(2)引用变量-%

引用变量的方法相对于字符串拼接方法来说无疑是更加便捷的方法了。

  a、%s-----数据格式占位法。这种方法使用每一个数据的数据格式来占位,在最后给出每个占位相应的变量名。实现代码:  

info2 = '''
-----information of %s-----
Name:%s
Age:%s
Job:%s
Salary:%s
'''%(name,name,age,job,salary)
print(info2)

  这里是各种数据类型所对应的符号:

    符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  %f和%e的简写
      %G  %f 和 %E 的简写
      %p  用十六进制数格式化变量的地址

 需要注意的是:(1)占位和变量名一定要一一对应。 

        (2)input输入的内容默认格式都是string类型,为了增强代码的规范性和可读性以及逻辑的严密性需要转换类型,用到数据类型的强制转换。格式变量名 = 数据类型()

          例子如下(将字符串转化为整型):

age = int(input("age: "))

  b、.format(_name = name)-----赋值  这种方法用一个占位名占位,在最后将变量的值赋给占位名。实现代码如下:

info3 = '''
-----information of {_name}----
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
'''.format( _name = name,_age = age,_job = job,_salary = salary)
print(info3)

  c、.format------数字占位  这种方法用数字(从0开始)来替代上面的占位名,更加简洁,但是对顺序要求很严格。实现代码如下:

info4 = '''
----information of {0}----
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
'''.format(name,age,job,salary)
print(info4)

  以上方法均可格式化输出,执行结果如下:

name: cen
age: 21
job: student
salary: 1

-----info of cen-----
Name:cen
Age:21
Job:student
Salary:1

四、if-else流程判断

在每种编程语言中都有条件判断语法,if-else-elif是Python中的条件判断,语法格式如下:

if 条件1:
A
elif 条件2:
B
else:
C

Eg:判断输入的用户名密码是否合法:

_username = "cen"
_password = "" username = input("username: ")
password = input("password: ") if username == _username and password == _password:
print("welcome user {name} login...".format(name = username))
else:
print("wrong username or password")

如果输入正确则:

username: cen
password: 999999
welcome user cen login...

如果输入错误则:

username: cen
password: 123
wrong username or password

五、循环

1、while循环while循环语法格式:

while 条件:
循环体
else:
B

Eg:输出0-2

count = 0
while count < 3:
print(count)
count += 1
else:
print("已经到3啦")

执行结果:

0
1
2
已经到3啦

2、for循环

for循环语法格式如下:

for 计数器 in range(参数):
循环体
else:
B

for语句括号中的参数可以为一个参数,两个参数,三个参数。

  如果是一个参数(E),则计数器从0开始运行到E结束;

  如果是两个参数(B,E),则计数器从B开始运行到E结束;

  如果是三个参数(B,E,S),则计数器从B开始运行到E结束,每隔S执行一次循环体;

Eg1:输出0-2

for i in range(3):
print(i)
else:
print("已经到3啦")
0
1
2
已经到3啦

Eg2:输出2-4

for i in range(2,5):
print(i)
else:
print("已经到5啦")
2
3
4
已经到5啦

Eg3:输出2-10,从2开始每隔3个打印一次

for i in range(2,10,3):
print(i)
else:
print("已经到10啦")
2
5
8
已经到10啦

3、continue,break和嵌套循环

(1)continue用于跳过本次循环;break用于结束整个循环

下面的例子有助于理解continue和break的区别

for i in range(5):
if i == 2:
continue
print(i)
print("这是一条分界线")
for i in range(5):
if i == 2:
break
print(i)

执行结果如下:

0
1
3
4
这是一条分界线
0
1

(2)嵌套循环 Eg:

for i in range(4):
if i == 2:
continue
print(i,"----")
for j in range(5):
if j == 2:
break
print(" ",j)
0 ----
0
1
1 ----
0
1
3 ----
0
1

例题:猜数字游戏,规则如下:规定一个固定数字(如78),用户可以输入三次,用户输入的数字如果大于78,则提示“过大”;用户输入的数字如果小于78则提示“过小”;用户输入的数字如果等于78,则提示“猜对了”并结束游戏。用户输入三次后如果任未猜对,则提示“是否想继续游戏”,如果用户输入“N”则结束游戏,否则继续游戏;依次循环;

代码实现:

main_number = 78
count = 3
while count:
guess_number = int(input("guess_number:") )
if guess_number == main_number:
print("yes,you got it")
break
elif guess_number > main_number :
print("too big")
else:
print("too small")
count -= 1
if count == 0:
continue_confirm = input("Do you want to keep guessing?")
if continue_confirm != 'n':
count = 3

六、模块初识

模块:通俗来说就是库,有点类似于函数集合。Python的模块大概分为两种,一种是标准库,一般在lib文件夹下;另一种是第三方库,一般在lib\\site-packages文件夹下。

Python的标准库例如sys和os库。再引入库的时候语法如下:import os

如果要引入自己写的库,一种方法是将库放在与.py文件同级目录下,这样显然很不方便。解决办法是:(1)将你自己的库拷贝到site-packages文件夹里(2)修改环境变量,增加一个路径

八、.PYC

在了解.PYC之前,先了解一下编译性语言和解释性语言的区别:

  因为计算机不能理解高级语言,只能直接理解机器语言,所以要将高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。这个翻译的方式有两种:一种是编译,一种是解释。这两种方式只是翻译的时间不同。

编译性语言
编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
解释性语言
  解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性java语言,专门有一个解释器能够直接执行java程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
  脚本语言是解释性语言。脚本语言一般都有相应的脚本引擎来解释执行。它们一般需要解释器才能运行。所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。
  实际上,计算机语言已经不能按照编译型语言或者解释型语言来彻底区分了。比如说java语言是解释性语言。但是java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。Java字节码使“写一次,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何Java VM上。例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上。
  所以,其实.PYC文件是Python程序预编译后得到的字节码文件(.py->.pyc)。而pyCodeObject文件是Python编译器真正编译成的结果。即.PYC是pyCodeObject文件的一种持久化保存方式。
九、数据类型初识1、数字:  (1)int(整型)  long(长整型)
       (2)float(浮点型)(8个字节(64位))
       (3)complex(复数)
2、布尔值:真或假,0或1
3、字符串 str    在这里要提一下“字符串拼接”Python中的字符串在C语言中体现为一个字符数组,每次创建字符串时需要在内存中开辟一块连续的空间,并且一旦需要修改字符串的话,就需要在此开辟空间,“+”号每出现一次就会在内存中重新开辟一块空间。
4、bytes类型
Python3最重要的特性大概就要算是对文本和二进制数据作了更清晰的区别。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任何隐藏的方法混用str和bytes,致使这两者的区分特别清晰。所以,你不能以任何形式拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。    

初学Python(第一课)的更多相关文章

  1. <-0基础学python.第一课->

    初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...

  2. Python 第一课笔记

    1.Hello World程序的两种方法     在windows下执行 1.编辑器里输入,不用编译 print("Hello World!") 直接就可以运行      2.可以 ...

  3. 初学Python——第一节课

    一.Python语言的特性: 1.与C语言不同,Python语言是一门解释性语言.程序在执行过程中,执行一步.编译一步. 2.Python是一个动态类型语言,不需要定义变量的数据类型. 3.Pytho ...

  4. 初学python第一天

    在学习了c++,java后自己又找到一门面向对象的技术.没错,它就是python.首先介绍一下自己所用的python版本,自己在Python官网http://www.python.org下载了IDLE ...

  5. Python第一课

    一.模块的常用方法 __name__     #主模块name值main __file__    #文件所在的路径+文件名 __doc__    #文件级别的注释 二.函数 参数 参数默认值 可变参数 ...

  6. python 第一课 helloworld

    #!/usr/bin/env python #-*-coding:utf-8-*- #以上是配置编写环境的开始 #第一行env表示运行当前环境变量内的python版本(2.x or 3.x) #第二行 ...

  7. python第一课——关于python的一些概念

    day01(上午): 1.学习方法(建议): 1).不要依赖于我的视频,绝对不要晚上将视频全部在过一遍 2).上课不要记笔记,而且不要用纸质的笔记本去整理笔记 3).不要只看不敲,代码方面我们需要做到 ...

  8. python第一课--基础知识

    python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的 ...

  9. Python 第一课

    Python语言特点: 优雅,明确,简单 适合开发: Web网络和各种网络服务 系统工具和脚本 作为胶水语言把其他语言开发的模块包装起来方便使用 Python2.7.10的安装(path环境变量)   ...

  10. python 第一课作用

    1.使用while循环输入 1 2 3 4 5 6     8 9 10 x=0while x<10: x=x+1 if x==7: print(' ') continue print(x)#学 ...

随机推荐

  1. Java 中的变量

    变量 Java 程序的变量大体可分为成员变量和局部变量. 局部变量 形参:在方法签名中定义的局部变量,由方法调用者负责为其赋值,随方法的结束而消亡. 方法内的局部变量:在方法内定义的局部变量,必须在方 ...

  2. linkinFrame--web应用举例--准备工作

    OK,前面的博客我们已经搭好了linkinFrame的项目结构,现在我们这里添加一个简单的web应用,在编写此web应用的过程中我们来一步一步的搭好自己的框架. 现在开始,这里举一个例子,一个客户的C ...

  3. 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞

    跨站脚本就是在url上带上恶意的js关键字然后脚本注入了,跨站伪造用户请求就是没有经过登陆,用超链接或者直接url上敲地址进入系统,类似于sql注入这些都是安全漏洞. sql注入 1.参数化查询预处理 ...

  4. 【Python3之迭代器,生成器】

    一.可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值 注:循环不是迭代 while True: ...

  5. ulua c#调用lua中模拟的类成员函数

    项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...

  6. Centos7 动态创建文件系统

    linux 想要动态扩展文件系统,需要将磁盘做成LVM动态卷   以centos 7为例 挂载两块磁盘 vdb vdc     安装 ssm 管理磁盘工具   yum -y install syste ...

  7. window对象的属性

    还不是很了解,以后补充frames      opener       parent

  8. AppScan扫描结果分析及工具栏使用

    Appscan的窗口大概分三个模块,Application Links(应用链接), Security Issues(安全问题), and Analysis(分析) Application Links ...

  9. form表单中get和post两种提交方式的区别

    一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...

  10. 浅谈python模块的导入操作

    1.什么是模块 在Python中有一个概念叫做模块(module). 所谓模块,就是将代码量较大的程序分割成多个有组织的,彼此独立但双能互相交互的代码片段, 这些自我包含的有组织的代码段就是模块. 2 ...