1、编写函数求三个整数的最大值,函数原型为 def max3(a, b, c)
def max3(a, b, c):
if a > b:
if a > c:
return a
else:
return c
else:
if b > c:
return b
else:
return c
a, b, c = input('请输入三个数:').split()
print('最大值为:', max3(a, b, c))
2、编写函数main()接收一个包含若干整数的列表参数lst,要求返回其中大于8的偶数组成的新列表,如果不存在就返回空列表。
如果接收到的参数lst不是列表或者列表中不都是整数,就返回‘数据不符合要求’
import sys
def main(old_list):
new_list = []
ti_list = []
b = 0
if isinstance(old_list, list): # 判断是否为列表
for n in old_list:
if n.isdigit(): # 判断列表内的元素是否为 数字
b = 1
else:
b = 0
break
if b == 1: # 将列表中的 字符类型的数字 转化为 整形
for i in old_list:
ti_list.append(int(i))
b += 1
if b == 2:
for i in ti_list: # 选出符合要求的数字
if i > 8 and i % 2 == 0:
new_list.append(i)
return new_list
else:
print("数据不符合要求")
sys.exit(0) # 直接退出程序
lst = list(input().split()) # split 以字符之间的空格分割
print(lst)
print(main(lst))
3、函数 main()接受3个分别表示年、月、日的正整数year,month,day,
要求返回表示year年month月day日是周几的整数,1表示周一,2表示周二,以此类推,7表示周日。
例如main(2020,10,5)返回1.可导入必要的标准库。
from datetime import date
def main(y, m, d):
if 1 <= m <= 12 and 1 <= d <= 31:
w = date(y, m, d)
return w.weekday() + 1
year = int(input('请输入年份'))
month = int(input('请输入月份'))
day = int(input('请输入日'))
print(main(year, month, day))
4、编写函数,函数原型为 def f(n),求 f(x)的值。函数的定义如下图所示:
def f(n):
if n < 1:
return n
elif 1 <= n < 10:
return 2 * n - 1
else:
return 3 * n - 11
x = int(input("输入x的值:"))
y = f(x)
print(y)
5、输入两个正整数 m 和 n(m<n),求 m 到 n 之间(包括 m 和 n)所有素数的和,
要求定义并调用函数 is_prime(x)来判断 x 是否为素数(素数是除 1 以外只能被自身整除的自然数)。
例如,输入 1 和 10,那么这两个数之间的素数有 2、3、5、7,其和是 17
输入:m n
输出:素数和
样例输入:1 10
样例输出:17
def is_price(s):
if s < 2:
return 0
else:
for i in range(2, s):
if s % i == 0:
break
else:
return s
return 0
m = int(input("请输入整数m:"))
n = int(input("请输入整数n:"))
sum = 0
while m > n:
print("注意m < n")
m = int(input("请重新输入整数m:"))
n = int(input("请重新输入整数n:"))
for i in range(m, n + 1):
sum += is_price(i)
print(sum)
6、编写程序,利用元组作为函数的返回值,
求系列类型中的最大值、最小值和元素个数,
并编写测试代码,假设测试数据分别为s1=[9,8,7,3,2,1,55,6]、s2=['apple','pear','melon','kiwi'],
s3='TheQuickBrownFox'。
运行效果如下:
s1=[9,8,7,3,2,1,55,6]
最大值=55,最小值=1,元素个数=8
?s2=['apple','pear','melon','kiwi']
最大值=pear,最小值=apple,元素个数=4
s3='TheQuickBrownFox'
?最大值=x,最小值=B,元素个数=16
提示:函数形参为系列类型,返回值是形如“(最大值,最小值,元素个数)”的元组
def print_info(x):
i = max(x)
j = min(x)
l = len(x)
print("最大值是%s" % i)
print("最小值是%s" % j)
print("元素个数是{0}".format(l))
return i, j, l
lst = list(input().split())
q = print_info(lst)
print(q)
7、列表 L = [(92,88), (79,99), (84,92), (66, 77)]有 4 项数据,
每项数据表示学生的语文和数学成绩。
求数学成绩最高的学生的成绩。
提示:应用 max 函数,然后设计 lambda 函数来实现, max(L, key=lambda ________ )
def max_shu(t):
return max(L, key=lambda x: x[1])
L = [(92, 88), (79, 99), (84, 92), (66, 77)]
print(max_shu(L))
8、1920 年代后期,数学家大卫?希尔伯特的学生 Gabriel Sudan
和威廉?阿克曼,当时正研究计算的基础。
Sudan 发明了一个递归却非原始递归的 Sudan 函数。1928 年,阿克曼又独立想出了另2021一个递归却非原始递归的函数。
它需要两个自然数作为输入值,输出一个自然数。
它的输出值增长速度非常高,仅是(4,3)的输出已大得不能准确计算。
阿克曼函数定义如下:
输入:两个整数(不大于 4 和 3),中间以空格分开
输出:这两个整数的参数值
def Ack(m, n):
if m == 0:
return n + 1
elif n == 0:
return Ack(m - 1, 1)
else:
return Ack(m - 1, Ack(m, n - 1))
a, b = input('请输入两个数:').split()
print(Ack(int(a), int(b)))
9、编写函数,接收一个字符串,判断该字符串是否为回文。
所谓回文是指,从前向后读和从后向前读是一样的。
def pan(zheng_str):
dao_str = zheng_str[::-1]
if zheng_str == dao_str:
print("yes")
else:
print("no")
zheng_str = input("输入字符串:")
pan(zheng_str)
10、编写函数,接收参数 a 和 n,
计算并返回形式如 a + aa + aaa + aaaa +…+ aaa…aaa 的表达式前 n 项的值,
其中 a 为小于 10 的自然数。
def function(a, n):
flag = 0
m = a
sum = int(0)
for i in range(1, n + 1):
sum += m
if flag == 0:
print(m, end=" ")
else:
print("+ {}".format(m), end=" ")
m = 10 * m + a
flag += 1
return sum
a, n = map(int, input().split())
print("= {}".format(function(a, n)))