酒店类网站开发策略,网站开发与软件研发有什么区别,网页设计与制作实训室厂家,湘潭网站建设厦门网站制作1 __name__属性
import demodef main():if __name__ __main__:print(这个程序被直接运行。)elif __name__demo:print(这个程序作为模块被使用。)
main()3.3 编写程序#xff0c;生成包含1000个0~100之间的随机整数#xff0c;并统计每个元素出现的次数。
import randomx[r…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)]# 使用集合
sset(x)
for v in s:print(v,:,x.count(v))
print(*30)# 使用字典
ddict()
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]。
xeval(input(请输入一个列表))
start,endeval(input(请输入开始位置)),eval(input(请输入结束位置))
print(x[start:end1])4.5 编写程序生成一个包含20个随机整数的列表然后对其中偶数下标的元素进行降序排列奇数下标的元素不变。
import random
x[random.randint(0,100) for i in range(20)]
print(x)
x[::2]sorted(x[::2],reverseTrue) # 只对偶数下标降序排列
print(x)4.6 编写程序用户从键盘输入小于1000的整数对其进行因式分解。例如102×5602×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%21]))
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 编写程序实现分段函数计算
xeval(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):nint(math.sqrt(v)1)for i in range(2,n):if v%i0:return Noreturn Yesprint(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 AiZ: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):s0for 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, reverseFalse):lst lst[:] # 复制原始列表避免修改原始列表for i in range(0, len(lst)):flag False # 标记是否发生元素交换for j in range(0, len(lst) - i - 1):# 比较相邻两个元素大小并根据需要进行交换默认升序exp lst[j] lst[j1]# 若reverseTrue则降序排列if reverse:exp lst[j] lst[j1]if eval(exp): # 利用eval()函数动态求值表达式lst[j], lst[j1] lst[j1], lst[j]# flagTrue表示本次扫描发生过元素交换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, reverseTrue) # 降序排序
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,age20,sexman):# 通过调用方法进行初始化这样可以对参数进行更好控制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,age30,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,x0,y0,z0):self.Xxself.Yyself.Zzdef __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请编写程序进行修正。
xi am a student,i am 18 years old.
xx.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[index1].isalpha():ch i # 将大写的I替换为小写的iresult 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 rere.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(rd:\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(rd:\1.txt,re:\1.txt)10.2 编写代码将当前工作目录修改为C:并验证最后将当前工作目录恢复为原来的目录。
import osos.getcwd()# 获取当前路径
os.chdir(rc:\\) # 修改工作目录到C盘
os.getcwd()
os.chdir(rd:\\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) # 如果找到匹配的文件名打印Yesbreak # 找到后跳出循环
else:print(No) # 如果未找到匹配的文件名在循环结束后打印No11.1 Python异常处理结构有哪几种形式
1try…except…
try:# 可能会引发异常的代码先执行一下试试xint(input(请输入一个整数))print(x)
except Exception as e:# 若try中的代码抛出异常并被except捕捉就执行这里的代码print(Error.)2try…except…else…
try:# 可能会引发异常的代码xint(input(请输入一个整数))print(x)
except Exception as e:# 用来处理异常的代码print(Error.)
else:# 若try子句中的代码没有引发异常就继续执行这里的代码print(success)try…except…finally…
try:# 可能会引发异常的代码xint(input(请输入一个整数))print(x)
except Exception as e:# 用来处理异常的代码print(Error.)
finally:# 无论try子句中的代码是否引发异常都会执行这里的代码print(-1)捕捉多种异常的异常处理结构
try:# 可能会引发异常的代码xfloat(input(请输入被除数))yfloat(input(请输入除数))zx/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 pymysqlconnpymysql.connect(host127.0.0.1,userroot,password123456,databaseMySQL,charsetUTF8MB4)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
)ENGINEinnodb DEFAULT CHARSETUTF8MB4;doSQL(sql)# 3.插入数据
for i in range(10):sqlINSERT 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.查询并输出数据
sqlSELECT * 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()