简介
其他各类实训答案的目录见这里
答案查询的入口网页版
小程序版:
答案获取的方法简介见这里
并不是所有的关卡都有答案,有些只有部分关卡有,因为金币不太够…
在电脑网页界面的右侧,有个文章目录,可以在那里查一下要找的实训标题
python相关实训答案
Python表达式问题求解(一)※ >>>链接
第1关: 具体值表达式的转换
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
#请在每一题的print语句内完成题目所需的表达式
#第一题
print_(1234%123)
#第二题
print_(90*365*24*3600)
#第三题
print_(123//12)
#第四题
print_(123/12)
#第五题
print_(10**9/(365*24*3600))
#第六题:要求编写两式比较的表达式,输出为True或False
print_(3**3+4**3+5**3==6**3)
#第七题
print_(1.02**365)
print_(1.01**365)
#第八题:要求编写两式比较的表达式,输出为True或False
print_(1.01**3*0.99**2>1.01)
# ********** End ********** #
第2关: Python数学函数
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
#请在每一题的print语句内完成题目所需的表达式
#第一题
print_(pi**4+pi**5)
print_(e**6)
print_(pi**4+pi**5-e**6)
#第二题
print_(pi/4)
print_((4*atan(1/5) - atan(1/239)))
#第三题
print_(cos(2*pi/17))
print_(1/16*(-1+sqrt(17)+sqrt(2*(17-sqrt(17)))+2*sqrt(17+3*sqrt(17)-sqrt(2*(17-sqrt(17)))-2*sqrt(2*(17+sqrt(17))))))
print_(cos(2*pi/17) - 1/16*(-1+sqrt(17)+sqrt(2*(17-sqrt(17)))+2*sqrt(17+3*sqrt(17)-sqrt(2*(17-sqrt(17)))-2*sqrt(2*(17+sqrt(17))))))
#第四题
print_(sqrt((1+sqrt(5))/2+2)-(1+sqrt(5))/2)
#第五题
print_(sinh(0.25))
print_((e**0.25-e**(-0.25))/2)
# ********** End ********** #
第3关: 变量与赋值
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
#第一题
for temperature in [-271, -100, 0, 100, 1000]:
#请在下面编写代码
F = (9/5) * temperature + 32
#请不要修改下面的代码
print_(F)
print('\n***********************\n')
#第二题
for (m, s, x) in [(0,2,1),(1,2,2),(1,3,4),(1,10,100)]:
# 请在下面编写代码
fx = (1/sqrt(2*pi*s))*exp((-1/2)*((x-m)/s)**2)
# 请不要修改下面的代码
print_(fx)
print('\n***********************\n')
#第三题
for x in [0.0, pi/2, pi, 3*pi/2, 2*pi, 5*pi/2, 3*pi]:
# 请在下面编写代码
sinh = (exp(x) - exp(-x))/2
# 请不要修改下面的代码
print_(sinh)
print('\n***********************\n')
#第四题
g = 9.8
for v0 in [10, 15, 20, 25, 30]:
for t in [0.0, 0.5, 1, 1.5, 2, 2.5, 3]:
# 请在下面编写代码
y = v0 * t - 0.5 * 9.8 * t**2
# 请不要修改下面的代码
print_(y)
print('***********************')
# ********** End ********** #
第4关: 解决实际问题※
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
#第一题
for (vin, rin, rout) in [(10, 10, 5), (10, 10, 10), (20, 20, 5), (20, 20, 10)]:
#请在下面编写代码
vout = vin * (rin/rout)**2
#请不要修改下面的代码
print_(vout)
print('\n***********************\n')
#第二题
for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
# 请在下面编写代码
r = ((d * p) / (pi * S))**(1/3)
# 请不要修改下面的代码
print_(r)
print('\n***********************\n')
#第三题
for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
# 请在下面编写代码
monthR = r/1200
N = N * 12
payPerMonth = (P * monthR * (1+monthR)**N) / ((1+monthR)**N - 1)
# 请不要修改下面的代码
print_(payPerMonth)
print('\n***********************\n')
#第四题
for (m,d,y) in [(1,1,2017), (2,14,2017), (5,1,2017), (6,1,2017),(7,1,2017),(12,25,2017)]:
# 请在下面编写代码
y0 = y - (14 - m)//12
x = y0 + y0//4 - y0//100 + y0//400
m0 = m + 12 * ((14 - m)//12) - 2
d0 = (d + x + (31 * m0)//12)%7
# 请不要修改下面的代码
print_(d0)
print('\n***********************\n')
#第五题
for (x1,y1,x2,y2) in [(48.87,-2.33,37.8,-122.4),(40.89,116.50,37.8,-122.4),(40.89,116.50,48.87,-2.33)]:
# 请在下面编写代码
x1 = radians(x1)
y1 = radians(y1)
x2 = radians(x2)
y2 = radians(y2)
R = 69.1105*1.609
dist = R*acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))*180/pi
# 请不要修改下面的代码
print_(dist)
print('\n***********************\n')
#第六题
for (t, v) in [(32,10), (32, 100), (40, 10), (40, 100)]:
# 请在下面编写代码
w = 35.74 + 0.6215 * t + (0.4275 * t - 35.75) * (v ** 0.16)
# 请不要修改下面的代码
print_(w)
# ********** End ********** #
Python控制结构(二)※ >>>链接
第1关: 分支结构基础实训
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
#第一题
for temp in [-280, -100, 0, 20, 120, 200]:
#请在下面编写代码
# ********** Begin ********** #
if temp < -273.15:
F = None
else:
F = 9 * temp / 5 + 32
# ********** End ********** #
#请不要修改下面的代码
print_(F)
print('\n***********************\n')
#第二题
for number in [-101.23, -3.14, 0, 12.55, 1908]:
# 请在下面编写代码
# ********** Begin ********** #
if number <= 0:
number = -number
# ********** End ********** #
# 请不要修改下面的代码
print_(number)
print('\n***********************\n')
#第三题
for (num1, num2) in [(12, 34), (-6, -7),(-12, 23), (-273, 0), (0, 199)]:
# 请在下面编写代码
# ********** Begin ********** #
if num1 > num2:
num1, num2 = num2, num1
# ********** End ********** #
# 请不要修改下面的代码
print(num1, ' ', num2)
print('\n***********************\n')
#第四题
for (num1, num2, num3) in [(-231, -321, 123), (100, 0, -99), (-980, -1002, -1), (6,1,2017)]:
# 请在下面编写代码
# ********** Begin ********** #
if num1 > num2:
num1, num2 = num2, num1
if num2 > num3:
num2, num3 = num3, num2
if num1 > num2:
num1, num2 = num2, num1
# ********** End ********** #
# 请不要修改下面的代码
print(num1, num2, num3)
print('\n***********************\n')
#第五题
for (num1, num2) in [(10, 5), (12,34), (89,0), (-100, 23), (789, -123)]:
# 请在下面编写代码
# ********** Begin ********** #
if num2 == 0:
result = None
else:
result = num1 / num2
# ********** End ********** #
# 请不要修改下面的代码
print_(result)
print('\n***********************\n')
#第六题
for (a, b, c) in [(1,2,1), (1,-2,1), (1,2,-3), (12, 34, 56), (78, 89, 100)]:
# 请在下面编写代码
# ********** Begin ********** #
sqrt = b*b - 4*a*c
if sqrt >= 0:
root1 = (-b + sqrt**0.5) / (2*a)
root2 = (-b - sqrt ** 0.5) / (2 * a)
else:
root1, root2 = None, None
# ********** End ********** #
# 请不要修改下面的代码
print(root1, root2)
print('\n***********************\n')
#第七题
for x in [-9, -8, -7, -6, -5, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]:
# 请在下面编写代码
# ********** Begin ********** #
if -10 <= x < -8:
fx = x - 2
elif -8 <= x < -6:
fx = x + 3
elif -6 <= x <= -2:
fx = x*x
elif -2 < x < 2:
if x < 0:
fx = -x
else:
fx = x
elif 2 <= x <= 4:
fx = x**3
elif 4 < x <= 6:
fx = 3*x - 4
elif 6 < x <= 8:
fx = 4*x + 1
# ********** End ********** #
# 请不要修改下面的代码
print_(fx)
第2关: 循环结构基础实训
from random import *
from math import *
r = []
for i in [10, 200,300,400,500,600,700,800,900,1000]:
seed(i)
r.append(randint(1, i))
#第一题
#请在下面编写代码
# ********** Begin ********** #
print('摄氏温度\t\t华氏温度')
print('*'*20)
for temp in range(-40, 55, 5):
print(str(temp)+'\t\t'+str(9 * temp / 5 + 32))
# ********** End ********** #
#请不要修改下面的代码
print('\n***********************\n')
#第二题
numbers = []
# 请在下面编写代码
# ********** Begin ********** #
i = 0
while i <= 300:
if i % 2 == 0 and i % 3 == 0 and i % 5 == 0:
numbers.append(i)
i += 1
# ********** End ********** #
# 请不要修改下面的代码
print(numbers)
print('\n***********************\n')
#第三题
# 请在下面编写代码
# ********** Begin ********** #
sum = 0
for i in range(1, 101):
sum += i
# ********** End ********** #
# 请不要修改下面的代码
print(sum, '\t', 100*(100+1)//2)
print('\n***********************\n')
#第四题
# 请在下面编写代码
# ********** Begin ********** #
fac = 1
for i in range(1, 31):
fac *= i
# ********** End ********** #
# 请不要修改下面的代码
print(fac)
print('\n***********************\n')
#第五题
for num in r:
#请在下面编写代码
# ********** Begin ********** #
prime = True
for i in range(2, num-1):
if num % i == 0:
prime = False
break
print(prime)
# ********** End ********** #
# 请不要修改下面的代码
print('\n***********************\n')
#第六题
sum = 0
avg = 0
for num in r:
# 请在下面编写代码
# ********** Begin ********** #
sum += num
avg = sum / len(r)
# ********** End ********** #
# 请不要修改下面的代码
print(sum, '\t', avg)
第3关: 函数基础实训
from random import *
from math import *
r = []
for i in [10, 200,300,400,500,600,700,800,900,1000]:
seed(i)
r.append(randint(1, i))
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
#第一题
def sumInt(n):
#请在下面编写代码
# ********** Begin ********** #
if n < 0:
return None
summary = 0
for i in range(1, n+1):
summary += i
# ********** End ********** #
#请不要修改下面的代码
return summary
#第二题
def factorial(n):
#请在下面编写代码
# ********** Begin ********** #
if n == 0:
return 1
if n < 0:
return None
fac = 1
for i in range(1, n+1):
fac *= i
# ********** End ********** #
#请不要修改下面的代码
return fac
#第三题
def isPrime(n):
# 请在下面编写代码
# ********** Begin ********** #
isprime = True
for i in range(2, int(sqrt(n))+1):
if n % i == 0:
isprime = False
break
# ********** End ********** #
# 请不要修改下面的代码
return (isprime)
#第四题
def f(x):
# 请在下面编写代码
# ********** Begin ********** #
if -10 <= x < -8:
fx = x - 2
elif -8 <= x < -6:
fx = x + 3
elif -6 <= x <= -2:
fx = x * x
elif -2 < x < 2:
if x < 0:
fx = -x
else:
fx = x
elif 2 <= x <= 4:
fx = x ** 3
elif 4 < x <= 6:
fx = 3 * x - 4
elif 6 < x <= 8:
fx = 4 * x + 1
# ********** End ********** #
# 请不要修改下面的代码
return fx
#第五题
def tax(salary):
#请在下面编写代码
# ********** Begin ********** #
salaTax = 0
if salary < 0:
return None
if 0 <= salary < 47450:
salaTax = salary *0.22
elif 47450 <= salary < 114650:
salaTax = salary * 0.25
elif 114650 <= salary < 174700:
salaTax = salary * 0.28
elif 174700 <= salary < 311950:
salaTax = salary * 0.33
elif 311950 <= salary:
salaTax = salary * 0.35
# ********** End ********** #
# 请不要修改下面的代码
return salaTax
if __name__ == '__main__':
for num in [-10, 0, 10, 100, 1000, 10000]:
summary = sumInt(num)
print(summary)
print('\n***********************\n')
for num in [-5, 0, 10, 15, 20, 25, 30]:
fac = factorial(num)
print(fac)
print('\n***********************\n')
for num in r:
isprime = isPrime(num)
print(isprime)
print('\n***********************\n')
for x in [-9, -8, -7, -6, -5, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]:
fx = f(x)
print(fx)
print('\n***********************\n')
for salary in [-1000, 0, 40000, 47450, 98000, 114650, 14980, 17470, 25670, 311950, 360000]:
st = tax(salary)
print_(st)
第4关: 控制结构综合实训
#第一题
def rankHurricane(velocity):
#请在下面编写代码
# ********** Begin ********** #
rank = None
if 74 <= velocity <= 95:
rank = 1
elif 96 <= velocity <= 110:
rank = 2
elif 111 <= velocity <= 130:
rank = 3
elif 131 <= velocity <= 154:
rank = 4
elif velocity >= 155:
rank = 5
# ********** End ********** #
#请不要修改下面的代码
return rank
#第二题
def validCreditCard(num):
#请在下面编写代码
# ********** Begin ********** #
valid = False
if 100000000 > num > 10000000:
oddSum = 0
even = 0
evenSum = 0
while not(num == 0):
oddSum += (num % 10)
num = num // 10
even = (num % 10) * 2
while not(even==0):
evenSum += (even % 10)
even = even // 10
num = num // 10
final = oddSum + evenSum
if final % 10 == 0:
valid = True
# ********** End ********** #
#请不要修改下面的代码
return valid
#第三题
def ISBN(n):
# 请在下面编写代码
# ********** Begin ********** #
total = 0
num = n
for i in range(2, 11):
digit = num % 10
total += i * digit
num //= 10
strn = str(n)
if len(strn) < 9:
strn = '0'*(9-len(strn)) + strn
trueISBN = ''
if total % 11 == 1:
trueISBN = strn + 'X'
elif total % 11 == 0:
trueISBN = strn + '0'
else:
trueISBN = strn + str(11 - (total % 11))
# ********** End ********** #
# 请不要修改下面的代码
return (trueISBN)
#第四题
def day(y, m, d):#计算y年m月d日是星期几
# 请在下面编写代码
# ********** Begin ********** #
y0 = y - (14 - m) // 12
x = y0 + y0 // 4 - y0 // 100 + y0 // 400
m0 = m + 12 * ((14 - m) // 12) - 2
d0 = (d + x + (31 * m0) // 12) % 7
# ********** End ********** #
# 请不要修改下面的代码
return d0
def isLeapYear(year): #判断year年是否闰年
# 请在下面编写代码
# ********** Begin ********** #
isLeapYear = (year % 4 == 0)
isLeapYear = isLeapYear and (year % 100 != 0)
isLeapYear = isLeapYear or (year % 400 == 0)
# ********** End ********** #
# 请不要修改下面的代码
return isLeapYear
def calendar(y, m): #打印y年m月日历
print(' {}年{}月'.format(y,m))
print('Su\tM\tTu\tW\tTh\tF\tSa')
# 请在下面编写代码
# ********** Begin ********** #
date = day(y, m, 1)
days = 0
if m in [1, 3, 5, 7, 8, 10, 12]:
days = 31
elif m in [4, 6, 9, 11]:
days = 30
else:
if isLeapYear(y):
days = 29
else:
days = 28
count = date
for i in range(date):
print('\t', end='')
for d in range(1, days + 1):
print(str(d) + '\t', end="")
count = (count + 1) % 7
if count == 0:
print()
print()
# ********** End ********** #
# 请不要修改下面的代码
#第五题
def ramanujan(n):
results = []
#请在下面编写代码
# ********** Begin ********** #
for a in range(1, n + 1):
a3 = a * a * a
if a3 > n:
break
# Start at a to avoid print out duplicate.
for b in range(a, n + 1):
b3 = b * b * b
if a3 + b3 > n:
break;
# Start at a + 1 to avoid printing out duplicates.
for c in range(a + 1, n + 1):
c3 = c * c * c
if c3 > a3 + b3:
break
# Start at c to avoid printing out duplicates.
for d in range(c, n + 1):
d3 = d * d * d
if c3 + d3 > a3 + b3:
break
if c3 + d3 == a3 + b3:
result = str(a3+b3) + ' = ' + str(a) + '^3 + ' + str(b) + '^3 = ' + str(c) + '^3 + ' + str(d) + '^3'
results.append(result)
# ********** End ********** #
# 请不要修改下面的代码
return results
#第六题
def unit_to_word(u): #将0~9的数字转换成英文,并返回转换后的英文
# 请在下面编写代码
# ********** Begin ********** #
convert_table = {
0: "zero",
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
}
return convert_table[u]
# ********** End ********** #
# 请不要修改下面的代码
def tens_to_word(t): #利用unit_to_word,将10~19、以及20~99的十位部分数字转换成英文,并返回转换后的英文
# 请在下面编写代码
# ********** Begin ********** #
convert_table = {
0: "",
10: "ten",
11: "eleven",
12: "twelve",
13: "thirteen",
14: "fourteen",
15: "fifteen",
16: "sixteen",
17: "seventeen",
18: "eighteen",
19: "nineteen",
2: "twenty",
3: "thirty",
4: "forty",
5: "fifty",
6: "sixty",
7: "seventy",
8: "eighty",
9: "ninety",
}
if 9 < t < 20:
return convert_table[t]
else:
tens = convert_table[t//10] + " " + unit_to_word(t%10)
return tens.lstrip()
# ********** End ********** #
# 请不要修改下面的代码
def hundreds_to_word(h): #利用unit_to_word、tens_to_word进行转换,并返回转换后结果的函数
# 请在下面编写代码
# ********** Begin ********** #
if h > 99:
word = unit_to_word(h//100) + " hundred"
tens = h % 100
if tens == 0:
return word
else:
return word + " and " + tens_to_word(tens)
else:
return tens_to_word(h)
# ********** End ********** #
# 请不要修改下面的代码
if __name__ == '__main__':
for v in [60, 74, 95, 96, 110, 111, 130, 131, 154, 170]:
rank = rankHurricane(v)
print(rank)
print('\n***********************\n')
for num in [1234567, 43589795, 87539319, 123456789]:
valid = validCreditCard(num)
print(valid)
print('\n***********************\n')
for num in [201314525, 488888913, 977889994, 753231846, 701134069]:
trueISBN = ISBN(num)
print(trueISBN)
print('\n***********************\n')
for (y,m) in [(2017,8), (2017,10),(2015,8), (2017,2), (2016,2)]:
calendar(y, m)
print('---------------------------')
print('\n***********************\n')
for num in [2000, 10000, 100000]:
st = ramanujan(num)
for item in st:
print(item)
print('\n***********************\n')
for test in [0, 5, 19, 23, 100, 700, 711, 729]:
print(test, "=>", hundreds_to_word(test))
基于Python语言的文件与文件夹管理 >>>链接
第1关: 创建子文件夹
解题代码
本关任务对应参考代码实现如下:
import os
def mkDir():
# 请在这里补充代码,完成本关任务
#-----------Begin----------
os.mkdir('dst')
#------------End-----------
第2关: 删除带有只读属性的文件
解题代码
本关任务对应参考代码实现如下:
import os, sys
import os.path
def removeFile():
# 请在这里补充代码,完成本关任务
#-----------Begin----------
fn = os.path.join(sys.path[0],r'src/removeme.txt')
os.chmod(fn, 0o777)
os.remove(fn)
#------------End-----------
第3关: 批量复制文件夹中的所有文件
解题代码
本关任务对应参考代码实现如下:
import os
import os.path
import shutil
def copyTree(src, dst):
# 请在这里补充代码,完成本关任务
#-----------Begin----------
total = 0
def copy(src, dst):
nonlocal total
for item in os.listdir(src):
srcPath = os.path.join(src, item)
dstPath = os.path.join(dst, item)
if os.path.isdir(srcPath):
os.makedirs(dstPath)
total += 1
copy(srcPath, dstPath)
elif os.path.isfile(srcPath):
shutil.copyfile(srcPath, dstPath)
total += 1
copy(src, dst)
return total
#------------End-----------
Python面向对象编程实训 >>>链接
第1关: 按揭贷款——定义抽象类
本关任务对应参考代码实现如下:
def findPayment(loan, r, m):
# 请在此添加代码,补全函数findPayment
#********** Begin *********#
return loan * ((r * (1 + r) ** m) / ((1 + r) ** m - 1))
#********** End *********#
class Mortgage(object):
def __init__(self, loan, annRate, months):
# 请在此添加代码,补全函数__init__
#********** Begin *********#
self.loan = loan
self.rate = annRate / 1200.0
self.months = months
self.paid = [0.0]
self.owed = [loan]
self.payment = findPayment(loan, self.rate, self.months)
#********** End *********#
self.legend = None
def makePayment(self):
# 请在此添加代码,补全函数makePayment
#********** Begin *********#
self.paid.append(self.payment)
reduction = self.payment - self.owed[-1]*self.rate
self.owed.append(self.owed[-1] - reduction)
#********** End *********#
def getTotalPaid(self):
# 请在此添加代码,补全函数getTotalPaid
#********** Begin *********#
return sum(self.paid)
#********** End *********#
def __str__(self):
return 'The Mortgage is {self.legend}, Loan is {self.loan}, Months is {self.months}, Rate is {self.rate:.2f}, Monthly payment is {self.payment:.2f}'.format(self=self)
if __name__=="__main__":
print(Mortgage(100000, 6.5, 36))
print(Mortgage(100000, 6.5, 120))
Python 入门之字符串处理 >>>链接
第1关: 字符串的拼接:名字的组成
# coding=utf-8
# 存放姓氏和名字的变量
first_name = input()
last_name = input()
# 请在下面添加字符串拼接的代码,完成相应功能
########## Begin ##########
full_name = first_name + " " + last_name
print(full_name)
########## End ##########
第2关: 字符转换
# coding=utf-8
# 获取待处理的源字符串
source_string = input()
# 请在下面添加字符串转换的代码
########## Begin ##########
print(source_string.strip().title())
print(len(source_string.strip().title()))
########## End ##########
第3关: 字符串查找与替换
# coding = utf-8
source_string = input()
# 请在下面添加代码
########## Begin ##########
string_index = source_string.find('day')
print(string_index)
replaced_string = source_string.replace('day','time')
print(replaced_string)
new_string_list = replaced_string.split(' ')
print(new_string_list)
########## End ##########
Python 入门之玩转列表 >>>链接
第1关: 列表元素的增删改:客人名单的变化
本关对应的参考实现代码如下:
# coding=utf-8
# 创建并初始化Guests列表
guests = []
while True:
try:
guest = input()
guests.append(guest)
except:
break
# 请在此添加代码,对guests列表进行插入、删除等操作
########## Begin ##########
deleted_guest = guests.pop(len(guests)-1)
guests.insert(2,deleted_guest)
del(guests[1])
print(deleted_guest)
print(guests)
########## End ##########
第2关: 列表元素的排序:给客人排序
本关任务参考实现代码如下:
# coding=utf-8
# 创建并初始化`source_list`列表
source_list = []
while True:
try:
list_element = input()
source_list.append(list_element)
except:
break
# 请在此添加代码,对guests列表进行排序等操作并打印输出排序后的列表
########## Begin ##########
source_list.sort()
print(source_list)
########## End ##########
第3关: 数值列表:用数字说话
本关对应的参考代码实现如下:
# coding=utf-8
# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())
# 请在此添加代码,实现编程要求
########## Begin ##########
target_list = list(range(lower,upper,step))
length = len(target_list)
value = max(target_list) - min(target_list)
print(length)
print(value)
########## End ##########
第4关: 列表切片:你的菜单和我的菜单
本关参考代码实现如下:
# coding=utf-8
# 创建并初始化my_munu列表
my_menu = []
while True:
try:
food = input()
my_menu.append(food)
except:
break
# 请在此添加代码,对my_menu列表进行切片操作
########## Begin ##########
first_three = my_menu[::3]
last_three = my_menu[-3:]
print(first_three)
print(last_three)
########## End ##########
Python 入门之元组与字典 >>>链接
第1关: 元组的使用:这份菜单能修改吗?
本关对应的参考代码实现如下:
# coding=utf-8
# 创建并初始化munu_list列表
menu_list = []
while True:
try:
food = input()
menu_list.append(food)
except:
break
# 请在此添加代码,对menu_list进行元祖转换以及元祖计算等操作,并打印输出元祖及元祖最大的元素
########## Begin ##########
menu_tuple = tuple(menu_list)
print(menu_tuple)
max_element = max(menu_tuple)
print(max_element)
########## End ##########
第2关: 字典的使用:这份菜单可以修改
# coding=utf-8
# 创建并初始化munu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的添加、查找、修改等操作,并打印输出相应的值
########## Begin ##########
menu_dict['lamb'] = 50
fish_price = menu_dict['fish']
menu_dict['fish'] = 100
del menu_dict['noodles']
print(fish_price)
print(menu_dict)
########## End ##########
第3关: 字典的遍历:菜名和价格的展示
本关参考代码实现如下:
# coding=utf-8
# 创建并初始化munu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的遍历操作并打印输出键与值
########## Begin ##########
for key in menu_dict.keys():
print(key)
for value in menu_dict.values():
print(value)
########## End ##########
第4关: 嵌套 - 菜单的信息量好大
本关参考代码实现如下:
# coding=utf-8
# 初始化menu1字典,输入两道菜的价格
menu1 = {}
menu1['fish']=int(input())
menu1['pork']=int(input())
# menu_total列表现在只包含menu1字典
menu_total = [menu1]
# 请在此添加代码,实现编程要求
########## Begin ##########
menu2 = {}
menu2['fish']=menu1['fish']*2
menu2['pork']=menu1['pork']*2
menu_total.append(menu2)
########## End ##########
# 输出menu_total列表
print(menu_total)
Python 入门之控制结构 - 顺序与选择结构 >>>链接
第1关: 顺序结构
changeOne = int(input())
changeTwo = int(input())
plus = int(input())
# 请在此添加代码,交换changeOne、changeTwo的值,然后计算changeOne、plus的和result的值
########## Begin ##########
tmp = changeOne
changeOne = changeTwo
changeTwo = tmp
result = changeOne + plus
########## End ##########
print(result)
第2关: 选择结构:if-else
workYear = int(input())
# 请在此添加代码,如果workYear < 5的判断语句
########## Begin ##########
if workYear < 5:
########## End ##########
print("工资涨幅为0")
# 请在此添加代码,如果workYear >= 5 and workYear < 10的判断语句
########## Begin ##########
elif workYear >= 5 and workYear < 10:
########## End ##########
print("工资涨幅为5%")
# 请在此添加代码,如果workYear >= 10 and workYear < 15的判断语句
########## Begin ##########
elif workYear >= 10 and workYear < 15:
########## End ##########
print("工资涨幅为10%")
# 请在下面填入当上述条件判断都为假时的判断语句
########## Begin ##########
else:
########## End ##########
print("工资涨幅为15%")
第3关: 选择结构 : 三元操作符
jimscore = int(input())
jerryscore = int(input())
# 请在此添加代码,判断若jim的得分jimscore更高,则赢家为jim,若jerry的得分jerryscore更高,则赢家为jerry,并输出赢家的名字
########## Begin ##########
winner = 'jim' if jimscore > jerryscore else 'jerry'
########## End ##########
print(winner)
Python 入门之控制结构 - 循环结构 >>>链接
第1关: While 循环与 break 语句
partcount = int(input())
electric = int(input())
count = 0
# 请在此添加代码,当count < partcount时的while循环判断语句
########## Begin ##########
while(count < partcount):
########## End ##########
count += 1
print("已加工零件个数:",count)
if(electric):
print("停电了,停止加工")
# 请在此添加代码,填入break语句
########## Begin ##########
break
########## End ##########
第2关: for 循环与 continue 语句
absencenum = int(input())
studentname = []
inputlist = input()
for i in inputlist.split(','):
result = i
studentname.append(result)
count = 0
# 请在此添加代码,填入循环遍历studentname列表的代码
########## Begin ##########
for student in studentname:
########## End ##########
count += 1
if(count == absencenum):
# 请在下面填入continue语句
########## Begin ##########
continue
########## End ##########
print(student,"的试卷已阅")
第3关: 循环嵌套
studentnum = int(input())
# 请在此添加代码,填入for循环遍历学生人数的代码
########## Begin ##########
for student in range(studentnum):
########## End ##########
sum = 0
subjectscore = []
inputlist = input()
for i in inputlist.split(','):
result = i
subjectscore.append(result)
# 请在此添加代码,填入for循环遍历学生分数的代码
########## Begin ##########
for score in subjectscore:
########## End ##########
score = int(score)
sum = sum + score
print("第%d位同学的总分为:%d" %(student,sum))
第4关: 迭代器
List = []
member = input()
for i in member.split(','):
result = i
List.append(result)
# 请在此添加代码,将List转换为迭代器的代码
########## Begin ##########
IterList = iter(List)
########## End ##########
while True:
try:
# 请在此添加代码,用next()函数遍历IterList的代码
########## Begin ##########
num = next(IterList)
########## End ##########
result = int(num) * 2
print(result)
except StopIteration:
break
Python 入门之函数结构 >>>链接
第1关: 函数的参数 - 搭建函数房子的砖
# coding=utf-8
# 创建一个空列表numbers
numbers = []
# str用来存储输入的数字字符串,lst1是将输入的字符串用空格分割,存储为列表
str = input()
lst1 = str.split(' ')
# 将输入的数字字符串转换为整型并赋值给numbers列表
for i in range(len(lst1)):
numbers.append(int(lst1.pop()))
# 请在此添加代码,对输入的列表中的数值元素进行累加求和
########## Begin ##########
# 定义plus函数,完成的功能是返回输入的整数之和
# 参数numbers是可变参数,表示输入的参数个数可以为任意值
def plus(numbers):
add = 0
for i in numbers:
add += i
return(add)
# 调用plus函数,并将结果存储到变量d中
d = plus(numbers)
########## End ##########
print(d)
第2关: 函数的返回值 - 可有可无的 return
# coding=utf-8
# 输入两个正整数a,b
a = int(input())
b = int(input())
# 请在此添加代码,求两个正整数的最大公约数
########## Begin ##########
def gcd(a,b):
if a < b:
t=a
a=b
b=t
while b:
t = a%b
a = b
b = t
return a
########## End ##########
# 调用函数,并输出最大公约数
print(gcd(a,b))
第3关: 函数的使用范围:Python 作用域
解题代码
# coding=utf-8
# 输入两个正整数a,b
a = int(input())
b = int(input())
# 请在此添加代码,求两个正整数的最小公倍数
########## Begin ##########
# 先定义一个private函数_gcd(),该函数先求a,b两个正整数的最大公约数
def _gcd(a,b):
if a < b:
t=a
a=b
b=t
while b:
t = a%b
a = b
b = t
return a
# 再定义public函数lcm(),在lcm()函数中调用_gcd()函数
def lcm(a,b):
return int(a*b/_gcd(a,b))
########## End ##########
# 调用函数,并输出a,b的最小公倍数
print(lcm(a,b))
Python入门之函数调用 >>>链接
第1关: 内置函数 - 让你偷懒的工具
# coding=utf-8
# 输入一个整数n
n = int(input())
# 请在此添加代码,对输入的整数进行判断,如果是素数则输出为True,否则输出为False
########## Begin ##########
def prime(n):
if n<=1:
return False
i=2
while i*i<=n:
if n%i==0:
return False
i+=1
return True
########## End ##########
print(prime(n))
第2关: 函数正确调用 - 得到想要的结果
# coding=utf-8
# 输入数字字符串,并转换为数值列表
a = input()
num1 = eval(a)
numbers = list(num1)
# 请在此添加代码,对数值列表numbers实现从小到大排序
########## Begin ##########
def bubbleSort(num):
for i in range(len(num)-1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(num)-i-1): # j为列表下标
if num[j]>num[j+1]:
t = num[j]
num[j] = num[j+1]
num[j+1] = t
return num
print(bubbleSort(numbers))
########## End ##########
第3关: 函数与函数调用 - 分清主次
# coding=utf-8
from math import pi as PI
n = int(input())
# 请在此添加代码,实现圆的面积计算,并输出面积结果
########## Begin ##########
def circle_area(n):
if isinstance(n, (int,float)): # 确保接收的参数为数值
return '%.2f' %(PI*n*n)
else:
print('You must input an integer or float as radius.')
print(circle_area(n))
########## End ##########
Python 入门之经典函数实例 >>>链接
第3关: Map-Reduce - 映射与归约的思想
解题代码
# coding=utf-8
# 输入一个正整数
x = int(input())
# 请在此添加代码,将输入的一个正整数分解质因数
########## Begin ##########
t = x
i = 2
result = []
while True:
if t==1:
break
if t%i==0:
result.append(i)
t = t/i
else:
i+=1
########## End ##########
# 输出结果,利用map()函数将结果按照规定字符串格式输出
print(x,'=','*'.join(map(str,result)))
Python入门之模块 >>>链接
第1关: 模块的定义
# coding=utf-8
import math
# 输入正整数a和b
a = float(input())
b = float(input())
# 请在此添加代码,输入直角三角形的两个直角边的边长a和b,计算出其斜边边长
########## Begin ##########
c = math.sqrt(a**2+b**2)
print('%.3f'%c)
########## End ##########
Python 入门之类的基础语法 >>>链接
第1关: 类的声明与定义
# 请在下面填入定义Book类的代码
########## Begin ##########
class Book(object):
########## End ##########
'书籍类'
def __init__(self,name,author,data,version):
self.name = name
self.author = author
self.data = data
self.version = version
def sell(self,bookName,price):
print("%s的销售价格为%d" %(bookName,price))
Python 入门之类的继承 >>>链接
第1关: 初识继承
import animalstest
# 请在下面填入定义fish类的代码,fish类继承自animals类
########## Begin ##########
class fish(animalstest.animals):
########## End ##########
def __init__(self,name):
self.name = name
def swim(self):
print("%s会游泳" %self.name)
# 请在下面填入定义leopard类的代码,leopard类继承自animals类
#********** Begin *********#
class leopard(animalstest.animals):
########## End ##########
def __init__(self,name):
self.name = name
def climb(self):
print("%s会爬树" %self.name)
fName = input()
f = fish(fName)
f.breath()
f.swim()
f.foraging()
lName = input()
l = leopard(lName)
l.breath()
l.run()
l.foraging()
Python 计算思维训练——文件操作与异常处理 >>>链接
第1关: 从文件中读取数据:信息时代已经到来
#coding=utf-8
#输入n
n = int(input())
with open('src/Step1/test.txt') as file_object:
lines = file_object.readlines()
# 请在此添加代码,实现编程要求
#********** Begin *********#
i = 0
for line in lines:
print(line.rstrip())
i = i+1
if i==n:
break
#********** End **********#
第2关: 将信息写入文件:会读会写方为正道
#coding=utf-8
#输入字符串
s = input()
# 请在此添加代码,将字符串s输入到test2.txt中
#********** Begin *********#
with open('src/Step2/test2.txt','w') as example:
example.write(s)
#********** End **********#
#输出test2.txt中的内容
with open('src/Step2/test2.txt') as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
第3关: 异常处理:敢于在错误面前吭声
#coding=utf-8
import math
#输入整数a
a = int(input())
try:
answer = math.sqrt(a)
# 请在此添加代码,实现编程要求
#********** Begin *********#
except:
print("We can't take a root by minus")
else:
print(answer)
#********** End **********#
Python 初体验—— Hello world >>>链接
第1关: Hello Python,我来了!
# coding=utf-8
# 请在此添加代码,实现编程要求
########## Begin ##########
print('Hello Python')
########## End ##########
Python–分支与一重循环 >>>链接
第1关: 关系运算与布尔运算
#任务一
a=int(input())
b=int(input())
print(a==b)
#任务二
s=input()
t=input()
print(s.upper()==t.upper())
#任务三
x=int(input())
y=int(input())
z=int(input())
print(x+y>z and x-y
#任务四
m=int(input())
print(-10 <= m <=30)
#任务五
ave=int(input())
n=int(input())
h=int(input())
print((ave>=80 and n<=1) or h==2)
第2关: 分支结构程序设计
#任务一
a=float(input())
b=float(input())
print((a>=0 and a<=1.0) and (b>=0 and b<=1.0))
#任务二
R=int(input())
G=int(input())
B=int(input())
C,M,Y,K=0,0,0,0
if R==0 and G==0 and B==0:
C=M=Y=0
K=1
else:
w=max(R/255,G/255,B/255)
C=(w-R/255)/w
M=(w-G/255)/w
Y=(w-B/255)/w
K=1-w
print(C)
print(M)
print(Y)
print(K)
#任务三
t=input()
s=int(t[:-1])
if t[-1] == 'F':
print((s-32)/1.8)
else:
print((s*1.8)+32)
#任务四
ave=int(input())
n=int(input())
h=int(input())
if (ave>=90 and n==0) or h>=3:
print('A')
elif (ave>=80 and n<=1) or h==2:
print('B')
elif(ave>=70 and n<=2) or h==1:
print('C')
else:
print('No')
第3关: 一重循环程序设计
#任务一
x = int(input())
s = 0
for i in range(x+1):
if i%3 == 0:
s = s + i
print(s)
#任务二
n = int(input())
empty,total = 0,0
#Begin 在Begin和End间填写代码
while n!=0:
n = n - 1
empty = empty + 1
total = total + 1
if empty >= 3:
total = total + 1
empty = empty % 3 + 1
print(total,empty)
#End
#任务三
#Begin 在Begin和End间填写代码
s=input()
t=''
for i in range(len(s)):
if s[i] == 'X':
t= t + 'A'
elif s[i] == 'Y':
t = t + 'B'
elif s[i] == 'Z':
t = t + 'C'
elif s[i] == 'x':
t = t + 'a'
elif s[i]=='y':
t+='b'
elif s[i]=='z':
t = t + 'c'
else:
t = t + chr(ord(s[i])+3)
print(t)
#End
#任务四
#Begin 在Begin和End间填写代码
a = eval(input())
total = 0
for i in range(len(a)):
total = total + int(a[i])
print(total/len(a))
'''
#更简单的写法
a = eval(input())
print(sum(a)/len(a))
#另外一种写法,可以不限定是整数列表,只计算列表中的数字型数据
total,cnt=0,0
for i in b:
if type(i) == type(2) or type(i) == type(1.2):
total = total +i
cnt += 1
print(total/cnt)
'''
#End
Python入门之综合实训 >>>链接
第1关: 表达式计算
print(```
1.013+0.992
#### 第2关: 基本数学函数
print_(```sinh(0.25)```)
print_(```
((e**0.25 - e**(-0.25))/2)
```)
#### 第3关: 地球上两点距离计算
R = 69.1105
cs1 = sin(x1/180*pi)*sin(x2/180*pi)
cs2 = cos(x1/180*pi)*cos(x2/180*pi)*cos((y1-y2)/180*pi)
dist = R*acos(cs1 + cs2)/pi*180*1.609
#### 第4关: 找最大最小数
```python
def ave(score_list):
max = -1.0
min = 101
sum = 0.0
for i in score_list:
if max < i:
max = i
if min > i:
min = i
sum += i
sum -= max
sum -= min
result = round(sum / 3.0, 2)
return result
第5关: 整数的各位数字处理
def count_digit(n, d):
if (n == 0):
if d == 0:
return 1
return 0
c = 0
while n != 0:
if (n % 10 == d):
c += 1
n = n // 10
return c
第6关: 身份证合法性判断
def valid(id):
if len(id) != 18:
return 0
r = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
m = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
n = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
sum = 0
for i in range(0, 17):
if (id[i] not in n):
return 0
sum += r[i] * int(id[i])
z = sum % 11
if m[z] == id[17]:
return 1
else:
return 0
第7关: 字符串处理
def count(str, c):
i = 0
while (str[i] != '#'):
if (str[i] >= '0' and str[i] <= '9'):
c[ord(str[i]) - ord('0')] += 1
else:
c[10] += 1
i += 1
第8关: 二维数组处理
max = -500
r_index = 0
c_index = 0
for i in range(0, 9):
for j in range(0, 4):
if a[i][j] > max:
max = a[i][j]
r_index = i
c_index = j
第9关: 体重指数计算
def f(sex, height, weight):
bz = 0.0
if sex == 1:
bz = (height - 100) * 0.9
else:
bz = (height - 100) * 0.9 - 2.5
if weight >= bz:
if bz * 1.1 >= weight:
return 0
if bz * 1.2 >= weight:
return 1
if bz * 1.4 >= weight:
return 2
return 3
else:
if bz * 0.9 <= weight:
return 0
if bz * 0.8 <= weight:
return -1
if bz * 0.6 <= weight:
return -2
return -3
基于Python语言的图像绘制与空域融合 >>>链接
第1关: 创建图像
解题代码
本关任务对应参考代码实现如下:
from PIL import Image, ImageDraw
def generateCircle(width, height):
# 请在这里补充代码,完成本关任务
#-----------Begin----------
img = Image.new('RGB', (width,height), (255,255,255))
imgDraw = ImageDraw.Draw(img)
imgDraw.arc((0,0,width-1,height-1), 0, 360, fill=(0,0,0))
img.save('circle.png')
#------------End-----------
第2关: 为图像添加随机噪点
解题代码
本关任务对应参考代码实现如下:
from random import randint
from PIL import Image
def addNoise(num):
# 第一关生成的PNG图像文件
fileName = 'circle.png'
# 请在这里补充代码,生成num个含有随机噪点的图像文件
#-----------Begin----------
for i in range(num):
# 打开原始图像
im = Image.open(fileName)
# 获取图像尺寸
width, height = im.size
# 添加噪点,每个结果图像中含有的噪点数量可能会不一样
n = randint(1, 20)
for j in range(n):
# 随机位置
w = randint(0, width-1)
h = randint(0, height-1)
# 修改随机位置的像素值
im.putpixel((w,h), (0,0,0))
# 保存结果图像
im.save(str(i+1)+'.png')
#------------End-----------
第3关: 图像空域融合
本关任务对应参考代码实现如下:
from os import listdir
from PIL import Image
# 对当前文件夹中所有含有随机噪点的图像,
# 对应位置像素计算平均值,生成结果图像
def mergeOne():
# 请在这里补充代码,完成本关任务
#-----------Begin----------
# 列表推导式,打开上面的函数生成的所有含有噪点的图像
ims = [Image.open(fn) for fn in listdir()\
if fn.endswith('.png') and fn!='circle.png']
# 创建新图像
im = Image.new('RGB', ims[0].size, (255,255,255))
width, height = im.size
for w in range(width):
for h in range(height):
# 计算所有临时图像中对应位置上像素值的平均值
colors = (tempIm.getpixel((w,h)) for tempIm in ims)
colors = zip(*colors)
r, g, b = map(lambda item:sum(item)//len(item), colors)
# 写入结果图像中对应位置
im.putpixel((w,h), (r,g,b))
# 保存最终结果图像
im.save('result.png')
#------------End-----------
Python入门之基础语法 >>>链接
第1关: 行与缩进
#有错误的函数1
def wrong1():
print("wrong1")
print("这里有一个错误缩进")
#有错误的函数2
def wrong2():
print("wrong2")
if False:
print("这个不应该输出")
print("这个也不应该输出")
#有错误的函数3
def wrong3():
print("wrong3");print("hello world")
#这里是调用三个函数的代码
#不要修改
if __name__ == '__main__':
wrong1()
wrong2()
wrong3()
Python初体验——Hello World >>>链接
第1关: Hello Python,我来了!
解题代码
# coding=utf-8
# 请在此添加代码,实现编程要求
#********** Begin *********#
print('Hello Python')
#********** End **********#
Python 计算思维训练——公式编程 >>>链接
第1关: 表达式求解 - 垂直上抛小球位置计算
# 本程序计算小球上抛在不同时间点的高度
v0 = 25 # 小球上抛的初速度
g = 9.8 # 地球重力加速度
t = int(input())
# 请在此添加实现代码 #
# ********** Begin *********#
h = v0*t - 0.5*g*t**2
print(h) #在屏幕上输出计算出的高度值
# ********** End **********#
第2关: 输出格式控制 - 摄氏-华氏温度换算
# 本程序进行华氏温度和摄氏温度之间的转换
# 请通过换算公式来计算相应的摄氏温度值,需给出Python表达式
# 最终输出格式为:华氏**度=摄氏**度
F = float(input()) # 华氏温度
# 请在此添加实现代码 #
# ********** Begin *********#
C = ( F - 32 ) * 5 / 9 # 根据换算公式计算相应的摄氏温度值
print("华氏%.2f度=摄氏%.2f度" %(F, C)) #格式化字符串
# ********** End **********#
第3关: 库函数的使用 - 小球阻力落体运动
# 计算小球在空气中向下作阻力落体运动中随时间的速度变化情况
g = 9.8 # 单位:米/秒平方,重力加速度
m = 0.25 # 单位:千克
u = 0.5
t = int(input()) # 单位:秒
# 请在此添加实现代码 #
# ********** Begin *********#
# 导入需要的函数
from math import sqrt, tanh, log, cosh
# 根据落体运动速度方程计算某时刻小球的速度
v = sqrt(m*g/u)*tanh(sqrt(u*g/m)*t)
# 根据落体运动位置方程计算某时刻小球的位置
d = (m/u)*log(cosh(sqrt(u*g/m)*t))
# 格式化输出计算结果
print("当t=%d秒时,速度v=%.2f米/秒" %(t,v))
print("%d秒后,小球位置为向下%.2f米" %(t, d))
# ********** End **********#
第4关: 综合应用 - 小球斜上抛运动
# 本程序计算小球向上斜抛在不同时间点的高度
theta = int(input()) # 单位:角度
# 请在此添加实现代码 #
# ********** Begin *********#
# 导入math库以及所需函数
from math import tan, cos, pi
# 参数赋值
g = 9.8 # 米/秒**2
v0 = 25 # 千米/小时
y0 = 1 # 米
x = 0.5 # 米
# 单位换算
v0 = v0/3.6 # 将千米/小时换算成米/秒
theta = theta/180*pi # 将角度换算成弧度(注意cos函数的参数为弧度单位)
# 计算y值
y = x*tan(theta) - 1/(2*v0)*g*x**2/(cos(theta)**2)+y0
# 格式化输出
print("y值计算结果为:%.5f米" % y)
# ********** End **********#
Python 计算思维训练——公式计算 >>>链接
第1关: 库函数的使用 - 高斯函数的计算
from math import pi, sqrt, exp
def test(list):
for (m, s, x) in list:
#********* Begin *********#
fx = (1 / (sqrt(2 * pi) * s)) * exp(-0.5 * ((x - m) / s) * ((x - m) / s))
#********* End *********#
print("{0:<10.9f}".format(fx)) #0-参数序号,
第2关: 输出格式控制 - 足球运动时受力计算
from math import pi
#********* Begin *********#
a = 0.11
m = 0.43
CD = 0.4
ruo = 1.2
g = 9.81
#********* End *********#
def test(list):
for V in list:
#********* Begin *********#
A = pi * a * a
Fg = m * g
V = V * 1000 / 3600
Fd = 0.5 * CD * ruo * A * V * V
print("{0: <6.1f}{1: <6.1f}{2: <6.1f}".format(Fg, Fd, Fd/Fg))
#********* End *********#
第3关: 综合应用 - 煮出完美的鸡蛋
from math import pi, log
####请在下面定义上述常量
#********* Begin *********#
K = 5.4 * 10 ** -3
ruo = 1.038
c = 3.7
Mb, Ms = 67, 47
Tw, Ty = 100, 70
#********* End *********#
def test(temp):
#********* Begin *********#
tb = (pow(Mb, 2/3)* c * pow(ruo, 1/3))/(K * pi * pi * pow(4*pi/3, 2/3)) * log(0.76 * (temp-Tw) / (Ty-Tw))
ts = (pow(Ms, 2 / 3) * c * pow(ruo, 1 / 3)) / (K * pi * pi * pow(4 * pi / 3, 2 / 3)) * log(0.76 * (temp - Tw) / (Ty - Tw))
print("{0:0.1f}\t{1:0.1f}".format(tb, ts))
#********* End *********#
Python入门-绘制炸弹轨迹 ※ >>>链接
第1关: 绘制一个坐标点
解题思路1
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
for t in [10, 15, 20, 24]:
xt = v0*t
yt = h-1/2*g*t**2
plt.ylim((0, 3000))
plt.xlim((0, 5000))
plt.grid('on')
######## begin ############
# 请使用plot函数,绘制一个坐标点
plt.plot(xt, yt, 'ro')
######## end ##############
plt.savefig('./student result/%s秒后.png' % str(t))
plt.close()
第2关: 绘制n个坐标点
解题思路1
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
t, n = 0, 30 #n为要绘制的坐标点数量,假设为30
tmax = (2*h/g)**0.5
delta = tmax/(n-1) #delta为相邻两时刻之间的间隔
while t<=tmax: #t从0变到tmax,每次加delta
###### begin ##########
# 请在此填写表达式,计算时间为t时,x轴与y轴的位置,并命名为xt与yt
xt = v0*t
yt = h-1/2*g*t**2
######### end ############
plt.plot(xt,yt,'ro')
t = t+delta
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result2/%s个点.png' % str(n))
plt.close()
第3关: 绘制一条轨迹
解题思路1
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
n = 30
xt, yt = [], []
tmax = (2*h/g)**0.5
delta = tmax/(n-1)
for i in range(n):
t = delta*i
xt.append(v0*t)
yt.append(h-1/2*g*t**2)
#### begin ###########
# 请使用plot函数绘制一条线
plt.plot(xt,yt,'r-')
#### end ##############
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result3/轨迹.png')
plt.close()
第4关: 更简单的绘制一条轨迹
解题思路1
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g, n = 3000, 200, 9.8, 30
tmax = (2*h/g)**0.5
########### begin ##############
# 请使用numpy的linspace函数,在[0, tmax]上平均取30个点
t = np.linspace(0, tmax, n) #在[0, tmax]上平均取n个点
########## end #################
xt = v0*t #计算n个点的横坐标
yt = h-1/2*g*t**2 #计算n个点的纵坐标
plt.plot(xt, yt, 'r-')
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result4/轨迹.png')
plt.close()
第5关: 绘制多条轨迹
解题思路1
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
def calBombTrace(h, v0):
g, n = 9.8, 30
tmax = (2*h/g)**0.5
t = np.linspace(0, tmax, n)
xt = v0*t
yt = h-1/2*g*t**2
##### begin ############
# 函数bia返回xt,yt
return xt, yt
###### end #############
H, V0 = [3000, 2000], [200, 260]
for h in H:
for v0 in V0:
xt, yt = calBombTrace(h, v0)
plt.plot(xt, yt)
plt.grid('on')
plt.axis([0, 6500, 0, 3000])
plt.savefig('./student result5/轨迹.png')
plt.close()
Python入门之类的基础语法 >>>链接
第1关: 类的声明与定义
解题代码
# 请在下面填入定义Book类的代码
#********** Begin *********#
class Book(object):
#********** End *********#
# '书籍类'
def __init__(self,name,author,data,version):
self.name = name
self.author = author
self.data = data
self.version = version
def sell(self,bookName,price):
print("%s的销售价格为%d" %(bookName,price))
第2关: 类的属性与实例化
解题代码
class People:
# 请在下面填入声明两个变量名分别为name何country的字符串变量的代码
#********** Begin *********#
name = ''
country = ''
#********** End **********#
def introduce(self,name,country):
self.name = name
self.country = country
print("%s来自%s" %(name,country))
name = input()
country = input()
# 请在下面填入对类People进行实例化的代码
#********** Begin *********#
p = People()
#********** End **********#
p.introduce(name,country)
第3关: 绑定与方法调用
解题代码
import fractionSumtest
# 请在下面填入创建fractionSum的实例fs的代码
#********** Begin *********#
fs = fractionSumtest.fractionSum()
#********** End **********#
n = int(input())
if n % 2 == 0:
# 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为偶数时计算的和
#********** Begin *********#
sum = fs.dcall(fs.peven,n)
#********** End **********#
else:
# 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为奇数时计算的和
#********** Begin *********#
sum = fs.dcall(fs.podd,n)
#********** End **********#
print(sum)
第4关: 静态方法与类方法
解题代码
class BookSell:
static_var = 100
def sell(self,name,author,version,price):
print("%s的销售价格为%d" %(name,int(price)))
# 请在下面填入函数修饰符将printStatic()方法声明为静态方法
#********** Begin *********#
@staticmethod
#********** End **********#
def printStatic():
print(BookSell.static_var)
# 请在下面填入函数修饰符将printVersion(cls)方法声明为类方法
#********** Begin *********#
@classmethod
#********** End **********#
def printVersion(cls):
print(cls)
第5关: 类的导入
解题代码
# 请在下面输入调用DataChange模块中eightToten(self,p)的代码,以实现将输入的八进制转换成十进制输出
#********** Begin *********#
import DataChangetest
dc = DataChangetest.DataChange()
p = input()
dc.eightToten(p)
#********** End **********#
Python入门之控制结构 - 顺序与选择结构 >>>链接
第1关: 顺序结构
解题代码
changeOne = int(input())
changeTwo = int(input())
plus = int(input())
#请在此添加代码,交换changeOne,changeTwo的值,然后计算changeOne和plus的和result的值
#********** Begin *********#
tmp = changeOne
changeOne = changeTwo
changeTwo = tmp
result = changeOne + plus
#********** End **********#
print(result)
第2关: 选择结构:if-else
解题代码
workYear = int(input())
#请在此添加代码,如果workYear < 5的判断语句
#********** Begin *********#
if workYear < 5:
#********** End ***********#
print("工资涨幅为0")
#请在此添加代码,如果workYear >= 5 and workYear < 10的判断语句
#********** Begin *********#
elif workYear >= 5 and workYear < 10:
#********** End ***********#
print("工资涨幅为5%")
#请在此添加代码,如果workYear >= 10 and workYear < 15的判断语句
#********** Begin *********#
elif workYear >= 10 and workYear < 15:
#********** End ***********#
print("工资涨幅为10%")
#请在下面填入当上述条件判断都为假时的判断语句
#********** Begin *********#
else:
#********** End ***********#
print("工资涨幅为15%")
第3关: 选择结构 - 三元操作符
解题代码
jimscore = int(input())
jerryscore = int(input())
#请在此添加代码,判断若jim的得分jimscore更高,则赢家为jim。若jerry的得分jerryscore更高,则赢家为jerry并输出赢家的名字。
#********** Begin *********#
winner = 'jim' if jimscore > jerryscore else 'jerry'
#********** End **********#
print(winner)
python基础(5-2)列表、元组、字典、集合——元组 >>>链接
第4关: 盘点订单
解题思路1-去重复思路
按顺序去掉重复
定义一个新列表List2为空
遍历List1,如果元素在List2中,则跳过,否则加入到list2中
将list2整体赋值给list1
解题思路2-单日最大订单数思路
由于规则规定订单最后4位为单日的订单序号,那么元素最后四位转换为整数后最大值就是单日订单数最多的那个元素!
程序开始,先定义最大值下标为n=0,最大值为maxorder=0。
循环变量i从下标为0到range(len(tup))挨个查看元组元素,
将第i个元组元素tup[i]后四位转成数值型
m=int(tup[i][-4:])
如果m>maxorder则
更换最大值下标n为当前下标i
更换最大值maxorder为m
循环结束后,找到的这个n就是我们要找的元素下标了
根据这个下标就能够得到该订单编号
由订单编号截取出前6位就是年月日了!
祝大家编程愉快!
解题思路3-去重复代码
list2=[]
for item in list1:
if item in list2:
pass
else:
list2.append(item)
list1=list2
print(tuple(list1))
解题思路4—单日最大订单数代码
tup=tuple(list1)
n=0
maxorder=0
for i in range(len(tup)):
if int(tup[i][-4:])>maxorder:
maxorder=int(tup[i][-4:])
n=i
print (tup[n][0:6])
学习-Python单路分支之求平抛小球与抛出点之间的距离 >>>链接
第1关: 学习-Python单路分支之求平抛小球与抛出点之间的距离
"""参考答案
任务:一小球以 5米/秒 的水平速度平抛,重力加速度取9.8米每秒的平方,在忽略空气阻力的情况下,求
经过时间 t 秒后(t 是获取的输入值),小球所在位置与抛出点之间的距离 (假设小球距地面足够高,t应大于0)。
如果t>0,输出格式为:"经过t秒后,小球与原点的距离为d米"
如果t<0,输出格式为:"t<0,不合法"
"""
G = 9.8 # 声明浮点型变量 G,用于表示重力加速度
v0 = 5 # 声明整型变量 v0, 用于表示水平初速度
#请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########### Begin ###########
# 第一步:通过input函数获取输入值,将其转换为浮点型并赋值给t
t = float(input())
# 第二步:判断t是否大于0,如果大于0则继续执行下列步骤
if t>0:
# 第三步:计算水平距离,并赋值给s
s = v0 * t
# 第四步:计算垂直距离,并赋值给h
h = (G*t**2)/2
# 第五步:计算小球与原点的距离,并赋值给d
d = (s**2 + h**2)**0.5
# 第六步:按照格式化输出要求,打印出小球与原点的距离d
print("经过%f秒后,小球与原点的距离为%f米"%(t,d))
# 第七步:判断t是否小于0,如果小于0则执行下列步骤
if t<0:
# 第八步:按照t<0的要求打印信息
print("t<0,不合法")
########### End ###########
python基础(3)运算符与表达式 >>>链接
第1关: 算术表达式结果是否为整数
解题思路1
(int(exp)==exp)
解题思路2
(exp==int(exp))
python基础(5-2)列表、元组、字典、集合——元组 >>>链接
第4关: 盘点订单
解题思路1-去重复思路
按顺序去掉重复
定义一个新列表List2为空
遍历List1,如果元素在List2中,则跳过,否则加入到list2中
将list2整体赋值给list1
解题思路2-单日最大订单数思路
由于规则规定订单最后4位为单日的订单序号,那么元素最后四位转换为整数后最大值就是单日订单数最多的那个元素!
程序开始,先定义最大值下标为n=0,最大值为maxorder=0。
循环变量i从下标为0到range(len(tup))挨个查看元组元素,
将第i个元组元素tup[i]后四位转成数值型
m=int(tup[i][-4:])
如果m>maxorder则
更换最大值下标n为当前下标i
更换最大值maxorder为m
循环结束后,找到的这个n就是我们要找的元素下标了
根据这个下标就能够得到该订单编号
由订单编号截取出前6位就是年月日了!
祝大家编程愉快!
解题思路3-去重复代码
list2=[]
for item in list1:
if item in list2:
pass
else:
list2.append(item)
list1=list2
解题思路4—单日最大订单数代码
tup=tuple(list1)
n=0
maxorder=0
for i in range(len(tup)):
if int(tup[i][-4:])>maxorder:
maxorder=int(tup[i][-4:])
n=i
print (tup[n][0:6])
04-2 Python程序设计入门2-基本输入输出、字符串、内置函数实训 >>>链接
第1关: python输出
解题思路1
print(’{:>3}%@{}’.format(N,’=’*(N//5)))
第2关: 字符变量统计
解题思路1
m=s.count(’,’)+s.count(’?’)
解题思路2
n=len(s)-m
第3关: 身体质量指数(BMI)
解题思路1
print(“BMI是{:.1f}”.format(w/(h**2)))
第4关: 含字符串、内置函数、特殊要求的输出
解题思路1
a,x = input().split(’,’) # 请输入1个整数和1个符号,逗号隔开
print(x**eval(a),a,x**eval(a))
注意input()必须紧跟函数
解题思路2
以下都可以
print("{:.2f}"’%’.format(3.1415926))
print("{:.2f}""%".format(3.1415926))
print("{:.2f}%".format(3.1415926))
print(’{:.2f}%’.format(3.1415926))
04-3 Python程序设计入门2-课后练习 >>>链接
第2关: 按要求输出
解题思路1
print(’{}+{}-{}[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xG5NwRq5-1597546367064)(/api/attachments/639315)]{}={}’.format(a,b,c,d,a+b-c*****d))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jvxrecLU-1597546367069)(/api/attachments/639307)]
04-1 Python程序设计入门2-视频指导 >>>链接
第2关: python当做计算器
解题思路1
a=int(input())
b=int(input())
print(’{}+{}={}’.format(a,b,a+b))
print(’{}-{}={}’.format(a,b,a-b))
print(’{}{}={}’.format(a,b,ab))
print(’{}/{}={}’.format(a,b,a/b))
a=float(input())
b=float(input())
print(’{:.2f}+{:.2f}={:.2f}’.format(a,b,a+b))
print(’{:.2f}-{:.2f}={:.2f}’.format(a,b,a-b))
print(’{:.2f}{:.2f}={:.2f}’.format(a,b,ab))
print(’{:.2f}/{:.2f}={:.2f}’.format(a,b,a/b))
03-6 Python程序设计入门-闯关升级 >>>链接
第3关: 判断变量数据类型并输出
代码完善1
改错行
new_data=#使用eval函数将my_data的类型转换为应有的数据类型变量new_data
new_data=eval(my_data)
代码完善2
代码完善2
new_data_type=#使用type函数获取new_data的数据类型
new_data_type=type(new_data)
源代码
"""
#本关的任务是请编写代码查看从测试集中读入数据的类型!
"""
my_data=input()#从测试集获取数据给my_data,此时获取的数据应为字符串型
#############请在此之后开始你的编码#################
new_data=eval(my_data)#使用eval函数将my_data的类型转换为应有的数据类型变量new_data
new_data_type=type(new_data)#使用type函数获取new_data的数据类型
print( new_data_type )#打印这个数据类型new_data_type
#############请在此之前完成你的编码#################
第4关: 数据类型转换(实型、浮点型之间的转换)
使用float函数将my_num转换为小数
代码完善1
my_num_float=#使用float函数将my_num转换为小数
my_num_float=float(my_num)
采用round函数四舍五入取整
my_num_float1=#采用round函数四舍五入取整
round(my_num_float,my_n_int)
直接舍去
my_num_float2=#巧妙采用将小数放大后取整再缩小的方式可以获取直接截取
可将12.3456*100变为1234.56。采用int对1234.56直接取整获得1234。再讲1234/100得到12.34
对my_num_float变量就是 int(my_num_float*100)/100
源码
#############完成以下代码实现程序功能################
my_num=input() #从测试集获取浮点型数字
my_n=input() #从测试集获要保留的位n
my_num_float=float(my_num ) #使用float函数将my_num转换为小数
my_n_int=int(my_n ) #使用int函数将my_bit转换为整数
my_num_float1=round(my_num_float,my_n_int) #采用round函数四舍五入取整
my_num_float2=int(my_num_float*100)/100 #巧妙采用将小数放大后取整再缩小的方式可以获取直接截取
print(my_num_float1) #输出结果1
print(my_num_float2) #输出结果2
###################end################################
第5关: 多变量赋值-交换两个变量的值
解题思路1
使用传统方式进行x、y值互换
t=x
x=y
y=t
可以交换x,y两个值
解题思路2
多变量赋值
a,b=b,a
可以直接实现a,b值的互换
解题思路3
源码
################开始完成代码补充############
a=eval(input()) #获取测试集a的值
b=eval(input()) #获取测试集b的值
x=a #将a的值赋值给x
y=a+b #将a+b的值赋值给y
#使用传统方式进行x、y值互换
t=x
x=y
y=t
print(x,y) #输出交换后的值
#使用多变量赋值方式交换a,b
a,b=b,a #在a后补全该行代码
print(a,b) #输出交换后的值
################END########################
03-2 Python程序设计入门1-运算符与表达式 >>>链接
第1关: 正确写出表达式
算术表达式
算术表达式依靠变量来写
2分之3的3倍写成3/2*3
因此a分之b的c倍就应写成b/a*3
依次去写剩余部分
复杂表达式
复杂表达式
x5=#(4)输出c、d、e是否按从小到大顺序排列
是否按从小到大顺序排列可以使用关系表达式连写。
比如:a就表示求a、b、c是否按从小到大顺序排列,是则运算结果为True,否则运行结果为False。将表达式填入即可
x6=#(5)输出e是否同时能被2、3整除
e被2整除,可写为e除以2后的余数是否为0.表达式写为e%2==0,能整除则运算结果为真,否则为假。同理可计算e是否能整除3。两个结果再进行逻辑与运算即可获得结果
x7=#(6)输出d是否高于或等于这5个数的平均值
关系表达式,>=号左边应为d,右边是5个数的平均值表达式。如果这个关系表达式真,则运算结果为真。d高于或等于平均值。反之则为假。
源码
源码
a=int(input())#输入a并转换为整型
b=int(input())#输入b并转换为整型
c=int(input())#输入c并转换为整型
d=int(input())#输入d并转换为整型
e=int(input())#输入e并转换为整型
x1=b/a*3 # x1为2分之3的3倍
x2=(b/a)**3
x3=d%e
x4=d//e
print(x1)
print(x2)
print(x3)
print(x4)
x5=(c=(a+b+c+d+e)/5)
print(x5)
print(x6)
print(x7)
第3关: 注释
解题思路1
此题考察注释的写法
1、前两行为单行注释,在注释的内容前面加#即可,注意不要注释掉前面正确的语句
2、多行注释,在若干行的“以下为注释信息”前后添加三个单引号或双引号即可
凑占比,不要点开
凑占比,不要点开
第4关: 缩进
解题思路1
File "train/suojin.py", line 2
b=4
^
IndentationError: unexpected indent
第二行
b=4处有意想不到的缩进
删除缩进即可
解题思路2
File “train/suojin.py”, line 5
print(“b>0”)
^
IndentationError: expected an indented block
第5行,
print(“b>0”)
预计一个缩进块
在此处增加一个TAB缩进即可
解题思路3
File “train/suojin.py”, line 6
print(b)
^
TabError: inconsistent use of tabs and spaces in indentation
第6行
TAB错误,不一致的使用制表符和空格缩进
这里的缩进没有使用TAB而是使用的空格,删除空格并按TAB键输入缩进即可
03-3 Python程序设计入门2-基本输入输出、字符串、内置函数-视频学习 >>>链接
第2关: python当做计算器
解题思路1
a=int(input())
b=int(input())
print(’{}+{}={}’.format(a,b,a+b))
print(’{}-{}={}’.format(a,b,a-b))
print(’{}{}={}’.format(a,b,ab))
print(’{}/{}={}’.format(a,b,a/b))
a=float(input())
b=float(input())
print(’{:.2f}+{:.2f}={:.2f}’.format(a,b,a+b))
print(’{:.2f}-{:.2f}={:.2f}’.format(a,b,a-b))
print(’{:.2f}{:.2f}={:.2f}’.format(a,b,ab))
print(’{:.2f}/{:.2f}={:.2f}’.format(a,b,a/b))
第3关: 如何输出3.14%
解题思路1
print(’{:.2f}%’.format(pi))
解题思路2
print(’%.2f’%pi+’%’)
第5关: 内置函数
解题思路1
###1数学函数###
print(abs(-2)) #求数值的绝对值
print(max(1,6,3)) # 取3个中较大者
print(min(7,2,3)) # 取3个中较小者
print(pow(2,5)) #返回两个数值的幂运算值
print(round(3.1415926,3)) #对浮点数进行保留3位小数的四舍五入求值
print(sum([1,2,3])) # 求和
print(divmod(19,4)) #返回两个数值的商和余数
print(divmod(19.0,4)) #返回两个数值的商和余数
print(divmod(19.5,4)) #返回两个数值的商和余数
str_example = ‘hello world!hello Python!’
index1=str_example.find(“or”) #找到or在字符串中的位置
print(index1)
result = str_example.count(“he”) #统计he在字符串中出现的次数
print(result)
print(int(‘111’,2) ) #二进制111变成十进制整数
print(int(‘111’,8) ) #八进制111变成十进制整数
print(int(‘111’,16)) #十六进制111变成十进制整数
print(chr(100)) #输出ASCII为100的值对应的字符
print(ord(‘H’) ) #输出字母H的ASCII值
print(ord(‘h’) ) #输出字母h的ASCII值