实验一 简单Python程序设计
一、实验目的及要求
1.练习使用Python语言编写简单程序设计题目;
2.掌握:Python常用内置对象-常量与变量、数字类型、字符串;
3.掌握:Python常用内置对象-列表、元组、字典、集合;
4.掌握:多种算术运算符的使用,包括比较运算符、逻辑运算符、赋值运算符、复合赋值运算符、位运算符、按位取反、异或运算和复合赋值运算符;
5.掌握:常用Python内置函数的用法;
6.实验完成后,认真写出实验报告,对出现的问题进行分析、总结;
7.实验过程中,遵守实验室的各项规章制度,爱护实验设备,保持环境卫生;
8.实验过程中,不得进行游戏、上网等操作;
二、实验环境(工具、配置等)
• 硬件要求:计算机一台
• 软件要求:Windows操作系统、Python3语言环境
三、实验内容
1.编写程序,输入任意大的自然数,输出各位数字之和。(使用map函数)
2.编写程序,通过用户输入三角形三边长度,并计算三角形的面积。
3.编写程序,生成一个含有20个随机数的列表,要求所有元素不相同,并且每个元素的值介于1到100之间。
4.编写程序,输入两个集合setA和setB,分别输出它们的交集,并集和差集setA - setB(使用eval函数)。
5.编写程序,输入一个自然数,输出它们的二进制,八进制,十六进制表示形式。
6.编写程序,输出1-100之间所有能被7整除但是不能被5整除的数。
7.编写程序,求解鸡兔同笼问题。假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只。
8.编写程序,在屏幕上打印1-30数,每7个数换行。
9.编写程序,打印九九乘法口诀表。
10.编写程序,输入一个包含若干整数的列表,输出列表中所有整数连乘的结果。(使用reduce函数)
四、实验结果与分析
题目1
程序代码:
"""
程序名:实验1.1.py
功能:输入任意大的自然数,输出各位数字之和
日期:2022.3.10
版本:1.0
"""
x = int(input("请输入一个自然数\n")) # 使用input输入x并转化为int类型
# 注意题目中的自然数,所以x的范围需要判断
if x >= 0: # 数字合法
numbers = list(map(int, str(x))) # 大整数每位上的数字并赋值给numbers
total = sum(numbers) # 调用sum函数直接计算总和
print("各位数字之和为:%d" % total) # 格式化输出
else: # 数字不合法
print("输入不合法")
运行结果截图:
题目2
程序代码:
"""
程序名:实验1.2.py
功能:通过用户输入三角形三边长度,并计算三角形的面积
日期:2022.3.10
版本:1.0
"""
import math # 用sqrt需要导入math标准库
x = list(map(int, input("请输入三角形的三边长\n").split())) # 利用map函数将读入的数字提取存储到列表中
if x[0] > 0 and x[1] > 0 and x[2] > 0: # 数据是否合法
if x[0] + x[1] > x[2] and x[1] + x[2] > x[0] and x[0] + x[2] > x[1]: # 是否能构成三角形
p = x[0] + x[1] + x[2] >> 1 # 计算半周长
area = math.sqrt(p * (p - x[0]) * (p - x[1]) * (p - x[2])) # 运用海伦公式计算三角形面积
print("三角形的面积为%d" % area)
else:
print("无法构成三角形")
else:
print("数据不合法")
运行结果截图:
题目3
程序代码:
"""
程序名:实验1.3.py
功能:生成一个含有20个随机数的列表,所有元素不相同,并且每个元素的值介于1到100之间。
日期:2022.3.10
版本:1.0
"""
import random # 导入random标准库
x = list(random.sample(range(1, 101), 20)) # 生成不相同的随机数存储到列表,并且范围在1~100
print("生成的随机数列表为:%s" % x)
运行结果截图:
题目4
程序代码:
"""
程序名:实验1.4.py
功能:输入两个集合setA和setB,分别输出它们的交集,并集和差集setA - setB(使用eval函数)。
日期:2022.3.10
版本:1.0
"""
setA = set(map(int, input("输入集合A中的元素\n").split())) # 利用map函数将读入的数字提取存储到集合A中
setB = set(map(int, input("输入集合B中的元素\n").split())) # 利用map函数将读入的数字提取存储到集合B中
print("交集:", setA & setB) # 交集:属于A且属于B
print("并集:", setA | setB) # 并集:属于A或属于B
print("差集:", setA - setB) # 差集:属于A且不属于B
运行结果截图:
题目5
程序代码:
"""
程序名:实验1.5.py
功能:输入一个自然数,输出它们的二进制,八进制,十六进制表示形式。
日期:2022.3.10
版本:1.0
"""
num = int(input("请输入一个自然数\n"))
if num > 0:
print("二进制:", bin(num)) # 使用bin()函数转换成二进制
print("八进制:", oct(num)) # 使用oct()函数转换成八进制
print("十六进制:", hex(num)) # 使用hex()函数转换成十六进制
else:
print("输入不合法")
运行结果截图:
题目6
程序代码:
"""
程序名:实验1.6.py
功能:输出1-100之间所有能被7整除但是不能被5整除的数。
日期:2022.3.10
版本:1.0
"""
for i in range(1, 101): # 范围是1~100
if i % 7 == 0 and i % 5 != 0: # 能被7整除且不能被5整除
print(i) # 满足条件的i就输出
运行结果截图:
题目7
程序代码:
"""
程序名:实验1.7.py
功能:求解鸡兔同笼问题。假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只。
日期:2022.3.10
版本:1.0
"""
a = int(input("输入头的数目:"))
b = int(input("输入脚的数目:"))
for i in range(1, a): # 数量最多不超过头
j = a - i # i + j = a
if 2 * i + 4 * j == b: # 2i + 4j = b
print("鸡有{}只,兔有{}只".format(int(i), int(j)))
运行结果截图:
题目8
程序代码:
"""
程序名:实验1.8.py
功能:在屏幕上打印1-30数,每7个数换行。
日期:2022.3.10
版本:1.0
"""
for i in range(1, 31): # 打印1-30
print(i, end=' ') # print默认以换行为结束,是end='\n'在起作用
if i % 7 == 0: # 每7个数换行
print()
运行结果截图:
题目9
程序代码:
"""
程序名:实验1.9.py
功能:打印九九乘法口诀表。
日期:2022.3.10
版本:1.0
"""
for i in range(1, 10): # 1~10赋给i
for j in range(1, i + 1): # j的范围是1~i
print("{}*{}={}".format(j, i, j * i), end='\t') # 格式化输出,并加上水平制表符来对齐(美观)
print("\n")
运行结果截图:
题目10
程序代码:
"""
程序名:实验1.10.py
功能:输入一个包含若干整数的列表,输出列表中所有整数连乘的结果。(使用reduce函数)
日期:2022.3.10
版本:1.0
"""
from functools import reduce # 导入reduce函数
a = eval(input("请输入一个包含若干整数的列表\n"))
mul = reduce(lambda x, y: x * y, a) # lambda表达式相当于函数
print("连乘结果为:%d" % mul)
运行结果截图:
问题和解决方法:
问题1:
利用map函数读入数字存入到列表中时,显示invalid literal for int() with base 10: ’ ’
解决方法:
通过查阅资料发现,需要使用到input函数中的split函数,该函数功能是通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。
问题2
格式化输出的时候显示invalid syntax
解决方法:
查询得知这是语法错误的意思,观察pycharm中报错的位置,查询相关信息后得知自己多了一个逗号,确实是语法错误。
问题3:
不知道该怎么创建不相同的随机数
解决方法:
通过查询random相关子函数得知,可以用sample()创建不相同的随机数。
问题4:
使用range时范围不正确
解决方法:
range范围是左闭右开,因此1~10 应该写成range(1, 11)
心得体会:
已经学过C++以后再学习python感觉就是在学一些python的语法,像很多题目其实都能够想起来该怎么去做,主要就是需要用python去实现。这样的话其实写python的代码其实主要就是注意python语法规范。
上学期学完C++的经历告诉我,在网上直接查阅各种信息是最快最有效率的学习方式,毕竟学一门语言只要学会就行,学习渠道不一定只拘泥于书本和课堂。