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的阶乘和计算用时。

需要注意的是,原始代码中存在一些语法错误和缩进错误,我们已经修复了它们。此外,我们删除了一个明显有问题的段落,因为它没有任何实际作用。

本文标签: 输入字符串字符代码素数