目录
斐波纳契数列 II
连续质数计算
任意累积
随机密码生成
Python seed() 函数
寻找回文素数
寻找反素数
哥德巴赫猜想
素数判定函数
编写递归函数,计算任意数据n的阶乘
判断闰年
组合数计算
数列求和
函数实现数字类型判断
等差数列的第n项
类型:Python 函数和代码复用
根据编程模板补充代码,计算斐波那契数列的值,具体功能如下:
N
,其中,N
为正整数;如果将斐波那契数列表示为 fbi(N)
,对于整数 N
,值如下:
当 N = 1 / N = 2 时,fbi(1)
和 fbi(2)
的值是 1;
当 N > 2 时,fbi(N) = fbi(N-1) + fbi(N-2)
;
示例1:
输入:"4"
输出:"3"
注意:
input()
,不要增加额外的提示信息;print()
,不要增加额外的输出信息; def fbi(n):#递归
if n == 1 or n == 2:
return 1
else:
return fbi(n - 1) + fbi(n - 2)
n = eval(input())
print(fbi(n))
类别:Python 函数和代码复用
补充编程模板中代码,完成如下功能:
获得用户输入数字 N
,计算并输出从 N
开始的 5 个质数,单行输出,质数间用逗号、分割。
注意:需要考虑用户输入的数字 N
可能是浮点数,应对输入取整数;最后一个输出后不用逗号。
示例1:
输入:"12"
输出:"13,17,19,23,29"
def prime(m):
flag = 0 # 定义一个标记,便于根据返回值判断是否是质数
for i in range(2, m):
if m % i == 0:
flag = 1
break
return flag
n = eval(input())
a = int(n) # 强制转换为整数
a = a + 1 if a < n else a # 输出一个比n本身要大的整数,
count = 5 # 用于成功输出一个符合要求的质数的计数器
t = ""
while count > 0:
if prime(a) == 0:
t += "{},".format(str(a))
count -= 1 # 只有是质数方可减一
a += 1 # 无论是否是质数均加一
print(t[:-1])
或者
def prime(m):
for i in range(2,m):
if m % i == 0:
m +=1
return prime(m)
else:
return m
n = eval(input())
N = int(n)
N = N+1 if N < n else N
count = 5
while count > 0:
if count >1:
print(prime(N),end=",")
N = prime(N) + 1
else:
print(prime(N),end="")
count -= 1
类型:Python 函数和代码复用
请根据编程模板补充代码,计算任意个输入数字的乘积。
注意:仅需要在标注...的地方补充一行或多行代码。
示例1:
输入:"1,2,3,4"
输出:"24"
def cmul(*a):
m=1
for i in a:
m=m*i
return m
print(eval("cmul({})".format(input())))
类型:Python 函数和代码复用
补充编程模板中代码,完成如下功能:
以整数 17 为随机数种子,获取用户输入整数 N
为长度,产生 3 个长度为 N
位的密码,密码的每位是一个数字。每个密码单独一行输出。
产生密码采用 random.randint()
函数。
示例1:
输入:"3"
输出:"
634
524
926
"
注意:
input()
,不要增加额外的提示信息;print()
,不要增加额外的输出信息; import random
def genpwd(length):
a = 10**(length-1)
b = 10**length - 1
return "{}".format(random.randint(a, b))
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
描述
seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。
语法
以下是 seed() 方法的语法:
import random random.seed ( [x] )
我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。
注意:seed()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
返回值
本函数没有返回值。
实例
以下展示了使用 seed() 方法的实例:
实例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import random
print random.random()
print random.random()
print "------- 设置种子 seed -------"
random.seed( 10 )
print "Random number with seed 10 : ", random.random()
# 生成同一个随机数
random.seed( 10 )
print "Random number with seed 10 : ", random.random()
# 生成同一个随机数
random.seed( 10 )
print "Random number with seed 10 : ", random.random()
以上实例运行后输出结果为:
0.739880443211 0.78969784712 ------- 设置种子 seed ------- Random number with seed 10 : 0.57140259469 Random number with seed 10 : 0.57140259469 Random number with seed 10 : 0.57140259469
类型:函数
描述
如果一个整数是素数,同时其对应的字符串是回文字符串时,便称其为回文素数。例如,131既是素数,其对应的字符串“131”又是回文字符串,所以131是回文素数。
输入一个正整数 n , 请你在一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
输入格式
输入一个正整数
输出格式
一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
示例
输入:191
输出:2 3 5 7 11 101 131 151 181
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,
参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
def plalindrome_prime(number):
"""接收一个正整数参数number,遍历从0到number之间的所有整数,
若某个数是素数,且转为字符串后是回文字符串,则称其中回文素数
找出并在同一行中输出小于number的所有回文素数,每个数字后一个空格,函数无返回值。"""
for i in range(number):
if str(i)==str(i)[::-1]and is_prime(i):
print(i,end=' ')
positive_int = int(input())
plalindrome_prime(positive_int)
类型:函数
描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数。例如:17和71都是素数且均不是回文数,所以17和71都是反素数。
输入一个正整数n,输出从小到大顺序输出小于n的所有反素数。
输入格式
输入一个正整数
输出格式
一行内输出从小到大排列的小于这个数的所有反素数,每个数字后面一个空格。
示例
输入:199
输出:13 17 31 37 71 73 79 97 107 113 149 157 167 179
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
else:
return True
def reverse_prime(number):
"""接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
for i in range(number):
if str(i) != str(i)[::-1] and is_prime(i) and is_prime(int(str(i)[::-1])):
print(i, end=' ')
positive_int = int(input())
reverse_prime(positive_int)
类型:函数
描述
1742年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于2的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如:24=5+19,其中5和19都是素数。
输入一个正整数N,当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p 、 q均为素数且p ≤ q。当输入为奇数或N<4时,输出'Data error!' 。
输入格式
输入一个正整数
输出格式
当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p 、 q均为素数且p ≤ q。当输入为奇数或N<4时,输出'Data error!' 。
示例 1
输入:30
输出:
30=7+23
30=11+19
30=13+17
示例 2
输入:77
输出:
Data error!
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
def goldbach_conjecture(num):
""" 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
参数为奇数或小于4时,输出'Data error!'"""
prime = [] # 用来存储素数
for item in range(2, num + 1):
if is_prime(item):
prime.append(item)
if num % 2 == 1 or num < 4:
print('Data error!')
elif num % 2 == 0:
for i in prime:
for j in prime:
if i + j == num and i <= j:
print(f'{num}={i}+{j}')
if __name__ == '__main__':
positive_even = int(input()) # 输入一个正数
goldbach_conjecture(positive_even)
类型:函数
描述
将素数的判定代码定义为一个函数,接受用户输入的正整数n,返回n是否是素数,n为素数时返回True,不是素数时返回False。
并调用该函数判定用户输入的一个正整数n是否为素数。
输入格式
输入一个正整数
输出格式
若该数为素数,输出“X是素数”
若该数为非素数,输出“X不是素数”
其中X为输入的整数
示例 1
输入:
5
5是素数
示例 2
输出:
6
6不是素数
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
positive_int = int(input()) # 输入一个正整数
if is_prime(positive_int):
print(f'{positive_int}是素数')
else:
print(f'{positive_int}不是素数')
并使用该函数,计算一个输入数据的阶乘值
输入输出示例
输入 | 输出 | |
示例 1 | 5 4 |
120 24 |
def fact(n):
if n ==0:
return 1
else:
return n*fact(n-1)
print(fact(eval(input())))
描述
编写函数leap,根据“四年闰百年不闰,四百年又闰”判断是否闰年。在主程序输入一个年份,调用leap函数判断其是否为闰年,并输出判断结果。
注意:复制下面代码,填写补充完整,实际参数和形式参数部分也要修改。
def leap(形式参数):
#-------在下面空白行编写判断闰年的代码------#
#-------在上面空白行编写判断闰年的代码------#
y=int(input())
if leap(实际参数)==True:
print("%d年是闰年"%y)
else:
print("%d年不是闰年"%y)
输入格式
输入一个代表年份的整数
输出格式
输出年份是否闰年的判断结果,请见输入输出示例说明:
输入输出示例
输入 | 输出 | |
示例 1 | 1900 | 1900年不是闰年 |
示例 2 | 2000 | 2000年是闰年 |
示例 3 | 1995 | 1995年不是闰年 |
def leap(year):
if(year%4==0 and year%100!=0) or year%400==0:
return True
else:
return False
y=int(input())
if leap(y)==True:
print("%d年是闰年"%y)
else:
print("%d年不是闰年"%y)
组合数公式如右图所示:
编写一个函数计算上述算式,在主程序中调用计算组合数计算输入的n和m对应的组合数
注意:根据输入和输出示例补充完整下图内容所示代码(下图代码可复制):
def fact(形式参数):
#------在下面空行处编写代码实现阶乘的计算----------#
#------在上面空行处编写代码实现阶乘的计算----------#
return 返回值
def cmn(形式参数):
#------在下面空行处编写代码实现组合数的计算----------#
#------在上面空行处编写代码实现组合数的计算----------#
return 返回值
#下面是主程序代码
a,b=eval(input())
print(cmn(实际参数)) #此处编写调用上述函数进行实际计算的调用代码
输入格式
先输入m再输入n,以逗号隔开
输出格式
先输出cmn的值,在输出cnm的值,见输出示例
输入输出示例
输入 |
输出 |
|
示例 1 |
3,8 |
56 |
示例 2 |
8,3 |
56 |
示例 3 |
3,3 |
1 |
def fact(n):
if n ==0:
return 1
else:
return n*fact(n-1)
def cmn(m,n):
return fact(n)/(fact(m)*fact(n-m))
#下面是主程序代码
a,b=eval(input())
if a>b:
a, b = b, a
print(int(cmn(a,b))) #此处编写调用上述函数进行实际计算的调用代码
类型:Python 函数和代码复用
输入一个自然数 n
,如果 n
为奇数,输出表达式 1+1/3+…+1/n 的值;如果 n
为偶数,输出表达式 1/2+1/4+…+1/n 的值。输出表达式结果保留 2 位小数。请完善代码。
示例1:
输入:5
输出:1.53
示例1:
输入:4
输出:0.75
注意:
input()
,不要增加额外的提示信息;int(input())
或 eval(input())
来进行转换 。def sum(n):
sum=0
for i in range(n,0,-2):
sum=sum+1/i
else:
return sum
n=int(input())
print('{:.2f}'.format(sum(n)))
描述
编制一个函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。在主程序输入一个字符串,调用该函数判断其是否为数字类型,并输出判断结果。
注意:复制下面代码,填写补充完整,形式参数部分要修改。
def isNum(形式参数):
try:
expect:
num=input("")
print(isNum(num))
def isNum(str):
try:
if isinstance(eval(str),int)or isinstance(eval(str),float)or isinstance(eval(str),complex):
return True
else:
return False
except:
return False
print(isNum("{}".format(input())))
描述
等差数列是指从第二项起,每一项与它的前一项的差等于同一个常数的一种数列,这个常数叫做等差数列的公差。
例如数列a: 1、4、7、10、13、16、19......公差为3
例如数列b: 2、7、12、17、22、27、32......公差为5
编写一个函数,指定首项、公差,返回数列中的第n项数
例如指定首项为1、公差为3,返回数列中第5项为13
又如指定首项为2、公差为5,返回数列中第6项为27
主程序输入首项a、公差d、项数n,调用上述函数计算得到该等差数列的第n项的元素
主程序已写好,请复制下列代码,补充完整。
def suite(a,d,n):
#------在下面空白行填写函数的定义代码------#
#------在上面空白行填写函数的定义代码------#
#主程序如下
a,d,n=eval(input())
#------在下面空白行填写函数的调用代码------#
#------在上面空白行填写函数的调用代码------#
print(an)
输入格式
按顺序在同一行输入首项a、公差d和项数n,用逗号间隔。
输出格式
输出第n项的值
输入输出示例
输入 | 输出 | |
示例 1 | 1,3,5 | 13 |
示例 2 | 3,4,2 | 7 |
def suite(a,d,n):
return a+(n-1)*d
a,d,n=eval(input())
print(suite(a,d,n))