第2章 Python语言基础知识

本文由用户“wbxydyn”分享发布 更新时间:2021-04-11 22:16:53 举报文档

以下为《第2章 Python语言基础知识》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

第2章 Python语言基础知识本章学习目标熟练掌握数据输入输出的方法;

了解标识符与变量的基本概念与用法;

了解数据类型的基本概念并能熟练定义数据类型;

掌握运算符和表达式的用法,熟悉条件表达式的构造;

了解常用的内置函数。2.1 控制台的输入与输出通常,任何程序都会通过输入输出的功能与用户进行交互和沟通。所谓输入就是指程序通过用户输入的信息获取数据,而输出则是指程序向用户显示或打印数据。在Python语言中,我们可以用input()函数进行输入,print()函数进行输出,这些都是简单的控制台输入输出函数。2.1.1 数据的输入Python中提供了input()函数用于输入数据,无论用户输入什么内容,该函数都返回字符串类型。其格式如下:

input(prompt=None, /)

其中prompt表示提示信息,默认为空,如果不空,则显示提示信息。然后等待用户输入,输入完毕后按回车键,并将用户输入作为一个字符串返回,并自动忽略换行符。可以将返回结果赋予变量。

说明:函数参数最后一个斜线表示该函数只接收位置参数而不接收关键参数,但是在Python中并不允许自定义这样的函数。这样的函数一般是用C语言开发的内置函数或特定对象的方法。位置参数和关键参数相关知识请参考第6章函数。2.1.1 数据的输入当用户输入100,按回车键之后,input()函数将字符串'100'赋予变量x,结果就是字符串'100'。内置函数type()返回对象的类型。>>>x = input("请输入x值:")

请输入x值:100

>>>x

'100'

>>> type(x)

>>> x = input("请输入x值:")

请输入x值:like

>>> x

'like'

>>> type(x)

当用户输入like,按回车键之后,input()函数将字符串'like'赋予变量x,结果就是字符串'like'。即不管输入什么内容,input()函数的返回结果都是字符串。2.1.1 数据的输入既然input()函数得到的结果就是字符串,那么要得到其他类型的数据怎么办?如怎么得到数值型数据?如何得到列表数据?这就要通过类型转换函数int()、float()等将字符串转换成数值。有些场合还可以用eval()函数计算字符串所表示的表达式的值。

为了说明这个问题,我们先来介绍一下函数int()、float()、eval()的功能和用法。2.1.1 数据的输入1. int()函数

格式1:int([x])

功能:截取数字的整数部分或将字符串转换成一个整数;如果不给定参数则返回0。>>> int()

0

>>> int(23.54)

23

>>> int(-3.52)

-3

>>> int('4')

4

>>> int('-4')

-4>>> int('45.6')

Traceback (most recent call last):

File "", line 1, in

int('45.6')

ValueError: invalid literal for int() with base 10: '45.6'注意:int()函数不接受带小数的数字字符串。2.1.1 数据的输入格式2:int(x, base=10)

功能:把base进制的字符串x转换为十进制,base为可选的基数,默认为十进制。

说明:当int()函数的第1个参数为字符串时,可以指定第2个参数base来说明这个数字字符串是什么进制,同样不接受带小数的数字字符串。base的有效值范围为0和2-36。>>> int('0b110', base=0) #将二进制的数110转换为十进制数

6

>>> int('110', base=2)

6

>>> int('110', 2)

6>>> int('***',2) #将二进制的数***转换为十进制数

73

>>> int('2ef',16) #将十六进制的数2ef转换为十进制数

751

>>> int('27',8) #将八进制的数27转换为十进制数

23

>>> int('101.001',2)

Traceback (most recent call last):

File "", line 1, in

int('101.001',2)

ValueError: invalid literal for int() with base 2: '101.001'实际上,int('4')即int('4',10),int('-4')即int('-4',10),默认为十进制。2.1.1 数据的输入2. float()函数

格式:float(x=0, /)

功能:将一个数字或字符串转换成浮点数。>>> float(5)

5.0

>>> float(5.67)

5.67

>>> float('5')

5.0

>>> float('5.67')

5.67

>>> float('inf') #无穷大,inf不区分大小写

Infprint(1.1 + 2.2 - 3.3) print(1.1 + 2.2) from decimal import Decimal print(Decimal('1.1') + Decimal('2.2') - Decimal('3.3')) from fractions import Fraction print(Fraction(11, 10) + Fraction(22, 10) - Fraction(33, 10))2.1.1 数据的输入3. eval()函数

格式:eval(source, globals=None, locals=None, /)

功能:将source当做一个python表达式进行解析和计算,返回计算结果。

参数说明:source是一个字符串,这个字符串能表示成Python表达式,或者是能够通过编译的代码;globals是可选的参数,默认为None,如果设置属性不为None的话,就必须是dictionary对象;locals也是可选的参数,默认为None,如果设置属性不为None的话,可以是任何map对象。2.1.1 数据的输入可以看出,eval()函数接收一个字符串参数时,如果字符串中是表达式可以返回表达式的值;如果字符串中是列表、元组或字典还能得到真正的列表、元组或字典;如果字符串中是能够通过编译的代码,则可以执行代码。>>> x=3

>>> eval('x+1')

4

>>> eval('3+5')

8

>>> eval('[1,2,3]')

[1, 2, 3]

>>> eval('(1,2,3)')

(1, 2, 3)>>> eval('{1:23,2:32}')

{1: 23, 2: 32}

>>> eval("__import__('os').getcwd()") #获取当前目录

'C:\\Users\\lq\\AppData\\Local\\Programs\\Python\\Python37'>>> '3'+'2'2.1.1 数据的输入了解了int()、float()、eval()函数以后,我们继续讨论如何获得数值型数据或其他类型数据。2.1.1 数据的输入x的值为整数100,此时通过input()函数得到的字符串'100'被int()函数转换成整数100。>>> x=int(input("请输入x值:"))

请输入x值:100

>>> x

100

>>> type(x)

>>> x=float(input("请输入x值:"))

请输入x值:100

>>> x

100.0

>>> type(x)

x的值为浮点数100.0。此时通过input()函数得到的字符串'100'被float()函数转换成浮点数100.0。2.1.1 数据的输入x的值为浮点数100.23,此时通过input()函数得到的字符串'100.23'被float()函数转换成浮点数100.23。>>> x=float(input("请输入x值:"))

请输入x值:100.23

>>> x

100.23

>>> type(x)

但是需要注意的是:期望得到整数的时候,利用int()函数不能输入带小数点的值,请参看前面int()函数的说明。如以下输入则会出错:>>> x=int(input("请输入x值:"))

请输入x值:100.36

Traceback (most recent call last):

File "", line 1, in

x=int(input("请输入x值:"))

ValueError: invalid literal for int() with base 10: '100.36'>>> x=int(100.36)

>>> print(x)2.1.1 数据的输入也可以通过eval()函数获得数值。>>> x=eval(input("请输入x值:"))

请输入x值:100.36

>>> x #获得浮点数

100.36

>>> x=eval(input("请输入x值:"))

请输入x值:100

>>> x #获得整数

100

>>> x=eval(input("请输入x值:"))

请输入x值:100+200

>>> x #获得表达式的值

300

>>> x=eval(input("请输入:"))+200

请输入:100

>>> x #输入100,通过eval()获得整数100,与200相加,最后x得到300

3002.1.1 数据的输入还可以通过eval()函数获得其他类型的值。>>> x=eval(input("请输入x值:"))

请输入x值:[1,2,3]

>>> x #获得列表

[1, 2, 3]

>>> x=eval(input("请输入x值:"))

请输入x值:{'a':1,'b':2}

>>> x #获得字典

{'a': 1, 'b': 2}2.1.1 数据的输入input()函数也可以同时为多个变量赋值。例如:>>> x,y = input("请输入x,y值:")

请输入x,y值:ab

>>> x

'a'

>>> y

'b'当用户输入ab,按回车键之后,input()函数分别将'a'、'b'赋予变量x、y,结果就是x的值为'a',y的值为'b'。但是,如果想得到x的值'ab',y的值'cd',我们直接输入abcd或者ab cd等均是错误的。>>> x,y = input("请输入x,y值:")

请输入x,y值:abcd

Traceback (most recent call last):

File "", line 1, in

x,y = input("请输入x,y值:")

ValueError: too many values to unpack (expected 2)2.1.1 数据的输入实际上我们并不会这样做。一般来说,我们会结合split()和map()函数得到多变量的值。因为split()和map()函数比较复杂,这里仅作简单说明,函数的具体用法请参看相关章节和其他资料。具体示例请参看例2-3和例2-4,这里不再赘述。2.1.1 数据的输入m是通过input()函数得到的字符串,输入的是ab cd,那么m就得到字符串'ab cd'(注意ab和cd之间用空格分隔),然后通过字符串的split()方法得到元素为字符串的列表(['ab', 'cd']),再通过map()函数将str()函数作用于该列表,得到包含若干字符串的map对象,最后通过对map对象进行序列解某某'ab'和'cd'分别赋给x和y。>>> m= input("请输入x,y值:")

请输入x,y值:ab cd

>>> m

'ab cd'

>>> m.split()

['ab', 'cd']

>>> x,y=map(str,m.split())

>>> x

'ab'

>>> y

'cd'2.1.2 数据的输出Python中最简单的输出方式就是使用print()函数。其格式如下:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

其中各参数的解释如下:

value: 表示需要输出的对象,一次可以输出一个或者多个对象(其中...表示任意多个对象),当输出多个对象时,对象之间要用逗号(,)分隔;

sep:表示输出时对象之间的间隔符,默认用一个空格分隔;

end:表示输出以何字符结尾,默认值是换行符;

file:表示输出位置,可将输出到文件,file指定的对象要有“写”的方法,默认值是sys.stdout(标准输出);

flush:将缓存里面的内容是否强制刷新输出,默认值是False。2.1.2 数据的输出一次输出三个对象,中间默认用空格隔开。>>> print('hello','world','!')

hello world !>>> print('hello','world','!',sep='*')

hello*world*!一次输出三个对象,中间用*隔开。>>> print('hello','world','!',sep='')

helloworld!一次输出三个对象,中间无分隔,因为sep参数值被设置为空字符串了。>>> print('hello','world','!',end='*')

hello world !*一次输出三个对象,以*结尾。将输出helloworld!写入到c盘test文件夹中ok.txt文件。>>> with open('c:\\test\\ok.txt','w') as f:

print('helloworld!',file=f)2.1.2 数据的输出>>> for i in [0,1,2,3,4]:

print(i)

?

0

1

2

3

4直接输出每个i,每个数字一行。>>> for i in [0,1,2,3,4]:

print(i,end=' ')

?

0 1 2 3 4直接输出每个i,每输出一个数字都以空格结尾,下一个数字接着输出。2.1.2 数据的输出>>> for i in [0,1,2,3,4]:

print(i,end='')

?

01234直接输出每个i,每输出一个数字都以空字符串结尾,下一个数字接着输出,效果就是数字之间紧密连接无缝隙。>>> for i in [0,1,2,3,4]:

print(i,end='*')

?

0*1*2*3*4*直接输出每个i,每输出一个数字都以*结尾,下一个数字接着输出。我们可以看出:print函数默认输出是换行的,如果要实现不换行需要在变量末尾设置 end参数。请读者学完循环后再来看涉及到for的输出。【例2-1】【例2-1】阅读以下程序代码,分析程序运行结果。#example2_1.py

#coding=utf-8

print("我喜欢"+"程序设计")

print("我喜欢","程序设计")

print()

print("我喜欢")

print("程序设计")

print("我喜欢",end='')

print("程序设计")程序运行结果:>>>

============ RESTART: G:\example2_1.py ============

我喜欢程序设计

我喜欢 程序设计

?

我喜欢

程序设计

我喜欢程序设计分析:第1行中的“+”表示字符串的连接,通过print()函数将连接后的字符串在一行输出;第2行中的print()函数打印两个字符串对象,输出的时候中间会插入一个空格作为间隔;第3行通过print()输出一个空行;第4行和第5行分两行单独输出,print()函数默认以换行符结尾;第6行print()函数以空字符串结尾,则第7行print()接在前一行的末尾继续输出。【例2-2】【例2-2】小明过年得到1500元压岁钱,在商场看中一个书包,正好商场做活动打八五折,从键盘输入书包的价格,输出折扣后书包的价格以及小明买了书包后剩下的钱。#example2_2.py

#coding=utf-8

total=1500

price=float(input('请输入书包价格:'))*0.85

left=total-price

print("折扣后书包的价格:",price)

print("小明买了书包后剩下的钱:",left)程序运行结果:>>>

============ RESTART: G:\example2_2.py ============

请输入书包价格:342.5

折扣后书包的价格: 291.125

小明买了书包后剩下的钱: 1208.8752.2 标识符、变量与赋值语句2.2.1 标识符

标识符是指用来标识某个实体的一个符号。在不同的应用环境下有不同的含义。在编程语言中,标识符是计算机语言中作为名字的有效字符串集合。标识符是用户编程时使用的名字,变量、常量、函数、语句块也有名字,它们的名字称为标识符。

1. 合法的标识符

在Python中 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 达式,最后介绍了常见的Python内置函数。习题21.运用输入输出函数编写程序,能将华氏温度转换成摄氏温度。换算公式:C=(F-32)*5/9,其中C为摄氏温度,F为华氏温度。

2.编写程序,根据输入的长和宽,计算矩形的面积并输出。

3.编写程序,输入三个学生的成绩计算平均分并输出。

4.根据以下叙述写出正确的条件表达式:

有语文(Chinese)、数学(Math)、英语(English)XX课程,均采用百分制,60及以上为及格,90及以上为优秀。

XX课程都及格;

至少一门课程及格;

语文及格且数学或者英语优秀。

习题25.Python中的pass语句有何作用?

6.为了给孩子储备教育基金,希望在孩子满10周某某(120个月)时能够提取5万元用于教育。现有各种不同收益率的按月复利计算教育投资基金。编写程序,根据键盘输入的月收益率,计算在孩子出生时该投资多少钱来购买基金,使得孩子10周某某时能取回5万元用于教育。计算公式如下:投资金额= 最终金额 (1+月利率) 月数 教学资料、问题解答公众号[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《第2章 Python语言基础知识》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览