6-1 写函数求满足要求三位数的个数
要求实现一个函数,统计给定区间内的三位数中至少有两位数字相同的完全平方数(如144、676)的个数。
函数接口定义:
search(n);
其中传入的参数n是一个三位数的正整数。函数search返回[101, n]区间内所有满足条件的数的个数。
裁判测试程序样例:
/* 请在这里填写答案 */
n = int(input())
cnt = search(n)
print ('count={}'.format(cnt))
输入样例:
500
输出样例:
count=6
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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
#方法二
def search(n):
cnt=0
for i in range(101,n+1):
a=int(pow(i,0.5))
if a*a==i and len(set(str(i)))<=2:
cnt=cnt+1
return cnt
6-2 编写函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。
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
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def CountDigit(number, digit):
sum = 0
for i in str(number):
if i == str(digit):
sum += 1
return sum
#方法二
def CountDigit(number,dight):
nums=str(number)
cnt=nums.count(str(dight))
return cnt
6-3 判断用户传入的列表长度并完成切片
编写一个函数,判断用户传入的列表长度是否大于2,如果大于2,只保留前两个,并将新内容返回给调用者,否则输出None.
函数接口定义:
def func(list1)
裁判测试程序样例:
list1 = eval(input())
print(func(list1))
输入样例:
[1, 2, 3, 4]
输出样例:
[1, 2]
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def func(list1: list):
if len(list1) < 2:
return 'None.'
else:
return list1[:2]
#方法二
def func(ls):
if len(ls)>2:
ls=ls[:2]
else:
ls="None."
return ls
6-4 奇偶求和
输入一个完全由数字字符组成的字符串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
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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
#方法二
def f(n):
a=0
if n%2!=0:
a=1
return a
def q(t):
sum=0
for i in t:
if f(int(i))==0:
sum+=int(i)
return sum
def p(t):
sum=0
for i in t:
if f(int(i))==1:
sum+=int(i)
return sum
7-1 求某月的天数
输入年份year、月份month,判断该月的天数。闰年:能被4整除但不能被100整除或者能被400整除的年份是闰年。
输入格式:
测试数据有多组,处理到文件尾。对于每组测试,输入两个整数,表示年份year和月份month。
输出格式:
对于每组测试,输出对应年月的天数。
输入样例:
2020 2
2020 4
输出样例:
29
30
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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
#方法二
while True:
try:
a,b=map(int,input().split())
if str(b) in ['1','3','5','7','8','10','12']:
day=31
elif str(b) in ['4','6','9','11']:
day=30
elif a%4==0 and a%100!=0 or a%400==0:
day=29
else:
day=28
print(day)
except:
break
7-2 sdut-分段计算居民水费
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费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
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def y(x):
if x > 15:
print("%.2f" % ((2.5 * x) - 17.5))
else:
print("%.2f" % ((4 * x) / 3))
x = float(input())
y(x)
#方法二
n=eval(input())
if n<=15:
print("{:.2f}".format(4/3*n))
else:
print("{:.2f}".format(2.5*n-17.5))
7-3 有效括号判断
Alan最近眼神不好使,经常分不清楚括号,所以想请你帮忙,给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,由于不小心输入错误,Alan还输入了几个空格。想让你帮忙编写程序确定括号是否都是正常闭合。
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 空字符串被认定为True
- 空格可以去掉
输入格式:
输入空字符串或一行只包含’(‘,’)‘,’{‘,’}‘,’[‘,’]’ 以及空格的字符串。
输出格式:
如果所有括号正确闭合,输出“True”,否则输出“False”。
输入样例:
在这里给出一组输入。例如:
()
输出样例:
在这里给出相应的输出。例如:
True
输入样例:
在这里给出一组输入。例如:
{[()]()}
输出样例:
在这里给出相应的输出。例如:
True
输入样例:
在这里给出一组输入。例如:
{{()[]}
输出样例:
在这里给出相应的输出。例如:
False
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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')
#方法二
x=input()
while True:
s=x
x=x.replace("()","").replace("[]","").replace("{}","").replace(" ","")
if len(x)==len(s):
break
print("{}".format("False" if s else "True"))
7-4 打印数字实心矩形
打印数字和星号组成的实心矩形,外框是数字,内部是星号。
输入格式:
输入一个整数n(0<n<10)。
输出格式:
打印一个数字矩形,矩形的边框都是整数n,要求行和列都是n个数字。(注意:没有空行)而矩形内部都是星号。
输入样例:
在这里给出一组输入。例如:
5
输出样例:
在这里给出相应的输出。例如:
55555
5***5
5***5
5***5
55555
输入样例2:
在这里给出一组输入。例如:
2
输出样例2:
在这里给出相应的输出。例如:
22
22
输入样例3:
在这里给出一组输入。例如:
1
输出样例3:
在这里给出相应的输出。例如:
1
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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)
#方法二
n=input()
print(n*int(n))
for i in range(int(n)-2):
print(n+"*"*(int(n)-2)+n)
if int(n)>=2:
print(n*int(n))
7-5 sdut-运输计费问题
某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:
其中,基本运输费用为:每吨每公里1元。
现请你帮助该运输公司设计计费程序,计算运输费用。
输入格式:
每次运输的载重(吨)、里程(公里),中间有一个空格。
输出格式:
输出其运输费用,精确到元。
输入样例1:
1 200
输出样例1:
200
输入样例2:
10 2500
输出样例2:
22500
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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)
#方法二
a,b = map(eval,input().split())
if a>0:
if 0<=b<250:
print(round(a*b*1.0))
elif 250<=b<500:
print(round(a * b*0.98))
elif 500<=b<1000:
print(round(a * b * 0.95))
elif 1000<=b<2000:
print(round(a * b * 0.92))
elif 2000<=b<3000:
print(round(a * b * 0.90))
elif 3000<=b:
print(round(a * b * 0.85))
else:
print(0)
else:
print(0)
7-6 超速罚款 - 实验6 条件与分支 -《Python编程基础及应用实验教程》
开车超速是要罚款的,某国相应法律如下:
情况 | 处罚 |
---|---|
车速 ≤ 限速 | 程序输出:未超速 |
超速比 ≤ 10% | 程序输出:超速警告 |
10% <超速比≤ 20% | 程序输出:罚款100元 |
20% <超速比≤ 50% | 程序输出:罚款500元 |
50% <超速比≤ 100% | 程序输出:罚款1000元 |
超速比 > 100% | 程序输出:罚款2000元 |
请编写程序,程序从输入的第1行读取车速(整数),从输入的第2行读取限速值(整数),然后使用条件分支语句进行判断,输出如表所示的处罚结论。
输入格式:
车速
限速值
输出格式:
如表所示的处罚结论
输入样例:
149
100
输出样例:
罚款500元
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
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)
#方法二
a=int(input())
b=int(input())
if a<=b:
print("未超速")
elif (a-b)/b<=0.1:
print("超速警告")
elif (a-b)/b<=0.2:
print("罚款100元")
elif (a-b)/b<=0.5:
print("罚款500元")
elif (a-b)/b<=1.0:
print("罚款1000元")
else:
print("罚款2000元")