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.mzph.cn/news/741563.shtml

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

相关文章

助贷系统crm:帮助助贷机构实现高效的客户关系管理

助贷系统CRM&#xff08;客户关系管理系统&#xff09;是一种能够帮助助贷企业实现高效客户关系管理的工具&#xff0c;通过助贷系统CRM&#xff0c;助贷企业可以更好地管理企业客户信息&#xff0c;跟踪客户互动、提高客户满意度&#xff0c;从而促进业务增长。 1. 客户信息集…

vMware WorkStation创建虚拟机安装CentOS7,NAT模式配置网络

一、安装虚拟机 1、选择典型&#xff08;推荐&#xff09;配置 2、选择稍后安装操作系统 3、操作系统选择CentOS7 64位 4、虚拟机命名、选择安装位置 6、指定磁盘容量 7、指定磁盘容量 步骤&#xff1a; &#xff08;1&#xff09;、系统内存2GB &#xff08;2&#xff09;、…

linux-MDK can电机带导轨

确保接线正确&#xff0c;这个带导轨的电机需要24V的电压 $ ls /dev //查看端口是什么$ sudo slcand -o -s6 /dev/ttyACM0 can0 //将端口封装为can0 $ sudo ip link set can0 up //打开端口 按照电机说明书&#xff0c;按照需要的指令计算检验和&#xf…

FreeRTOS 的任务挂起和恢复

1. 任务挂起和恢复的 API 函数 API函数描述vTaskSuspend()挂起任务vTaskResume()恢复被挂起的任务xTaskResumeFromISR()在中断中恢复被挂起的任务 挂起&#xff1a;挂起任务类似暂停&#xff0c;可恢复&#xff1b; 删除任务&#xff0c;堆栈都给释放掉了&#xff0c;无法恢复…

计算机网络-第7章 网络安全(2)

7.5 密钥分配 7.6 互联网使用的安全协议 7.7 系统安全&#xff1a;防火墙与入侵检测

【故障电弧探测器 方案介绍】安科瑞电气火灾监控系统

什么是电弧&#xff1f; 电弧俗称‘电火花’ &#xff0c;又叫‘打火’ &#xff0c;本质是一种绝缘体被电压击穿后&#xff0c;由不导电变的导电&#xff0c;且发光发热的自然现象。 什么是故障电弧&#xff1f; 由于电气线路或设备中绝缘老化破损、电气连接松动、空气潮湿…

SpringCloud Hystrix 断路器

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第五篇&#xff0c;即介绍 Hystrix 断路器。 二、概述 2.1 分布式系统面临的问题 复杂分布式体系结构中…

TIOBE 3月编程排行榜出炉:遥遥领先,霸榜第一!

哈喽呀~又到了每个月的语言排行榜啦&#xff01; TIOBE 3月编程语言也已经公布&#xff0c;具体有啥新变化呢&#xff1f;快和我一起往下看~ Python遥遥领先&#xff0c;霸榜第一 先来看看本月排行榜top5的表现。毫无疑问&#xff0c;Python依然遥遥领先&#xff1a; Python 第…

RabbitMQ学习笔记——消息转化器

消息转化器的问题&#xff0c;如果我们发送方发送的数据为引用类型的对象&#xff0c;默认使用的是JDK内部自带的ObjectOutputStream进行对象序列化和反序列化&#xff0c;这样做比较复杂并且不安全。 我们可以引入Jackson来做对象的序列化&#xff0c;可将默认的JDK消息转化器…

Testng认识与配置-全网最简单

总结&#xff1a;testng支持注解&#xff0c;线程池&#xff0c;数据驱动&#xff0c;参数化&#xff0c;强大执行模式&#xff0c;也支持单元测试&#xff0c;功能测试&#xff0c;接口测试 TestNG is a testing framework inspired from JUnit and NUnit but introducing som…

Samtec前沿 | 信号发生器 - 决定可靠性的重要因素之一

【摘要/前言】 作为消费者&#xff0c;我们已经开始期待我们的技术达到一个前所未有的可靠性水平。无论是智能手机还是家庭汽车&#xff0c;我们已经开始期待智能电子设备在每次使用时都能在第一时间发挥作用。 【信号和电源发生器至关重要】 现代设备能够提供如此出色的…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

VXLAN学习笔记

声明&#xff1a;该博客内容大部分参考参考链接整理 什么是VXLAN&#xff1f; VXLAN(Virtual Extensible LAN)即虚拟扩展局域网&#xff0c;是大二层网络中广泛使用的网络虚拟化技术。在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道&#xff0c;采用MAC in UDP的封装方…

Vue+SpringBoot打造大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的大学生相亲网站&#xff0c;包含了会员管理模块、新闻管…

嵌入式系统中端口号的理解与分析

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

*地宫取宝c++

题目 输入样例1&#xff1a; 2 2 2 1 2 2 1输出样例1&#xff1a; 2输入样例2&#xff1a; 2 3 2 1 2 3 2 1 5输出样例2&#xff1a; 14 思路 题目说从入口开始&#xff0c;只能向右或向下行走到达右下角&#xff0c;类似“摘花生”这道题的模型。题目又说只有当格子里的宝…

数字化浪潮下的选择:ETU-LINK光模块写码板全新升级至400G

随着光模块市场的蓬勃发展&#xff0c;ETU研发团队致力于不断改进SFP编码工具&#xff0c;以满足日益增长的客户需求。经过不懈努力&#xff0c;我们成功推出了3.0版本的写码板&#xff0c;在硬件和软件方面都进行了全面升级&#xff0c;为用户带来了极大的便利。今天&#xff…

一文弄懂空间金字塔池化网络

目录 空间金字塔池化网络是什么&#xff1f; 组成部分和工作原理 具体步骤 ​编辑 主要优点 空间金字塔池化网络是什么&#xff1f; 空间金字塔池化网络&#xff08;Spatial Pyramid Pooling Network&#xff0c;SPPNet&#xff09;是一种用于处理具有不同尺寸和比例的输入…

前端网络相关面试题

1. GET和POST请求的区别 传递参数不同&#xff1a; POST传递的参数在request body中GET传递的参数在url后拼接 GET请求一般用于查询&#xff0c;POST一般用于提交某种信息进行某些修改操作 POST相对GET请求安全 GET请求会被浏览器主动缓存&#xff0c;POST不会&#xff0c;要…

蓝牙耳机哪个好?2024年蓝牙耳机推荐榜单,新手上路!

​面对市场上种类繁多的蓝牙耳机&#xff0c;许多用户感到困惑不解。作为一个耳机爱好者&#xff0c;我根据自己的使用经验&#xff0c;整理了一些我认为值得推荐的蓝牙耳机&#xff0c;希望能为大家在选购时提供一些参考。 一、蓝牙耳机选购指南 1. 佩戴舒适度排名——开放式…