Python程序设计基础——代码习题

1 __name__属性

import demodef main():if __name__ == '__main__':print('这个程序被直接运行。')elif __name__=='demo':print('这个程序作为模块被使用。')
main()

在这里插入图片描述

3.3 编写程序,生成包含1000个0~100之间的随机整数,并统计每个元素出现的次数。

import randomx=[random.randint(0,100) for i in range(1000)]# 使用集合
s=set(x)
for v in s:print(v,':',x.count(v))
print('='*30)# 使用字典
d=dict()
for v in x:d[v]=d.get(v,0)+1
for k,v in d.items():print(k,v,sep=':')

3.4 编写程序,用户输入一个列表和两个整数作为下标,然后使用切片获取并输出列表中介于两个下标之间的元素组成的子列表。例如,用户输入[1,2,3,4,5,6]和2、5,程序输出[3,4,5,6]。

x=eval(input('请输入一个列表:'))
start,end=eval(input('请输入开始位置:')),eval(input('请输入结束位置:'))
print(x[start:end+1])

4.5 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。

import random
x=[random.randint(0,100) for i in range(20)]
print(x)
x[::2]=sorted(x[::2],reverse=True) # 只对偶数下标降序排列
print(x)

4.6 编写程序,用户从键盘输入小于1000的整数,对其进行因式分解。例如10=2×5,60=2×2×3×5。

x = eval(input('请输入一个小于1000的整数:'))  # 获取用户输入的整数t = x  # 将输入的整数赋值给变量t
i = 2  # 从最小的质数2开始尝试除法
result = []  # 存储质因数的列表while True:if t == 1:  # 如果t已经被分解完毕,则跳出循环breakif t % i == 0:  # 如果t能够整除当前的质数i,则i是t的一个质因数result.append(i)  # 将i添加到结果列表中t = t // i  # 将t除以i,继续判断是否还能整除else:i += 1  # 如果不能整除,则尝试下一个更大的质数print(x, '=', '*'.join(map(str, result)))  # 输出质因数分解的结果

4.7 编写程序,至少使用两种不同的方法计算100以内所有奇数的和。

print(sum([i for i in range(1,100) if i%2==1]))
print(sum(range(1,100)[::2]))

4.8 编写程序,输出所有由1,2,3,4这四个数字组成的素数,并且在每个素数中每个数字只使用一次。

import itertoolsdef is_prime(n):if n < 2:return Falsefor i in range(2, int(n**0.5) + 1):  # 判断是否为素数if n % i == 0:return Falsereturn Truedigits = [1, 2, 3, 4]  # 数字列表# 生成由给定数字列表中的数字组成的所有排列
permutations = list(itertools.permutations(digits))# 使用列表推导式,在每个排列中判断是否为素数,并将满足条件的素数转换为整数添加到一个新的列表中
prime_numbers = [int(''.join(map(str, perm))) for perm in permutations if is_prime(int(''.join(map(str, perm))))]print(prime_numbers)  # [1423, 2143, 2341, 4231]

4.9 编写程序,实现分段函数计算

x=eval(input('请输入x:'))if 0 <= x < 5:print(x)
elif 5 <= x < 10:print(x * 3 - 5) 
elif 10 <= x < 20:print(x * 0.5 - 2)
else:print(0)

5.2 编写函数,判断一个整数是否为素数,并编写主程序调用该函数

import mathdef isPrime(v):n=int(math.sqrt(v)+1)for i in range(2,n):if v%i==0:return 'No'return 'Yes'print(isPrime(37))
def is_prime(n):if n < 2:return Falsefor i in range(2, int(n**0.5) + 1):if n % i == 0:return Falsereturn True# 主程序
num = int(input("请输入一个整数:"))
if is_prime(num):print(f"{num} 是素数")
else:print(f"{num} 不是素数")

5.3 编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。

def count(v):capital = little = digit = other = 0for i in v:if 'A'<=i<='Z':capital += 1elif 'a' <=i <='z':little += 1elif '0' <=i <='9':digit += 1else:other += 1return (capital,little,digit,other)# 主程序
input_string = input("请输入一个字符串:")
result = count(input_string)
print(result)

5.8 编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。

def demo(*v):print(v)print(max(v))print(sum(v))demo(1,2,3)

5.9 编写函数,模拟内置函数sum()。

def Sum(v):s=0for i in v:s += ireturn sx=[1,2,3,4,5]
print(Sum(x))
x=(1,2,3,4,5)
print(Sum(x))

5.11 编写函数,模拟内置函数sorted()。

from random import randintdef mySorted(lst, reverse=False):lst = lst[:]  # 复制原始列表,避免修改原始列表for i in range(0, len(lst)):flag = False  # 标记是否发生元素交换for j in range(0, len(lst) - i - 1):# 比较相邻两个元素大小,并根据需要进行交换,默认升序exp = 'lst[j] > lst[j+1]'# 若reverse=True,则降序排列if reverse:exp = 'lst[j] < lst[j+1]'if eval(exp):  # 利用eval()函数动态求值表达式lst[j], lst[j+1] = lst[j+1], lst[j]# flag=True表示本次扫描发生过元素交换flag = True# 若一次扫描结束后,没有发生过元素交换,说明已经按序排列if not flag:breakreturn lst# 示例使用
nums = [randint(1, 100) for _ in range(10)]  # 生成随机整数列表
print("原始列表:", nums)
sorted_nums = mySorted(nums)  # 默认升序排序
print("升序排序结果:", sorted_nums)
reverse_sorted_nums = mySorted(nums, reverse=True)  # 降序排序
print("降序排序结果:", reverse_sorted_nums)

5.12 编写函数,模拟内置函数reversed()。

def myReversed(lst):for item in lst[::-1]:yield itemlst = list(range(5))
for i in myReversed(lst):print(i)

6.1 继承6.3节例6-1中的Person类生成Student类,填写新的方法用来设置学生专业,然后生成该类对象并显示信息。

# 基类(父类)
class Person(object): # 基类必须继承于object,否则在派生类中将无法使用super()函数def __init__(self, name='',age=20,sex='man'):# 通过调用方法进行初始化,这样可以对参数进行更好控制self.setName(name)self.setAge(age)self.setSex(sex)def setName(self,name):if not isinstance(name,str):# 检查name是否为字符串类型print('名字必须是字符串!')returnself.__name = namedef setAge(self,age):if not isinstance(age,int):print('年龄必须是整数!')returnself.__age = agedef setSex(self,sex):if sex != '男' and sex !='女':print('性别必须输入男或女!')returnself.__sex = sexdef show(self):print(self.__name)print(self.__age)print(self.__sex)# 派生类(子类)
class Student(Person):def __init__(self,name='',age=30,sex='男',major='计算机'):# 调用基类构造方法初始化基类的私有数据成员super(Student, self).__init__(name,age,sex)# 初始化派生类的数据成员self.setMajor(major)def setMajor(self,major):if not isinstance(major,str):print('专业必须是字符串类型!')returnself._major = majordef show(self):super(Student,self).show()print(self._major)if __name__=='__main__':# 创建父类对象lesin = Person('lesin',18,'女')lesin.show()print('='*30)# 创建子类对象esin = Student('esin',17,'女','数学')esin.show()# 调用集成的方法修改专业esin.setMajor('计算机科学与技术')esin.show()

6.2 设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法运算。

class Vecter3:def __init__(self,x=0,y=0,z=0):self.X=xself.Y=yself.Z=zdef __add__(self,n):r =Vecter3()r.X = self.X + n.Xr.Y = self.Y + n.Yr.Z = self.Z + n.Zreturn rdef __sub__(self, n):r =Vecter3()r.X = self.X - n.Xr.Y = self.Y - n.Yr.Z = self.Z - n.Zreturn rdef __mul__(self, n):r =Vecter3()r.X = self.X * nr.Y = self.Y * nr.Z = self.Z * nreturn rdef __truediv__(self, n):r =Vecter3()r.X = self.X / nr.Y = self.Y / nr.Z = self.Z / nreturn rdef __floordiv__(self, n):r =Vecter3()r.X = self.X // nr.Y = self.Y // nr.Z = self.Z // nreturn rdef show(self):print((self.X,self.Y,self.Z))v1 = Vecter3(1,2,3)
v2 = Vecter3(4,5,6)
v3 = v1 + v2
v3.show()

7.1 假设有一段英文,其中有单独的字母I误写为i,请编写程序进行修正。

x='i am a student,i am 18 years old.'
x=x.replace('i','I')
print(x)

7.2 假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行纠正。

text = 'If the implementatIon is hard to explain, it;s a bad idea.'
result = ''# 遍历文本中的每个字符及其索引
for index, ch in enumerate(text):# 如果当前字符是大写的"I",并且它前面和后面的字符都是字母if ch == 'I' and text[index-1].isalpha() and text[index+1].isalpha():ch = 'i'  # 将大写的"I"替换为小写的"i"result += chprint(result)

8.1 有一段英文文本,其中有个单词连续重复了2次,编写程序检查重复的单词,并只保留一个。例如,文本内容为"This is is a desk.“,程序输出为"This is a desk.”

import re
'''
(\w+):表示一个或多个连续的字母数字字符,被捕获到第一个分组中。
\s:表示一个空白字符(包括空格、制表符等)。
\1:表示对第一个分组的引用,即前面捕获到的单词。
通过调用 re.sub() 函数,将匹配到的重复的单词替换为第一个出现的单词。
'''
x = 'This is is a desk.'
x = re.sub(r'(\w+)\s\1',r'\1',x)
print(x)

8.2 编写程序,用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词。

import re
'''
re.compile() 函数创建一个正则表达式模式对象。\b 表示单词的边界,确保匹配的是完整的单词。
[a-zA-Z] 表示匹配任意一个字母(大小写不限)。
{3} 表示前面的表达式重复匹配3次,即匹配长度为3的单词。调用 pattern.findall(x) 方法来查找并返回输入字符串 x 中满足匹配模式的所有结果。
'''
x = input('请输入一段英文:')
pattern = re.compile(r'\b[a-zA-Z]{3}\b')
print(pattern.findall(x))

9.1 假设有一个英文文本文件,编写程序获取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。

with open(r'd:\test.txt', 'r') as src: # 打开D盘下的test.txt文件for line in src:  # 逐行读取文件内容print(line.swapcase())  # 对每一行的字符串进行大小写转换并打印输出

9.2 编写程序,使用pickle模块将包含学生成绩的字典保存为二进制文件,然后读取内容并显示。

import picklescore = {'lesin': 150, 'Bob': 73, 'esin': 97}with open('score.dat', 'wb') as fp:pickle.dump(score, fp)  # 将字典对象 score 序列化并写入到文件中with open('score.dat', 'rb') as fp:result = pickle.load(fp)  # 从文件中读取并反序列化为对象print(result)  # 打印反序列化后的结果(原始的字典对象)

10.1 使用shutil模块中的move()函数进行文件移动。

import shutil
shutil.move(r'd:\1.txt',r'e:\1.txt')

10.2 编写代码,将当前工作目录修改为"C:",并验证,最后将当前工作目录恢复为原来的目录。

import osos.getcwd()# 获取当前路径
os.chdir(r'c:\\') # 修改工作目录到C盘
os.getcwd()
os.chdir(r'd:\\Python\\demo') # 恢复到原来的目录
os.getcwd()

10.3 编写程序,用户输入一个目录和一个文件名,搜索该目录及其子目录中是否存在该文件。

import osdirectory = input('请输入文件夹:')
filename = input('请输入文件名:')  paths = os.walk(directory)  # 使用os.walk()函数遍历文件夹及其子文件夹
for root, dirs, files in paths:  # 遍历每个子文件夹中的目录、子文件夹和文件列表if filename in files:  # 判断文件名是否在文件列表中print('Yes')  # 如果找到匹配的文件名,打印'Yes'break  # 找到后跳出循环
else:print('No')  # 如果未找到匹配的文件名,在循环结束后打印'No'

11.1 Python异常处理结构有哪几种形式?

1)try…except…

try:# 可能会引发异常的代码,先执行一下试试x=int(input('请输入一个整数:'))print(x)
except Exception as e:# 若try中的代码抛出异常并被except捕捉,就执行这里的代码print('Error.')

2)try…except…else…

try:# 可能会引发异常的代码x=int(input('请输入一个整数:'))print(x)
except Exception as e:# 用来处理异常的代码print('Error.')
else:# 若try子句中的代码没有引发异常,就继续执行这里的代码print('success')
  1. try…except…finally…
try:# 可能会引发异常的代码x=int(input('请输入一个整数:'))print(x)
except Exception as e:# 用来处理异常的代码print('Error.')
finally:# 无论try子句中的代码是否引发异常,都会执行这里的代码print(-1)
  1. 捕捉多种异常的异常处理结构
try:# 可能会引发异常的代码x=float(input('请输入被除数:'))y=float(input('请输入除数:'))z=x/y
except ZeroDivisionError:#except Exception1:# 处理异常类型1的代码print('除数不能为零')
except TypeError:#except Exception2:# 处理异常类型2的代码print('被除数和除数应为数值类型')
except NameError:#except Exception3:# 处理异常类型3的代码print('变量不存在')
else:print(x,'/',y,'=',z)
finally:# 无论是否发生异常都会执行这段程序print('程序结束')

12.2 使用Python内置函数dir()查看Cursor对象中的方法,并使用内置函数help()查看其用法。

import sqlite3# 创建数据库连接
conn = sqlite3.connect('database.db')# 创建游标对象
cursor = conn.cursor()
methods = dir(cursor)
print(methods)help(cursor.method_name)  # 将 `method_name` 替换为要查看的方法名

12.5 叙述使用Python操作MySQL数据库的步骤

import pymysqlconn=pymysql.connect(host='127.0.0.1',user='root',password='123456',database='MySQL',charset='UTF8MB4')cursor = conn.cursor()def doSQL(sql):cursor.execute(sql)conn.commit()# 1.创建test数据库
doSQL('CREATE DATABASE IF NOT EXISTS test;')# 2.在test数据库中创建question数据表
sql='''
CREATE TABLE IF NOT EXISTS test.questions(
id INT auto_increment PRIMARY KEY,
wenti CHAR(200) NOT NULL UNIQUE,
daan CHAR(50) NOT NULL
)ENGINE=innodb DEFAULT CHARSET=UTF8MB4;
'''
doSQL(sql)# 3.插入数据
for i in range(10):sql='INSERT INTO test.questions(wenti,daan) VALUE ("测试问题{0}","答案{0}");'.format(i)cursor.execute(sql)
conn.commit()# 4.修改数据
doSQL('UPDATE test.questions SET daan="被修改了" WHERE wenti="测试问题6";')# 5.删除指定的数据
doSQL('DELETE FROM test.questions WHERE daan="答案8";')# 6.查询并输出数据
sql='SELECT * FROM test.questions'
cursor.execute(sql)
for row in cursor.fetchall():print(row)# 7.删除所有数据
doSQL('DELETE FROM test.questions')# 8.删除数据表
doSQL('DROP TABLE IF EXISTS test.questions;')# 9.删除数据库
doSQL('DROP DATABASE IF EXISTS test;')# 10.关闭游标和连接
cursor.close()
conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/277919.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞&#xff0c;未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息&#xff0c;导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

Orbit 使用指南 03 | 与刚体交互 | Isaac Sim | Omniverse

如是我闻&#xff1a; “在之前的指南中&#xff0c;我们讨论了独立脚本&#xff08; standalone script&#xff09;的基本工作原理以及如何在模拟器中生成不同的对象&#xff08;prims&#xff09;。在指南03中&#xff0c;我们将展示如何创建并与刚体进行交互。为此&#xf…

Jmeter+ant,ant安装与配置

1.ant含义 ant&#xff1a;Ant翻译过来是蚂蚁的意思&#xff0c;在我们做接口测试的时候&#xff0c;是可以用来做JMeter接口测试生成测试报告的工具 2.ant下载 下载地址&#xff1a;Apache Ant - Ant Manual Distributions download中选择ant 下载安装最新版zip文件 3.…

解决分布式事务,Seata真香!

年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验等…

4、设计模式之建造者模式(Builder)

一、什么是建造者模式 建造者模式是一种创建型设计模式&#xff0c;也叫生成器模式。 定义&#xff1a;封装一个复杂对象构造过程&#xff0c;并允许按步骤构造。 解释&#xff1a;就是将复杂对象的创建过程拆分成多个简单对象的创建过程&#xff0c;并将这些简单对象组合起来…

Linux字符设备驱动开发一

linux字符设备驱动 0 驱动介绍1 字符设备驱动1.1 字符设备相关概念和结构体1.2 实现简单的字符设备模块1.3 创建字符设备1.4 总结 应用程序调用文件系统的API(open、close、read、write) -> 文件系统根据访问的设备类型&#xff0c;调用对应设备的驱动API -> 驱动对硬件进…

面试经典150题——随机链表的复制

​前两天断更了两天有点事情&#x1f917; 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路&#xff0c;没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度&#xff0c;该怎么解决&#xff1f; 可以有这样的一种思路&#xff1a; 首先复制链表的所有节…

记OnlyOffice的两个大坑

开发版&#xff0c;容器部署&#xff0c;试用许可已安装。 word&#xff0c;ppt&#xff0c;excel均能正常浏览。 自带的下载菜单按钮能用。 但config里自定义的downloadAs方法却不一而足。 word能正常下载&#xff0c;excel和ppt都不行。 仔细比对调试了代码。发现app.js…

fetch,前端 面试题

Fetch Fetch API 是近年来被提及将要取代XHR的技术新标准&#xff0c;是一个 HTML5 的 API。 基于promise的设计&#xff0c;返回的是Promise对象 fetch()采用模块化设计&#xff0c;API 分散在多个对象上&#xff08;Response 对象、Request 对象、Headers 对象&#xff09;…

Java双非大二找实习记录

先说结论&#xff1a;2.22→3.6线上线下面了七家&#xff0c;最后oc两家小公司&#xff0c;接了其中一个。 本人bg&#xff1a; 真名不经传双非一本&#xff0c;无绩点无竞赛无奖项无实习&#xff0c;23年12月开始学java。若非要说一点相关的经历&#xff0c;就是有java基础&…

新手向-从VNCTF2024的一道题学习QEMU Escape

[F] 说在前面 本文的草稿是边打边学边写出来的&#xff0c;文章思路会与一个“刚打完用户态 pwn 题就去打 QEMU Escape ”的人的思路相似&#xff0c;在分析结束以后我又在部分比较模糊的地方加入了一些补充&#xff0c;因此阅读起来可能会相对轻松&#xff08;当然也不排除这是…

Hadoop大数据应用:NFS网关 连接 HDFS集群

目录 一、实验 1.环境 2.NFS网关 连接 HDFS集群 3. NFS客户端挂载HDFS文件系统 二、问题 1.关闭服务报错 2.rsync 同步报错 3. mount挂载有哪些参数 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;…

Ubuntu 20.04 系统如何优雅地安装NCL?

一、什么是NCL&#xff1f; NCAR Command Language&#xff08;NCL&#xff09;是由美国大气研究中心&#xff08;NCAR&#xff09;推出的一款用于科学数据计算和可视化的免费软件。 它有着非常强大的文件输入和输出功能&#xff0c;可读写netCDF-3、netCDF-4 classic、HDF4、b…

【遍历方法】浅析Java中字符串、数组、集合的遍历

目录 前言 字符串篇 1.1 使用 for 循环和 charAt 方法 1.2 使用增强 for 循环&#xff08;forEach 循环&#xff09; 1.3 使用 Java 8 的 Stream API 最终效果 数组篇 2.1 使用普通 for 循环 2.2 使用增强型 for 循环( forEach 循环) 2.3 使用 Arrays.asList 和 forE…

C#调用Halcon出现尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException

一、现象 在C#中调用Halcon&#xff0c;出现异常提示&#xff1a;尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException 二、原因 多个线程同时访问Halcon中的某个公共变量&#xff0c;导致程序报错 三、测试 3.1 Halcon代码 其中tsp_width…

用户视角的比特币和以太坊外围技术整理

1. 引言 要点&#xff1a; 比特币L2基本强调交易内容的隐蔽性&#xff0c;P2P交易&#xff08;尤其是支付&#xff09;成为主流&#xff0c;给用户带来一定负担&#xff08;闪电网络&#xff09;在以太坊 L2 中&#xff0c;一定程度上减少了交易的隐蔽性&#xff0c;主流是实…

C语言 数据在内存中的存储

目录 前言 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1.练习一 2.2 练习二 2.3 练习三 2.4 练习四 2.5 练习五 2.6 练习六 三、浮点数在内存中的存储 3.1 浮点数存的过程 3.2 浮点数取的过程 总结 前言 数据在内存中根据数据类型有不同的存储方式&#xff0c;今…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰与烟雾检测系统详解(深度学习模型+UI界面升级版+训练数据集)

摘要&#xff1a;本研究详细介绍了一种集成了最新YOLOv8算法的火焰与烟雾检测系统&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行性能评估对比。该系统能够在包括图像、视频文件、实时视频流及批量文件中准确识别火焰与烟雾。文章深入探讨了YOLOv8算法的原理&#xff0…

Parade Series - Web Streamer Low Latency

Parade Series - FFMPEG (Stable X64) 延时测试秒表计时器 ini/config.ini [system] homeserver storestore\nvr.db versionV20240312001 verbosefalse [monitor] listrtsp00,rtsp01,rtsp02 timeout30000 [rtsp00] typelocal deviceSurface Camera Front schemartsp ip127…

软件杯 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…