天天看点

Lesson3---Python语言基础(1)

3.1 初始python

1、python是解释性语言

3.2 第一个python程序

3.2.1 python的基础知识

1、python的缩进很严格很重要,PEB8:4个空格

2、在C中,else是与if就近配对,是悬挂else

但是在python中,是与第一个if配对

3、如果出现错误信息

IndentationError:unexpected indent

说明是缩进出了问题

4、标识符是大小写敏感的,num与Num是不同的

5、python的输出是默认换行的,不需要换行符。

3.2.2 第一个python程序

# 判断变量num是否为正数(注释语句)
num = 0 #赋值语句,语句的结束可以没有分号,无须提前声明变量
if num > 0:				#条件语句
    print("num是正数")
else:
    print("num可能是0")	#语句块不需要大括号,只需要使用同样的缩进就可以
    print("num也可能是负数")
           

动态类型语言:

  • 不需要声明变量的语言
  • 变量在使用前必须赋值
  • 类型检查在运行阶段完成
  • python、JavaScript、Ruby…

静态类型语言:

  • 必须声明变量
  • 类型检查在编译阶段完成
  • C、C++、Java…

3.3 输入和输出

3.3.1 python语法初步

  • 使用“#”作为单行注释符
  • Python变量在使用之前不需要声明
  • 语句块通过代码的缩进来表示
  • 标识符是大小写敏感的
  • print()函数在输出中自动包含换行

3.3.2 输入函数

#input(提示信息)
string = input("Please input some words: ")#表示在屏幕中输出提示信息,并等待用户的输入,并将接收到的输入存储在string中
           

注意: input函数的返回值是字符串类型,因此需要使用类型转换

# 判断变量num是否为正数
#num = 1
num = int(input("请输入一个整数: "))#需要一个类型转换函数
if num > 0:
    print("num是正数")
else:
    print("num可能是0")
    print("num也可能是负数")
           

3.3.3 输出函数

可以直接输出变量,常量、表达式

支持格式化参数的使用

例如

# 判断变量num是否为正数
#num = 1
num = int(input("请输入一个整数: "))
print("您输入的整数是: %d" %(num))
if num > 0:
    print("num是正数")
else:
    print("num可能是0")
    print("num也可能是负数")
           

也可以在一个print函数中使用多个格式化参数:

常用的字符串格式化参数

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

format格式化输出

1、常用方法%

举例:

>>>print("今天是%d年%d月%日"%(2019,5,18))
今天是2019年5月18日
>>>print('第一个数字是%.5f,第二个数字是%d'%(0.678,10))
第一个数字0.67800,第二个数字是10
           

2、字符串的format()方法

使用大括号“{}”代替“%”
str.format()
           

2.1 基本用法

(1)不带编号

>>>print('{} {}'.format('hello','world'))
hello world
>>>print("今天是{}年{}月{}日".format(2019,5,18))
今天是2019年5月18日
           

(2)带数字编号:参数个数没有限制,可以多次使用,顺序可以任意放置

>>>print('{0}{1}'.format('hello','world'))
hello world
>>>print('{0}{1}{0}'.format('hello','world'))
hello world hello
>>>print('{1}{1}{0}'.format('hello','world'))
world world hello
>>>print('她叫{0},今年{1}岁,她的朋友lisa,今年也{1}岁了'.format('Lucy',10))
她叫Lucy,今年10岁,她的朋友lisa,今年也10岁了
           

(3)带关键字

>>>print('她叫{name},今年{age}岁。'.format(age=10,name='Lucy'))
她叫Lucy,今年10岁。
           

2.2 进阶用法

(1)填充:默认使用空格填充。=(只用于数字)在小数点后进行补齐

(2)对齐:

符号 含义
< 左对齐(默认)
> 右对齐
^ 中间对齐

举例:

宽度为8,不够8位用!填充,右对齐,

>>>print('第一个数字是{:!>8}'.format(123.98))
第一个数字是!!123.98
           

宽度为8,不够8位默认用空格填充,右对齐,

>>>print('第一个数字是{:>8}.format(123.98)')
第一个数字是  123.98
           

(3)数据类型

符号 含义
r 浮点数
b 二进制
d 十进制
o 八进制
x 十六进制

举例:

第一个数字是浮点类型,小数点后保留5位有效数字;第二个数字是十进制整数

>>>print('第一个数字是{:.5f},第二个数字是{:d}'.format(0.678,10))
第一个数字是0.67800,第二个数字是10
           

综合示例:

浮点类型,宽度为8,小数点后保留3位有效数字,右对齐,不够8位宽度用“!”填充

>>>print('第一个数字是{:!>8.3f}'.format(123.98))
第一个数字是!123.980
           

3.3.4 转义字符

对于一些难以打印的字符可以使用\将其变成转义字符

  • \r 回车
  • \n 换行
  • \t 横向制表符
  • \v 纵向制表符
  • \f 换页
  • \a 响铃
  • \b 退格(Backspace)
  • (行尾) 续航符
  • \ 反斜杠符号
  • ’ 单引号
  • " 双引号
  • \000 空
  • \oyyy 八进制数yyy代表的字符
  • \xyy 十进制数yyy代表的字符

对于不想转义字符生效可以使用r来前置

例如,对于下面式子会输出

>>> print("C:\MyProgram\rencent\num\test\score")
ecentrogram
um		est\score
           

因此可以改写成:

>>> print(r"C:\MyProgram\rencent\num\test\score")
C:\MyProgram\rencent\num\test\score
>>> print(R"C:\MyProgram\rencent\num\test\score")
C:\MyProgram\rencent\num\test\score
           

3.3.5 end参数

在python3中,print参数的第二个参数的end表示输出信息结束后附加的信息,这里是换行,可以设置这个参数来改变输出的效果

不设置end参数,结果分两行打印

>>>print("Python")
>>>print("3.5")
Python
3.5

           

设置end为空串,在运行结果中,两个输出连在一起打印

>>>print("Python",end="")
>>>print("3.5")
>Python 3.5

           

设置end=" ",会在这两个输出中插入空格

3.4 常量、变量和表达式

python支持六种标准的类型:数字、字符串、列表、元组、字典、集合

3.4.1 数字(Numbers)

3.4.1.1 整型(Integer)

  • 正整数 int_a = 65536
  • 负整数 int_b = -200
  • 零 int_c = 0

    python3中是不需要考虑整数的范围的,直接当作长整型来使用

>>>int_num = 123456789987654321
>>>print(int_num,type(int_num))#type()函数是返回数据类型
123456789987654321  <class 'int'>
           

3.4.1.2 浮点数(Float)

  • 小数 3.14,-0.28
  • 计算机中的浮点数采用科学计数法的方式来存储
  • 太阳直径:1392000千米–>1.392×10e9米–>1.392E9
>>>float_sun = 1.392E9
>>>print(float_sun,type(float_sun))
1392000000.0 <class 'float'>
           

下面的几种方式都是表示同一个浮点数

>>>print(1.392E9,";",1.392e9,";",0.1392E10)
1392000000.0;1392000000.0;1392000000.0
           
>>>print(type(1392000000))
<class 'int'>
           

3.4.1.3 布尔值(Boolean)

True(真)—1 False(假)----0

python的大小写是敏感的,所以True≠true≠TRUE

3.4.1.4 复数(Complex)

a+bi 实部+虚部

3.4.2 字符串(String)

  • 使用成对的单引号或者双引号括起来
  • “Python”, “666”, “3.5”
  • 在python中可以使用一个三重引号指定一个多行字符串
>>>print('''
这是一个文档字符串
文档字母可以跨越多行
文档字符串可以使用三重单引号
''')
这是一个文档字符串
文档字母可以跨越多行
文档字符串可以使用三重单引号
>>>print("""
这也是一个文档字符串
使用三重双引号
""")
这也是一个文档字符串
使用三重双引号
           

#多行注释

"""
三重引号可以直接当作注释
也可以放进print()输出
"""
>>>print("""
三重引号可以直接当作注释
也可以放进print()输出
""")
三重引号可以直接当作注释
也可以放进print()输出
           

3.4.2.1 标识符(Identifier)

标识符:变量、函数、数组、文件、对象等的名字

python程序中的标识符命名规则如下:

  • 标识符的第1个字符必须是字母或下划线
  • 其他字符可以有字母、下划线或数字组成
  • 标识符长度任意
  • 合法的标识符:test_data、test_data_1、predicted_value_of_house_price、_y
  • 不合法的标识符:1test、1_test
  • 尽量不要使用下划线作为自定义标识符的开始和结束

    _xxx

    # 类中的保护变量名

    __xxxx

    # 类中的私有彬良名

    __xxx__

    # 系统定义的标识符 构造函数

    __init__()

  • 标识符是大小写敏感的。score、Score不一样
  • 标识符不能与Python关键字重名

    可以使用

    help("keywords")

    来查看
>>>help("keywords")
Here is a list of the Python keywords.  Enter any keyword to get more help.

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not
           
  • 在python3中支持非英文作为标识符,可以使用中文,但是考虑到代码的通用性,还是使用英文的比较好,应当使用有意义的字母作为标识符,做到望文生义

3.4.2.2 常量(constant)

  • 常量包括数字、字符串、布尔值、空值等

    2,-10068,3.5,”Python“,True,False,None

  • Python中没有命名常量,不能像C语言一样给常量取一个名字

3.4.2.3 变量(variable)

  • Python的变量不需要声明
  • 其数据类型由所赋的值决定
  • 不同类型的数字型数据运算时,会自动的进行类型转换,由低精度数据类型转换到高精度的数据类型,这只存在于数字型类型之间

    bool<int<float<complex

  • 数据类型转换函数
函数 功能 示例
int(x,base) x是待转换的数,base是转换后的进制 转换位整型 int(“12,2”)
float() 转换为浮点数 float(“123”)
str() 转换为字符串 str(123)
chr() 将整数转换为对应的ASCⅡ字符
ord() 将一个字符转换为对用的ASCⅡ码
complex 转换为复数型 complex(1)

例子

>>>a = "11"
>>>b = int(a) + 1
>>>print("a = ", a, type(a))
>>>print("b = ", b, type(b))
a = 11 <class 'str'>
b = 12 <class 'int'>

>>>print(int(3.6))
3
>>>print(int(-3.6))
-3
>>>print(int())
0

>>>print(chr(65))
A
>>>print(ord('A'))
65
           

可以使用提供的help函数查看类型转换函数的用法

help(int)

,这是查看int函数的用法

>>>help(int)
Help on class int in module builtins:

class int(object)
 |  int([x]) -> integer
 |  int(x, base=10) -> integer
 |
 |  Convert a number or string to an integer, or return 0 if no arguments
 |  are given.  If x is a number, return x.__int__().  For floating point
 |  numbers, this truncates towards zero.
 |
...more
           

3.5 程序控制语句

3.5.1 选择结构----条件分支语句

3.5.1.1 if语句

if 判断条件:
	if语句块
           

例子:

x,y = 3,5
if x<y:
    print("x is less than y.")
    print("y is greater than x.")
print("continue......")
           

输出:

x is less than y.
y is greater than x.
continue......
           

3.5.1.2 if–elif–else语句

if 判断条件1:
	语句块1
elif 判断条件2:
	语句块2
elif 判断条件3:
	语句块3
	......
elif 判断条件n:
	语句块n
else:
	语句块n+1
           

例子:

x = int(input("请输入x: "))
y = int(input("清输入y: "))
if x < y:
    print("x is less than y.")
elif x > y:
    print("x is greater than y.")
else:
    print("x is equal to y.")
print("continue.......")
           

if条件表达式(选择表达式)

x**3是求x的3次方的写法。**是幂次运算符。

x//y表示x除以y的商再取int()函数,或者说是x对y做带余除法得到的商,这个商是一个整形,举例说明,10÷3=3……1,所以10//3=3

表达式1 是 判断条件为 真 的输出的结果

表达式2 是 判断条件为 假 的输出的结果

a,b = 3,4
print(a if a>b else b) #这是将a和b中大的值输出
           

解释:

range()的用法

函数range() 让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。