python(4)

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)))

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值