admin管理员组文章数量:1594240
2024年2月15日发(作者:)
Python经典编程30例
1、编写程序,求1~n之间的素数列表。
def sushu(x):
i=0
for i in range(2,x):
if x % i ==0:
return False
break
if i+1==x:
return True
return False
n=int(input("请输入n:"))
for j in range(2,n):
if sushu(j)==True:
print(j,"是素数")
编写程序,求1~n之间的素数列表。
def sushu(x):
for i in range(2,x):
if x % i ==0:
return False
break
if i+1==x:
return True
return False
n=int(input("请输入n:"))
for j in range(2,n):
if sushu(j):
print(j,"是素数")
2、编写程序,生成一个包括100个随机整数的列表,然后从后向前删除所有素数。
import random
def sushu(x):
for i in range(2,x):
if x % i ==0:
return False
break
if i+1==x:
return True
return False
s=[]
for i in range(0,30):
(t(1,))
for i in range(0,30):
print(s[i],"",end='')
if i % 10 ==0:
print("n")
print("n")
print("T列表")
t=[]
for j in range(29,0,-1):
if sushu(s[j])==False:
(s[j])
for i in range(0,len(t)-1):
print(t[i],"",end='')
if i % 10 ==0:
print("n")
编写程序,生成一个包括100个随机整数的列表,然后从后向前删除所有素数。
import random
def sushu(x):
for i in range(2,x):
if x % i ==0:
return False
break
if i+1==x:
return True
return False
s=[]
for i in range(0,30):
(t(1,))
for i in range(0,30):
print(s[i],"",end='')
if i % 10 ==0:
print("n")
print("n")
print("T列表")
t=[]
for j in range(29,0,-1):
if sushu(s[j])==False:
(s[j])
for i in range(0,len(t)):
print(t[i],"",end='')
if i % 10 ==0:
print("n")
3、编写程序,当用户从键盘输入整数后,对其进行因式分解(即素数的积)。如100=2*2*5*5.
n = int(input("请输入待分解的整数n=?"))
x = 1
flag = True
if n。1000:#判断大于1000的数
print("请输入不超过1000的整数")
if n。1 and n <= 1000:
print("{}=".format(n)。end='')
while n。= 1:
x += 1
while n % x == 0:
n /= x
if flag:
编写程序,当用户从键盘输入整数后,对其进行因式分解(即素数的积)。如100=2*2*5*5.
n = int(input("请输入待分解的整数n=?"))
x = 1
flag = True
if n。1000:
print("请输入不超过1000的整数")
elif n。1 and n <= 1000:
print("{}=".format(n)。end='')
while n。= 1:
x += 1
while n % x == 0:
n /= x
if flag:
4、编写程序验证XXX猜想,即任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。例如,10=5+5,12=5+7.
首先,需要判断输入的数据是否正确,即大于或等于4的偶数。如果不正确,输出提示信息。如果输入的是4,则直接输出结果4=2+2.
接下来,从3开始,每次加2,遍历到输入的偶数。判断当前的数和它减去一个素数的差是否都是素数。如果是,则输出结果。
改写:
def is_prime(x):
if x == 2:
return True
if x % 2 == 0:
return False
n = 3
while n * n <= x:
if x % n == 0:
return False
n += 2
return True
def goldbach_conjecture(x):
if x < 4 or x % 2.= 0:
print("输入的数据不正确,应该是大于或等于4的偶数")
return
if x == 4:
print('4=2+2')
return
for n in range(3.x。2):
if is_prime(n) and is_prime(x - n):
print(x。'='。n。'+'。x - n)
return
def main():
x = int(input("输入大于或等于4的偶数"))
goldbach_conjecture(x)
main()
5、编写程序,输出所有由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。
首先,需要判断一个数是否是素数,可以使用之前定义的is_prime函数。然后,使用4层循环,分别枚举每个位置上的数字,组成一个4位数。在每个4位数中,判断每个数字是否都不相同,如果是,则判断这个数是否为素数,如果是,则输出结果。
改写:
def is_prime(x):
if x == 2:
return True
if x % 2 == 0:
return False
n = 3
while n * n <= x:
if x % n == 0:
return False
n += 2
return True
def exercise3_5():
for i in range(1.5):
for j in range(1.5):
for k in range(1.5):
for l in range(1.5):
if i。= j and i。= k and i。= l and j。l:
s = i * 1000 + j * 100 + k * 10 + l
if is_prime(s):
print(s)
exercise3_5()
XXX:
6.
= k and j。= l and k。=
Write a program to find all the XXX number is a three-digit
number whose sum of the cubes of its digits is equal to the number
itself。Also。determine if there are any four-digit narcissistic
numbers.
t = 0
s = 0 # count the number of narcissistic numbers
for i in range(100.1000):
j = int(i/100)
k = int((i-100*j)/10)
l = i-j*100-k*10
if i == j*j*j + k*k*k + l*l*l:
print(i)
s += 1
print(s)
for i in range(1000.):
j = int(i/1000)
k = int((i-1000*j)/100)
l = int((i-j*1000-k*100)/10)
m = i-1000*j-100*k-10*l
if i == j*j*j + k*k*k + l*l*l + m*m*m:
t += 1
print(i)
if t == 0:
print("No such number")
7.
Write a program to generate a list of 100 random numbers。and then apply slicing to sort the XXX。while leaving the XXX.
XXX 1:
import random
lst = []
XXX a list of random integers
for i in range(100):
(t(0.100))
print('Original list:'。lst)
Start indexing even-XXX
for i in range((lst)。2):
Start indexing even-XXX from the next even-indexed element
for u in range((i+2)。len(lst)。2):
Prevent index out of range
if i < len(lst)-2:
Compare the size of the indexed elements
if lst[i] <= lst[u]:
Swap the ns of the elements
lst_t = lst[i]
lst[i] = lst[u]
lst[u] = lst_t
print('Sorted list:'。lst)
XXX 2:
import random
()
lst = [t(0.101) for i in range(100)]
print('Original list:'。lst)
def bubble_sort(lst):
n = len(lst)
for i in range(n//2): # Only need to compare half of the list
for j in range(i*2.n-i*2-2.2):
if lst[j] < lst[j+2]:
lst[j]。lst[j+2] = lst[j+2]。lst[j]
bubble_sort(lst)
print('Sorted list:'。lst)
1.代码段:
for j in range(0,n-i-2,2):
if lst[j] lst[j],lst[j+2]=lst[j+2],lst[j] bubble_sort(lst) print(lst) 改为: for j in range(0.n-i-2.2): if lst[j] < lst[j+2]: lst[j]。lst[j+2] = lst[j+2]。lst[j] bubble_sort(lst) print(lst) 2.删除明显有问题的段落。 3.改写第8段话: 输入行数,输出一个如下图所示的由“*”构成的等腰三角形(提示:()函数)。 改为: 编写程序,输入行数,输出一个由“*”构成的等腰三角形,每行星号数量递增,中间对齐。 4.改写第9段话: A、B、C、D、E共5人夜里去捕鱼,很晚才各自找地方休息。日上三竿,A第1个醒来,他将鱼均分成5份,把多余的一条扔掉,拿走自己的一份。B第2个醒来,他也将鱼均分成5份,将多余的1条扔掉,拿走自己的一份。C、D、E如此类推。问他们合伙至少捕了多少条鱼? 改为: A、B、C、D、E共5人夜里去捕鱼,很晚才各自找地方休息。第二天日出后,A第1个醒来,他将鱼均分成5份,把多余的一条扔掉,拿走自己的一份。B第2个醒来,他也将鱼均分成5份,将多余的1条扔掉,拿走自己的一份。C、D、E如此类推。问他们合伙至少捕了多少条鱼? 5.改写第9段代码段: def fish(n。x): if (x-1) % 5 == 0: if n == 1: return 1 else: return fish(n-1.(x-1) / 5 * 4) return 0 x = 6 while True: x += 5 if fish(5.x) == 1: print(x) break for i in range(1.6): print("第{0}人看到的鱼有{1}条".format(i。x)) x = int((x-1) / 5 * 4) 改为: def calculate_fish(n。x): for i in range(n。0.-1): x = x * 5 / 4 + 1 return x total_fish = calculate_fish(5.1) print("他们合伙至少捕了{0}条鱼".format(int(total_fish))) for i in range(1.6): print("第{0}人看到的鱼有{1}条".format(i。int(total_fish))) total_fish = (total_fish - 1) * 4 / 5 6.改写第9段反向递推法代码段: fish = [0.0.0.0.1] i = 0 while True: fish[4] += 5 for i in range(3,-2,-1): 改为: fish = [0.0.0.0.1] while True: fish[4] += 5 for i in range(3.-2.-1): 1. for i in range(0,5): fish[i]=int(input("第{0}人捕了多少鱼?".format(i+1))) if fish[i+1]%4!=0: break fish[i]=int(fish[i+1]*5/4+1) if fish[i]%5!=1: break if i==-1: break print("总共捕了",fish[0],"条鱼") for i in range(0,5): print("第{0}人看到{1}条鱼".format(i+1,fish[i])) fish = [] for i in range(5): (int(input("第{0}人捕了多少鱼?".format(i+1)))) if fish[i+1] % 4.= 0: break fish[i] = int(fish[i+1] * 5 / 4 + 1) if fish[i] % 5.= 1: break if i == -1: break print("总共捕了"。fish[0]。"条鱼") for i in range(5): print("第{0}人看到{1}条鱼".format(i+[i])) 2. def fblq(x): if x==1 or x==2: return 1 else: return fblq(x-1)+fblq(x-2) for k in range(1,30): print(fblq(k+1)/fblq(k)) def fblq(x): if x == 1 or x == 2: return 1 else: return fblq(x - 1) + fblq(x - 2) for k in range(1.30): print(fblq(k + 1) / fblq(k)) 3. def LKS(x): if x==1: return 2 elif x==2: return 1 else: return LKS(x-1)+LKS(x-2) for k in range(1,30): print(LKS(k+1),"/",LKS(k),"=",LKS(k+1)/LKS(k)) def LKS(x): if x == 1: return 2 elif x == 2: return 1 else: return LKS(x - 1) + LKS(x - 2) for k in range(1.30): print(LKS(k + 1)。"/"。LKS(k)。"="。LKS(k + 1) / LKS(k)) 4. import string def chartype(ch): if ch in _letters: return 'ascii_letters' elif ch in : return 'digits' elif ch in pace: return 'whitespace' else: return 'other' def XXX(s): import string def chartype(ch): if ch in _letters: return 'ascii_letters' elif ch in : return 'digits' elif ch in pace: return 'whitespace' else: return 'other' def XXX(s): count = {} for ch in s: ch_type = chartype(ch) if ch_type in count: count[ch_type] += 1 else: count[ch_type] = 1 return count Counter = {} for char in map(chartype。s): ault(char。0) Counter[char] += 1 return Counter 用字典记录字符串中每种字符的个数,输出每种字符和对应的个数 string = input("Enter a string: ") for char_type。XXX(string).items(): print(char_type。counts) 统计字符串中数字、字母、汉字和其他符号的个数,并输出 sum_d = 0 sum_alpha = 0 sum_other = 0 sum_chinese = 0 string = input("请输入字符串:") for i in range((string)): if '0' <= string[i] <= '9': sum_d += 1 elif 'a' <= string[i] <= 'z': sum_alpha += 1 elif 'u4e00' <= string[i] <= 'u9fff': sum_chinese += 1 else: sum_other += 1 print("数字:"。sum_d。"个") print("字母:"。sum_alpha。"个") print("其他符号:"。sum_other。"个") print("汉字:"。sum_chinese。"个") 统计字符串中单词的个数,并输出 string = input("请您输入一串字符串:") string1 = () #去掉字符串前后空格 index = 0 count = 0 while index < len(string1): while string1[index]。= " ": index += 1 if index == len(string1): break count += 1 if index == len(string1): break while string1[index] == " ": index += 1 count = 0 for word in (): count += 1 print("输入的字符串中一共有count = %d个单词" % count) 用户输入一个字符串,将偶数下标位的字符提出来合成一个串A,再将奇数下标位置的字符提取出来合成串B,再将A和B连接起来输出。 c = input("请输入字符串:") A = "" B = "" for i in range(len(c)): if i % 2 == 0: A += c[i] else: B += c[i] n = A + B print(n) 统计字符串中出现的每个字母出现次数,并输出成一个字 a = input("请输入字符串:") a = () dic = {} for i in a: if a(): if i in dic: dic[i] += 1 else: dic[i] = 1 print("the nary is: %s" % dic) 典 统计字符串中出现的每个单词出现次数,并输出成一个字典 str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day" list1 = () dict1 = {} for XXX: if element not in dict1: dict1[element] = 1 else: dict1[element] += 1 print(dict1) 解法二: 给定一个字符串,将其中的单词出现次数统计出来。 str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day" list1 = (" ") dict1 = {} for XXX: value = (element) if value == None: dict1[element] = 1 else: dict1[element] += 1 print(dict1) 给定一个字符串,需要统计其中每个单词出现的次数。 str1 = "tomorrow is a good day tomorrow is a bad day tomorrow is a sunny day" list1 = (" ") dict1 = {} for XXX: value = (element) if value is None: dict1[element] = 1 else: dict1[element] += 1 print(dict1) 解法一: 将输入的字符串中的每个字符向后移动一位,最后一个字 arr = [] r = "" m = input("请输入:") for string in m: (string) last = arr[-1] () () for string in arr: r += string print(r) 符存放到第一个位置。 将输入的字符串中的每个字符向后移动一位,最后一个字符存放到第一个位置。 arr = [] r = "" m = input("请输入:") for string in m: (string) last = arr[-1] () () for string in arr: r += string print(r) 解法一: 将一段英文中的字母"a"改写成"A"。 def aToA(): a = input("请输入字符:") b = [] for n in a: if n == "a": (()) else: (n) print("".XXX(b)) aToA() 将一段英文中的字母"a"改写成"A"。 def aToA(): a = input("请输入字符:") b = [] for n in a: if n == "a": (()) else: (n) print("".XXX(b)) aToA() 解法一: 将一段英文中每句话的首个单词的第一个字母改为大写。 def convert_initial(old: str) -。str: new = "" i = 0 while i < len(old): if (i == 0) or (old[i-1] == " "): new += old[i].upper() else: new += old[i] i += 1 return new 将一段英文中每句话的首个单词的第一个字母改为大写。 def convert_initial(old: str) -。str: new = "" i = 0 while i < len(old): if (i == 0) or (old[i-1] == " "): new += old[i].upper() else: new += old[i] i += 1 return new def my_replace(str,fword,rword): if fword in str: str=e(fword,rword) print('替换后的句子为:',str) else: print('句子中没有要查找的单词') my_replace("I love Python!","love","like") def find_max(): s=[] for i in range(0,3): t=int(input("请输入一个数:")) (t) print(max(s)) print(s) find_max() def my_sort(x): t=[] for i in range(0,len(x)): (min(x)) (min(x)) return t s=[1,-3,2,6,8,11,-5,28,88] print(my_sort(s)) def jiecheng(x): if (x==0) or (x == 1): return 1 else: return x*jiecheng(x-1) def my_sum(n): mysum=0 for i in range(0,n+1): mysum+=1/jiecheng(i) return mysum k=int(input("请输入一个数:print(my_sum(k)) def is_palindrome(a): if t(): a = str(a) for i in range(len(a)): if a[i]。= a[len(a)-i-1]: print(a,"不是回文数") ")) break else: print(a,"是回文数") else: print("请输入自然数:") is_palindrome("") def fibonacci(n): if (n==1) or (n == 2): return 1 else: return fibonacci(n-1)+fibonacci(n-2) def lucas(n): if n==1: return 2 elif n==2: return 1 else: return lucas(n-1)+lucas(n-2) def fibonacci_sum(n): mysum=0 for i in range(1,n+1): mysum+=fibonacci(i) return mysum def lucas_sum(n): mysum=0 for i in range(1,n+1): mysum+=lucas(i) return mysum k=int(input("请输入一个数:")) print("斐波拉契数列前{}XXX为{}".format(k,fibonacci_sum(k))) print("卢卡斯数列前{}XXX为{}".format(k,lucas_sum(k))) 1.修正函数格式错误,改为: def LKS(x): if x==1 or x==2: return 1 else: return LKS(x-1)+LKS(x-2) 2.删除无用段落。 3.改写每段话: 29.编写程序,使用递归方法计算 XXX(n个a)$ 的和,其 $a$ 和 $n$ 由用户输入。代码如下: from functools import ce def sum_a(a。n): lst = [int(str(a)*i) for i in range(1.n+1)] 中 return ce(lambda x。y: x+y。lst) a = int(input('请输入a:')) n = int(input('请输入n:')) print(sum_a(a。n)) 30.使用牛顿迭代法求方程 $f(x)=x-e^{-x}$ 在区间 $[0,1]$ 中的根。牛顿迭代公式为 $x_{n+1}=x_n-frac{f(x_n)}{f'(x_n)}$,其中 $f'(x)$ 是 $f(x)$ 的导函数。结束条件为 $|f(x_n)|<10^{-6}$。代码如下: def f(x): return x - 2.718**(-x) def f1(x): return 1 + 2.718**(-x) x = [0.5] eps = 1e-6 error = abs(f(x[-1])) num_iter = 0 while error。eps: (x[-1] - f(x[-1])/f1(x[-1])) error = abs(f(x[-1])) num_iter += 1 print('牛顿法迭代次数为 %d 次' % num_iter) print('方程的根 x* 为 %f' % x[-1]) print('f(x*) 的值为 %f' % f(x[-1])) 31.编写程序,比较不同阶乘计算所需的时间复杂度。代码如下: import time def fact(n): if n == 0: return 1 else: return n * fact(n-1) def fact_iter(n): result = 1 for i in range(1.n+1): result *= i return result n = 10 start = () fact(n) end = () print('递归算法计算 %d。耗时 start = () fact_iter(n) %.8f 秒' % (n。end-start)) end = () print('迭代算法计算 %d。耗时 %.8f 秒' % (n。end-start)) 首先,这篇文章缺少明确的标题和上下文,无法确定其主题和目的。因此,我们将其视为一个代码示例,并尝试修复其中的格式错误和语法错误。 修复后的代码: import time 计算1到200的累乘 s = 1 for i in range(1.201): s *= i print(s) print("累乘用时:"。() - start) 递归计算200的阶乘 def XXX(x): if x == 0 or x == 1: return 1 else: return x * jiechen(x - 1) start = () t = XXX(200) print(t) 我们将代码分成了两个部分:第一部分计算1到200的累乘,第二部分使用递归计算200的阶乘。我们还添加了必要的注释来解释代码的作用。 在第一部分中,我们使用了一个for循环来计算1到200的累乘。我们首先将XXX初始化为1,然后对于每个i,我们将s乘以i。最后,我们打印出累乘的结果和计算用时。 在第二部分中,我们定义了一个递归函数jiechen来计算阶乘。如果x为0或1,则阶乘为1.否则,我们将x乘以jiechen(x-1)来计算阶乘。最后,我们打印出200的阶乘和计算用时。 需要注意的是,原始代码中存在一些语法错误和缩进错误,我们已经修复了它们。此外,我们删除了一个明显有问题的段落,因为它没有任何实际作用。
版权声明:本文标题:Python经典编程30例 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1707996056a211989.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论