python第8周(python学习题集)

29 篇文章 19 订阅
12 篇文章 24 订阅

这一周有一道有意思的题目,等会会出来单独的解析

剩下题目难度不高,适合作为练习


目录

6-1 写函数求满足要求三位数的个数 (5 分)

6-2 编写函数统计指定数字的个数 (5 分)

6-3 判断用户传入的列表长度并完成切片 (10 分)

6-4 奇偶求和 (10 分)

7-1 求某月的天数 (10 分)

7-2 sdut-分段计算居民水费 (10 分)

7-3 有效括号判断 (30 分)

7-4 打印数字实心矩形 (10 分)

7-5 sdut-运输计费问题 (10 分)

7-6 超速罚款 - 实验4 条件与分支 -《Python编程实验》 (10 分)


6-1 写函数求满足要求三位数的个数 (5 分)

要求实现一个函数,统计给定区间内的三位数中至少有两位数字相同的完全平方数(如144、676)的个数。

函数接口定义:

search(n);

其中传入的参数n是一个三位数的正整数。函数search返回[101, n]区间内所有满足条件的数的个数。

裁判测试程序样例:

/* 请在这里填写答案 */

n = int(input())
cnt = search(n)
print ('count={}'.format(cnt))

输入样例:

500

结尾无空行

输出样例:

count=6

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 18:52
def search(n):
    sum = 0
    for i in range(11, 33):
        if pow(i, 2) <= n:
            if str(pow(i, 2)).count('0') == 2 or str(pow(i, 2)).count('1') == 2 or str(pow(i, 2)).count(
                    '2') == 2 or str(pow(i, 2)).count('3') == 2 or str(pow(i, 2)).count('4') == 2 or str(
                pow(i, 2)).count('5') == 2 or str(pow(i, 2)).count(
                '6') == 2 or str(pow(i, 2)).count('7') == 2 or str(pow(i, 2)).count('8') == 2 or str(pow(i, 2)).count(
                '9') == 2:
                sum += 1
    return sum

6-2 编写函数统计指定数字的个数 (5 分)

本题要求实现一个统计整数中指定数字的个数的简单函数。

CountDigit(number,digit )

其中number是整数,digit为[1, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。

函数接口定义:

函数接口定义:

int CountDigit (number, digit );

参数number是整数,参数digit为[1,9]区间的整数,函数返回number中digit出现的次数。

裁判测试程序样例:

/* 请在这里填写答案 */

number,digit = list(map(int,input().split()))
cnt = CountDigit(number,digit)
print ("Number of digit {0} in {1}: {2}".format(digit,number,cnt))

输入样例:

-21252 2

结尾无空行

输出样例:

Number of digit 2 in -21252: 3

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 19:19
def CountDigit(number, digit):
    sum = 0
    for i in str(number):
        if i == str(digit):
            sum += 1
    return sum

6-3 判断用户传入的列表长度并完成切片 (10 分)

编写一个函数,判断用户传入的列表长度是否大于2,如果大于2,只保留前两个,并将新内容返回给调用者,否则输出None.

函数接口定义:

def func(list1)

裁判测试程序样例:

list1 = eval(input())
print(func(list1))

输入样例:

[1, 2, 3, 4]

结尾无空行

输出样例:

[1, 2]

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 19:30
def func(list1: list):
    if len(list1) < 2:
        return 'None.'
    else:
        return list1[:2]

6-4 奇偶求和 (10 分)

输入一个完全由数字字符组成的字符串s,分别统计其中出现的奇数和偶数字符数值之和

如输入‘123456789’

输出 oddsum=25,evensum=20

函数接口定义:

def f(n):

def p(t):

def q(t): 

其中函数f(n),功能是判断n的奇偶性,n为奇数,返回1,偶数返回0, 函数p(t)的功能是求字符串t中偶数数字的和, 函数q(t)的功能是求字符串t中奇数数字的和

裁判测试程序样例:

/* 请在这里填写答案 */
s=input()
print('oddsum={},evensum={}'.format(p(s),q(s)))

输入样例:

在这里给出一组输入。例如:

123456789

结尾无空行

输出样例:

在这里给出相应的输出。例如:

oddsum=25,evensum=20

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 19:36
def f(n):
    if n % 2:
        return 1
    else:
        return 0


def p(t):
    sum = 0
    for i in str(t):
        n = int(i)
        if f(n):
            sum += n
    return sum


def q(t):
    sum = 0
    for i in str(t):
        n = int(i)
        if f(n) == 0:
            sum += n
    return sum

7-1 求某月的天数 (10 分)

输入年份year、月份month,判断该月的天数。闰年:能被4整除但不能被100整除或者能被400整除的年份是闰年。

输入格式:

测试数据有多组,处理到文件尾。对于每组测试,输入两个整数,表示年份year和月份month。

输出格式:

对于每组测试,输出对应年月的天数。

输入样例:

2020 2
2020 4

输出样例:

29
30

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 19:46
try:
    while True:
        list1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        list2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        year, mouth = map(int, input().split())
        if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
            print(list2[mouth - 1])
        else:
            print(list1[mouth - 1])
except EOFError:
    pass

7-2 sdut-分段计算居民水费 (10 分)

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关,请编写程序实现水费的计算。

(1)当x不超过15吨时,y=4x/3;

(2)超过后,y=2.5x−17.5。

输入格式:

在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

结尾无空行

输出样例1:

16.00

结尾无空行

输入样例2:

16

结尾无空行

输出样例2:

22.50

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 19:52
def y(x):
    if x > 15:
        print("%.2f" % ((2.5 * x) - 17.5))
    else:
        print("%.2f" % ((4 * x) / 3))


x = float(input())
y(x)

7-3 有效括号判断 (30 分)

Alan最近眼神不好使,经常分不清楚括号,所以想请你帮忙,给定一个只包括 '(',')','{','}','[',']' 的字符串,想让你帮忙编写程序确定括号是否都是正常闭合。

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 空字符串被认定为True

输入格式:

输入空字符串或一行只包含'(',')','{','}','[',']' 的字符串。

输出格式:

如果所有括号正确闭合,输出“True”,否则输出“False”。

输入样例:

在这里给出一组输入。例如:

()

结尾无空行

输出样例:

在这里给出相应的输出。例如:

True

结尾无空行

输入样例:

在这里给出一组输入。例如:

{[()]()}

结尾无空行

输出样例:

在这里给出相应的输出。例如:

True

结尾无空行

输入样例:

在这里给出一组输入。例如:

{{()[]}

结尾无空行

输出样例:

在这里给出相应的输出。例如:

False

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 20:17
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/16 18:58
def op(str1: str):
    str2 = []
    if str1.count('(')!=str1.count(')') or str1.count('[')!=str1.count(']') or str1.count('{')!=str1.count('}') :
        return 0
    for i in str1:
        if i == '(' or i == '[' or i == '{':
            str2.append(i)
        elif i == ')':
            if str2[len(str2) - 1] != '(':
                return 0
            else:
                str2.pop()
        elif i == ']':
            if str2[len(str2) - 1] != '[':
                return 0
            else:
                str2.pop()
        elif i == '}':
            if str2[len(str2) - 1] != '{':
                return 0
            else:
                str2.pop()
    return 1

try:
    str1 = input()
    if op(str1):
        print('True')
    else:
        print("False")
except :
    print('True')

7-4 打印数字实心矩形 (10 分)

打印数字和星号组成的实心矩形,外框是数字,内部是星号。

输入格式:

输入一个整数n(0<n<10)。

输出格式:

打印一个数字矩形,矩形的边框都是整数n,要求行和列都是n个数字。(注意:没有空行)而矩形内部都是星号。

输入样例:

在这里给出一组输入。例如:

5

结尾无空行

输出样例:

在这里给出相应的输出。例如:

55555
5***5
5***5
5***5
55555

结尾无空行

输入样例2:

在这里给出一组输入。例如:

2

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

22
22

结尾无空行

输入样例3:

在这里给出一组输入。例如:

1

结尾无空行

输出样例3:

在这里给出相应的输出。例如:

1

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 20:19
n = int(input())
list1 = []
list2 = [str(n), str(n)]
for i in range(n):
    list1.append(str(n))
for i in range(1, n - 1):
    list2.insert(1, '*')
str1 = ''.join(list1)
str2 = ''.join(list2)
if n > 2:
    l = 1
    for i in range(n):
        if l == 1 or l == n:
            print(str1)
            l += 1
        else:
            print(str2)
            l += 1
else:
    for i in range(n):
        print(str1)

7-5 sdut-运输计费问题 (10 分)

某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:

99.jpg

其中,基本运输费用为:每吨每公里1元。

现请你帮助该运输公司设计计费程序,计算运输费用。

输入格式:

每次运输的载重(吨)、里程(公里),中间有一个空格。

输出格式:

输出其运输费用,精确到元。

输入样例1:

1 200

结尾无空行

输出样例1:

200

结尾无空行

输入样例2:

10  2500

输出样例2:

22500

结尾无空行

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 20:44


def cost(w, s):
    if w > 0:
        if 0 <= s < 250:
            print(round(w * s))
        elif 250 <= s < 500:
            print(round(0.98 * w * s))
        elif 500 <= s < 1000:
            print(round(0.95 * w * s))
        elif 1000 <= s < 2000:
            print(round(0.92 * w * s))
        elif 2000 <= s < 3000:
            print(round(0.90 * w * s))
        elif 3000 <= s:
            print(round(0.85 * w * s))
        else:
            print(0)
    else:
        print(0)


w, s = input().split(" ")
w, s = float(w), float(s)
cost(w, s)

7-6 超速罚款 - 实验4 条件与分支 -《Python编程实验》 (10 分)

开车超速是要罚款的,某国相应法律如下:
 

情况处罚
车速 ≤ 限速程序输出:未超速
超速比 ≤ 10%程序输出:超速警告
10% <超速比≤ 20%程序输出:罚款100元
20% <超速比≤ 50%程序输出:罚款500元
50% <超速比≤ 100%程序输出:罚款1000元
超速比 > 100%程序输出:罚款2000元

请编写程序,程序从输入的第1行读取车速(整数),从输入的第2行读取限速值(整数),然后使用条件分支语句进行判断,输出如表所示的处罚结论。

输入格式:

车速
限速值

输出格式:

如表所示的处罚结论

输入样例:

149
100

结尾无空行

输出样例:

罚款500元

结尾无空行


解题思路: 请参考《Python编程实验》(待出版)。
该书是高等教育出版社《Python编程基础及应用》教材的配套实验指导书。

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 21:08
# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/10/18 20:44


def cost(w, s):
    if w > 0:
        if 0 < w <= (0.1 * s):
            print('超速警告')
        elif (0.1 * s) < w <= (0.2 * s):
            print('罚款100元')
        elif (0.2 * s) < w <= (0.5 * s):
            print('罚款500元')
        elif (0.5 * s) < w <= s:
            print('罚款1000元')
        else:
            print('罚款2000元')
    else:
        print("未超速")


w = int(input())
s = int(input())
w=w-s
cost(w, s)

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值