所有代码均在python3.7环境下调试通过,为了防止排版原因导致不能正常运行,提供了正常运行情况下的代码截图。
1、编写程序,求1~n之间的素数列表
def sushu(x):
n=int(input("请输入n:"))
for j in range(2,n):
是素数")
2、编写程序,生成一个包括100个随机整数的列表,然后从后向前删除所有素数
import random
def sushu(x):
s=[]
i=0
for i in range(0,30):
for i in range(0,30):
print("\\n")
print("T列表")
t=[]
for j in range(29,0,-1):
for i in range(0,len(t)-1):
3、编写程序,当用户从键盘输入整数后,对其进行因式分解(即素数的积)。如100=2*2*5*5
n = int(input("请输入待分解的整数n=?"))
x = 1
flag = True
if n > 1000:#判断大于1000的数
请输入不超过1000的整数")
if n > 1 and n <= 1000:
elif n == 1:
elif n == 0:
print("0=0")
4、编写程序,验证100以内整数的哥德的猜想:任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。如10=5+5, 12=5+7
def isprime(x):
def gedb(x):
输入的数据不正确,应该是大于或等于4的偶数")
def main():
输入大于或等于4的偶数"))
main()
5、编写程序,输出所有由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。
def isprime(x):
def exercise3_5():
exercise3_5()
6、编写程序,求所有水仙花数。水仙花数是指一个三位数,其个位、十位、百位3个数字的立方和等于这个数本身。并断定有没有四位数的水仙花数?
t=0
s=0 #统计水仙花数的个数
for i in range(100,1000):
print(s)
for i in range(1000,10000):
if t==0:
7、编写程序,生成一个包含100个随机数的列表,然后运用切片方法对其中偶数下标的元素进行降序排列,奇数下标的元素不变。
解法一:
import random
list_1=[]
#生成随机整数列表
for i in range(20):
生成的列表为:',list_1)
从首位开始索引下标为偶数位元素
for i in range(0,len(list_1),2):
从上一个偶数位的下一个偶数位元素开始索引
防止索引超出范围
比较索引元素大小
互换元素位置
print('排序后列表为:',list_1)
解法2:
import random
random.seed()
lst=[random.randint(0,101) for i in range(20)]
print(lst)
def bubble_sort(lst):
bubble_sort(lst)
print(lst)
8、编写程序,输入行数,输出一个如下图所示的由“*”构成的等腰三角形(提示:用setw()函数)。
for i in range(6):
9、编写程序,A、B、C、D、E共5人夜里去捕鱼,很晚才各自找地方休息。日上三竿,A第1个醒来,他将鱼均分成5份,把多余的一条扔掉,拿走自己的一份。B第2个醒来,他也将鱼均分成5份,将多余的1条扔掉,拿走自己的一份。C、D、E如此类推。问他们合伙至少捕了多少条鱼?
解法一
设总共捕了x条鱼,每个人看到的鱼共有Xn条, 则:
X1=x
X2=(X1-1)/5*4
X3=(X2-1)/5*4
X4=(X3-1)/5*4
X5=(X4-1)/5*4
其中,(Xn-1)%5=0必定成立,即题中所提到的,扔掉一条,取五分之一。
那么就有x,使得递推所得到的项满足(Xn-1)%5=0即可。
def fish(n, x):
x = 6
while True:
for i in range(1, 6):
第{0}人看到的鱼有{1}条".format(i, x))
x = int((x - 1) / 5 * 4)
解法二 反向递推法:
解决E和D的问题(规模为2),就可以解决D和C的问题,也就是E、D、C的问题(规模为3),最后解决所有问题。
由X(n+1)=(Xn-1)/5*4得,Xn=X(n+1)*5/4+1
fish = [0, 0, 0, 0, 1]
i = 0
while True:
print("总共捕了",fish[0],"条鱼")
for i in range(0, 5):
print("第{0}人看到{1}条鱼".format(i+1, fish[i]))
10、编写程序,计算斐波拉契数列的后项与前项的比:1/1,2/1,3/2,5/3,8/5,13/8,......第n项的值,并观察随着n的增加,比值趋向什么值?
def fblq(x):
for k in range(1,30):
11、编写程序,计算卢卡斯数列的后项与前项的比:1/2,3/1,4/3,7/4,11/7,18/11,......第n项的值,并观察随着n的增加,比值趋向什么值?
卢卡斯数列的定义为:L(1)=2,L(2)=1,L(n)=L(n-1)+L(n-2) (n>=2),前9个数为:2、1、3、4、7、11、18、29、47
def LKS(x):
for k in range(1,30):
12、编写函数,用于判断输入的字符串是否由字母和数字构成,并统计字符个数。
解法一
import string
def chartype(ch):
字符类型判断"""
def chtypecount(s):
字符串类型计数器"""
for chtype, cnts in chtypecount(input("Enter a string: ")).items():
解法二
sum_d=0
sum_alpha=0
sum_other=0
sum_chinese=0
#s="123 abc def 中klGD国 abcde 伟大"
s=input("请输入字符串:")
for i in range(0,len(s)):
print("数字:",sum_d,"个")
print("字母:",sum_alpha,"个")
print("其他符号:",sum_other,"个")
print("汉字:",sum_chinese,"个")
13、编写程序,计算字符串中单词的个数。
str = input("请您输入一串字符串:")
str1 = str.strip() # 去掉字符串前后空格
index = 0
count = 0
while index < len(str1):
当不是空格是,下标加1
当下标大小跟字符串长度一样时结束当前循环
遇到空格加1
当下标大小跟字符串长度一样时结束当前循环
当有两个空格时,下标加1,防止以一个空格算一个单词
print("输入的字符串中一共有count = %d个单词" % count)
14、编写程序,用户输入一个字符串,将偶数下标位的字符提出来合成一个串A,再将奇数下标位置的字符提取出来合成串B,再将A和B连接起来输出。
c=input("请输入字符");
A=""
B=""
for a in c[::2]:
for b in c[1:len(c):2]:
n=A+B
print(n)
15、编写程序,统计字符串中出现的每个字母出现次数,并输出成一个字典,如{‘a’:3,’A’:5,’b’:2}
#a = "aAsmr3idd4bgs7Dlsf9eAF"
a=input("请输入字符串:")
def fun1_2(x): #1&2
大小写转换
判断如果为数字,请将a字符串的数字取出,并输出一个新的字符串
else: #2 请统计a字符串出现每个字母的出现次数(忽视大小写),并输出一个字典。例:{'a':3,'b':1}
fun1_2(a)
def fun3(x):
fun3(a)
16、编写程序,统计字符串中出现的每个单词出现次数,并输出成一个字典。
解法一
str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day"
list1 = str1.split(" ")
dict1 ={}
for element in list1:
print(dict1)
解法二
str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day"
list1 = str1.split(" ")
dict1 ={}
for element in list1:
value = dict1.get(element) #如果不存在则返回None
print(dict1)
17、编写程序,将输入的一串字符从前到后每个字符向后移动一位,最后一个字符存放到第一个位置,并输出结果。
arr=[]
r=""
m=input("请输入")
for string in m:
last=arr[-1]
arr.insert(0,last)
arr.pop()
for str in arr:
print(r)
18、编写程序,把一段英文中字母“a”改写成“A”
#输入一串字符,将大写字母转换成小写字母,小写字母转换为大写字母
def LtoU():
请 输入字符:")
def aToA():
请 输入字符:")
aToA()
19、编写程序,把一段英文中每句话的首个单词的第一个字母改为大写。
def convert_initial(old: str) -> str:
#print(convert_initial("I am a teacher, and you are student."))
s=input("请输入一个英文句子:")
print(convert_initial(s))
20、编写程序,将一段英文中有连续重复的单词只保留一个。
l = []
s = "hello world hello python"
for i in s.split(" "):
result = " ".join(l)
print(result)
print()
def onlyOne(x):
t=input("请输入一个英文句子:")
print(onlyOne(t))
21、编写程序,输入一段英文,输出英文中所有长度为3个字母的单词。
import re
x = input('Please input a string:')
pattern = re.compile(r'\\b[a-zA-Z]{3}\\b')
print(pattern.findall(x))
22、编写程序,输入一段英文,输出字符数最多的单词。
import re
words=input("Input the words:")
l=re.split('[\\. ]+',words) #使用空格分隔词语,得到各个单词
print(l)
i这里我设置的是计数器
s=""
for i in l:
如果单词的长度为3 输出
print(s)
23、编写程序,要求输入一段英文,以及此段中的一个单词和另外一个单词,然后显示用第二个单词替换第一个单词后的句子。
str='The weather today is really good.'
fword=input('请输入要查找的单词')
rword=input('请输入要替换的单词')
c=str.count(fword)
if c>0:
替换后的句子为:',str)
else:
句子中没有要查找的单词')
24、编写自定义函数,实现从屏幕输入3个数,并求出其中最大值。
def myfun():
请输入一个数:"))
myfun()
25、编写函数,模仿内置函数sort()
s=[1,-3,2,6,8,11,-5,28,88]
t=[]
def mysort(x):
print(mysort(s))
26、编写函数,求出之和,函数形参为n,n由用户在主函数中输入。
def jiecheng(x):
def mySum(n):
k=int(input("请输入一个数:"))
27、编写程序,运用递归方法判断一个数是否为回文数。
a = input("请输入一个数:")
if a.isdigit():
是回文数")
不是回文数")
else:
请输入自然数:")
28、编写程序,运用递归方法分别求出斐波拉契数列和卢卡斯数列前n项之和,n由用户在主函数中输入。
def fblq(x):
def LKS(x):
def mySum(n):
k=int(input("请输入一个数:"))
print(mySum(k))
29、编写程序,运用递归方法求a+aa+aaa+......+aa...a(n个a)之和,a、n由用户在主函数中输入。
from functools import reduce
a = int(input('a:'))
n = int(input(('n:')))
list = []
for i in range(1,n+1):
s = reduce(lambda x,y:x+y,list)
print(list)
print(s)
30、用牛顿迭代法求方程在区间[0,1]中的根。牛顿迭代法解非线性方程根的迭代公式为,f’(x)是f(x)的导函数,结束条件为
def f(xi):
def f1(xi):
x=[]
x.append(0.5)
e误差
e最新加的x在最后
number_iteration=0
while error>eps:
print('牛顿法迭代次数为%f次'%(number_iteration)) #格式化输出
print('方程的根x*为%f'%(x[-1]))
print('f(x*)的值为%f'%(f(x[-1])))
31、编写程序,研究算法的时间复杂度。比较不同的阶乘计算所耗费的时间。
import time
start=time.time()
s=1
for i in range(1,201):
print(s)
print("累乘用时:",time.time()-start)
def jiechen(x):
start=time.time()
t=jiechen(200)
print(t)
print("递归用时:",time.time()-start)下载本文