|
python的函数编程1、找出100~300中所有的挛生素数。挛生素数是指相差2的素数对,如了和5、5和7、11和13等。函数prime的功能是判断n是否力素数,用True表示是素数,用False表示非素数。
2、求(1+2+3+.+9+10) + (61+62+.
+69+70)的和(用自定义函数实现)。
3、用递归函数fibo求斐波拉且数列的第n项。程定中输出斐波拉且数列的前20项,要求每行输出5个数据,每个数据输出宽度为8并在宽度内右对齐。
输出结果如下:
1 1 2 3 5
8 13 21 34 35
89 144 233 377 610
987 1597 2584 4181 6765
4、已知宇符串s中保存了一组以空格分隔的水果名,凋用函数fruitsort返回按数量降序排列的水果名及水果数量。函数中先将水果名称从字符串s中拆分出来存入列表fruits,然后統汁各类水果的数量存入字典d,并按数量降序排列后返回。
5、用递归法求阶乘,程序要求输出0~9十个数的阶
乘,按一行两个结果的形式输出,效果如下所示。
0!=1 1!=1
2!=2 3!=6
4!=24 5!=120
6!=720 7!=5040
81=40320 9!=362880
6、把4到20中所有的偶数分解成两个素数的和。例
如:6-3+3,20-3+17,20=13+7等。
7、按升序輸出100~999的水仙花数。
8、小明做打字测试,请编写程序计算小明输入字符串的准确率。
1、找出100~300中所有的挛生素数。挛生素数是指相差2的素数对,如了和5、5和7、11和13等。函数prime的功能是判断n是否力素数,用True表示是素数,用False表示非素数。
- def prime(n):
- if n < 2:
- return False
- for i in range(2, int(n**0.5) + 1):
- if n % i == 0:
- return False
- return True
- def twin_primes():
- twins = []
- for num in range(100, 301):
- if prime(num) and prime(num + 2):
- twins.append((num, num + 2))
- return twins
- twins = twin_primes()
- for twin in twins:
- print(twin)
复制代码 运行结果如下:
2、求(1+2+3+.+9+10) + (61+62+.+69+70)的和(用自定义函数实现)。
- def calculate_sum():
- sum1 = sum(range(1, 11))
- sum2 = sum(range(61, 71))
- return sum1 + sum2
- result = calculate_sum()
- print(result)
复制代码
3、用递归函数fibo求斐波拉且数列的第n项。程定中输出斐波拉且数列的前20项,要求每行输出5个数据,每个数据输出宽度为8并在宽度内右对齐。
输出结果如下:
1 1 2 3 5
8 13 21 34 35
89 144 233 377 610
987 1597 2584 4181 6765
- def fibo(n):
- if n <= 1:
- return n
- return fibo(n - 1) + fibo(n - 2)
- for i in range(20):
- if i % 5 == 0 and i != 0:
- print()
- print(f"{fibo(i):>8}", end=" ")
复制代码
4、已知宇符串s中保存了一组以空格分隔的水果名,凋用函数fruitsort返回按数量降序排列的水果名及水果数量。函数中先将水果名称从字符串s中拆分出来存入列表fruits,然后統汁各类水果的数量存入字典d,并按数量降序排列后返回。
- def fruitsort(s):
- fruits = s.split()
- fruit_count = {}
- for fruit in fruits:
- fruit_count[fruit] = fruit_count.get(fruit, 0) + 1
- sorted_fruits = sorted(fruit_count.items(), key=lambda x: x[1], reverse=True)
- return sorted_fruits
- s = "apple orange banana apple orange apple"
- result = fruitsort(s)
- for fruit, count in result:
- print(f"{fruit}: {count}")
复制代码
5、用递归法求阶乘,程序要求输出0~9十个数的阶
乘,按一行两个结果的形式输出,效果如下所示。
0!=1 1!=1
2!=2 3!=6
4!=24 5!=120
6!=720 7!=5040
81=40320 9!=362880
- def factorial(n):
- if n == 0:
- return 1
- return n * factorial(n - 1)
- for i in range(10):
- if i % 2 == 0 and i != 0:
- print()
- print(f"{i}! = {factorial(i)}", end=" ")
复制代码
6、把4到20中所有的偶数分解成两个素数的和。例如:6-3+3,20-3+17,20=13+7等。
- def is_prime(n):
- if n < 2:
- return False
- for i in range(2, int(n**0.5) + 1):
- if n % i == 0:
- return False
- return True
- def decompose_even():
- results = []
- for num in range(4, 21, 2):
- for i in range(2, num // 2 + 1):
- if is_prime(i) and is_prime(num - i):
- results.append((num, i, num - i))
- break
- return results
- decompositions = decompose_even()
- for decomposition in decompositions:
- print(f"{decomposition[0]} = {decomposition[1]} + {decomposition[2]}")
复制代码
7、按升序輸出100~999的水仙花数。
- def is_armstrong(n):
- digits = [int(digit) for digit in str(n)]
- num_digits = len(digits)
- armstrong_sum = sum([digit**num_digits for digit in digits])
- return armstrong_sum == n
- armstrong_numbers = []
- for num in range(100, 1000):
- if is_armstrong(num):
- armstrong_numbers.append(num)
- armstrong_numbers.sort()
- for num in armstrong_numbers:
- print(num)
复制代码
8、小明做打字测试,请编写程序计算小明输入字符串的准确率。
- def calculate_accuracy(input_string, target_string):
- correct_count = sum([1 for c1, c2 in zip(input_string, target_string) if c1 == c2])
- accuracy = correct_count / len(target_string) * 100
- return accuracy
- input_string = "Hello World"
- target_string = "Hello World!"
- accuracy = calculate_accuracy(input_string, target_string)
- print(f"Accuracy: {accuracy}%")
复制代码
|
|