实验一 简单Python程序设计

实验一 简单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++的经历告诉我,在网上直接查阅各种信息是最快最有效率的学习方式,毕竟学一门语言只要学会就行,学习渠道不一定只拘泥于书本和课堂。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只大狸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值