实验二 Python运算符和内置函数的使用《Python程序设计》实验指导书

实验  Python运算符和内置函数的使用

一、实验目的和要求

(一)熟练掌握运算符的使用。

(二)熟练掌握内置函数的使用。

二、实验内容

(一)输入三角形的3个边长a、b、c,求三角形的面积area。利用如下海伦公式求三角形的面积。

  • 韩信点兵问题。

韩信在兰陵和项羽的军队打了一仗。当时韩信手下只有1500名将士,经过轮番作战,汉军约损失了近500名士兵,韩信为了知道到底剩下多少士兵,他开始“点兵”。

韩信“点兵”时,他先命令士兵每3人一组,最后多出了2名士兵;接着又命令7人一组,仍多了2名士兵;他再命令士兵5人一组,结果多了3名士兵。韩信马上告诉大家,现在我们有1073名士兵。

韩信点兵问题,实际上是我国古代有名的数学问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”又称为“中国剩余定理”。

我们使用Python语言编写一下韩信点兵的示例。该代码通过用户估算的兵力的上限和下限,可以测定出士兵的实际人数。

(三)编写程序,输入任意大的自然数,输出各位数字之和。

(四)编写程序,输入等比数列的首项、公比(不等于1且小于20的正整数)和一个自然数n,输出这个等比数列前n项的和。

三、实验仪器、设备

PC一台+Windows 操作系统+Anaconda/IDLE/Pycharm/VS Code。

四、实验原理

(一)Python常用的运算符

常见的运算符包括:算术运算符、赋值运算符、关系运算符、逻辑运算符、成员运算符、同一运算符。

1.算术运算符

    算术运算符包括:+、-、*、/、//、**、%。具体含义及优先级见表2-2。

表2-2 算术运算符

运算符

含义

优先级

+

加法

这些运算符的优先级相同,但比下面的运算符优先级低

-

减法

*

乘法

这些运算符的优先级相同,但比上面的运算符优先级高

/

除法

//

取整除

**

幂运算

%

取模

2.赋值运算符

 赋值运算符用“=”表示。

 赋值表达式: 变量 = 表达式

(1)普通赋值

               a=3

(2)链式赋值

           x=y=5

(3)多变量并行赋值

           x,y,z=2,5,8

(4)复合的赋值运算符

赋值运算符“=”与7种算术运算符(+、-、*、/、//、**、%)

和5种位运算符(>>、<<、&、^、|)结合构成12种复合的赋值运算符。

               a+=3          等价于      a=a+3

               a*=a+3        等价于      a=a*(a+3)

               a%=3           等价于      a=a%3

3.关系运算符

关系运算符包括>、>=、<、<=、==、!=。具体含义及优先级见表2-3。

表2-3 关系运算符

运算符

含义

优先级

结合性

>

大于

这些运算符的优先级相同,但比下面的运算符优先级低

左结合

>=

大于等于

<

小于

这些运算符的优先级相同,但比上面的运算符优先级高

<=

小于等于

==

等于

!=

不等于

4.逻辑运算符

逻辑运算符包括:not、and、or。具体含义及优先级见表2-4。

表2-4 逻辑运算符

运算符

含义

优先级

结合性

not

逻辑非

右结合

and

逻辑与

左结合

Or

逻辑或

5.成员运算符和成员表达式

成员运算符包括:in、not in。具体含义及优先级见表2-5。

表2-5 成员运算符和成员表达式

运算符

含义

优先级

结合性

in

存在

相同

左结合

not in

不存在

6.同一性运算符和同一性表达式

同一运算符:is、is not。具体含义及优先级见表2-6。

表2-6 同一性运算符

运算符

含义

优先级

结合性

is

相同

相同

左结合

is not

不相同

(二)Python常用内置函数

Python常用内置函数及用法如表2-7所示。

表2-7 Python常用内置函数

内置函数

说明

内置函数

说明

len(列表)

返回列表中的元素个数,同样适用于元组、字典、集合、字符串等。

sum(列表)

sum(iterable[, start])。对列表的元素进行求和运算,对非数值型列表运算需要指定start参数,同样适用于元组、range。

eval(常量表达式)

用来计算字符串的值或执行字符串中的Python代码,或者进行类型转换。

range(start,stop,step)

创建一个整数列表,一般用在for循环中。start:开始位置。默认为0。stop结束位置,但不包括stop。

step:步长,默认为1。

int([x])

返回实数x的整数部分,或把字符串x看作base进制并转为十进制

float(x=0,/)

将一个数字或字符串转换为浮点数

max(列表)

返回列表中的最大元素,同样适用于元组、字典、集合、range对象等。

zip(列表1,列表2,…)

zip(*iterables)

将多个列表或元组对应位置的元素组合为元组,并返回包含这些元组的可迭代的zip对象。带*为解包。

min(列表)

返回列表中的最小元素,同样适用于元组、字典、集合、range对象等。

enumerate(列表)

enumerate(iterable, start=0)

枚举列表元素,返回枚举对象,其中每个元素为包含下标和值的元组。该函数对元组、字符串同样有效。

五、实验步骤

(一)进入Anaconda Navigator界面,单击Jupyter Notebook下的按钮【Launch】,进入Jupyter Notebook开发环境。

(二)例如在桌面上新建一个Python 3文件,进入“Desktop”目录,单击按钮【New】下的【Python 3】,指定文件名,每个实验项目创建一个Python源代码文件。

(三)编写Python程序。

(四)运行Python程序。单击工具栏上的按钮【Run】或者菜单【Cell】下的某一Run选项或者按快捷键“Ctrl+Enter”。

(五)撰写实验报告。

六、实验注意事项

(一)机房的使用规范和用电安全。

(二)正确使用数据类型。

(三)先确定数据类型和算法,再编写程序实现。

七、实验报告要求

实验报告以书面/电子形式提交,严禁抄袭,一旦发现,即为零分。

实验报告主要内容包括实验名称、实验类型、实验地点、学时、实验环境、实验原理、实验步骤、实验结果、总结与思考等。

八、实验成绩考核

实验成绩根据实验课的出勤、课堂表现、实验思考以及实验报告的书写情况打分,按百分制,实验成绩的平均值按15%比例计入课程总成绩。

【参考代码】

(一)输入三角形的3个边长a、b、c,求三角形的面积area。利用海伦公式求三角形的面积。

import math

a=float(input("请输入三角形的边长1:"))
b=float(input("请输入三角形的边长2:"))
c=float(input("请输入三角形的边长3:"))

#海伦公式
S=(a+b+c)/2
area=math.sqrt(S*(S-a)*(S-b)*(S-c))
print("三角形的面积是:", area)

(二)韩信点兵问题。

# 用户输入士兵人数的上限与下限

soldiers=eval(input("请输入士兵的估算人数的上限和下限,用逗号隔开:"))

while len(soldiers) != 2:

    soldiers = eval(input("请重新输入士兵的估算人数的上限和下限,用逗号隔开:"))

# 根据韩信点兵规则,算出具体兵力

for i in range(soldiers[0],soldiers[1]):

    if i%3==2 and i%5==3 and i%7==2:

        print("韩信点兵的具体人数是:",i)

# 测试用例

输入:1000,1100

输出:1073

(三)编写程序,输入任意大的自然数,输出各位数字之和。

num = input("请输入一个自然数:")    # 读取用户输入的字符串

# 使用map函数完成对每一个字符的整型转换,再使用sum对每一位求和

print(sum(map(int,num)))             

(四)编写程序,输入等比数列的首项、公比(不等于1且小于20的正整数)和一个自然数n,输出这个等比数列前n项的和。

a1 = int(input("请输入等比数列的首项:"))

q = int(input("请输入等比数列的公比:"))

n = int(input("请输入一个自然数:"))

result = a1 * int("1" * n,q)   # a1 * (1 * q ^0  + 1 * q ^1 + 1 * q ^2)

print(result)

猜你喜欢

转载自blog.csdn.net/VLOKL/article/details/134462830