湖南大学python头歌实训-循环语句

第二章-Python语言基础-2.3循环(一)

程序的第三大结构是循环结构。在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环。循环语句分为while循环、for循环、循环嵌套和迭代器。循环语句中有一个语句break,通过这个语句可以跳出整个循环。以下场景便模拟了循环结构与跳出循环的现实场景:

在一个工厂的流水线上每天需要加工零件100件,且每件零件所做的加工都是一样的,也就是说流水线每天要循环做相同的工作100次,但是如果在加工时突然停电,则流水线停止对后面所有零件的加工,跳出循环。

本关的任务是让读者学会使用while循环与break语句。

相关知识
while循环+break结构如下图所示:

while语句
while语句的基本形式为:

while 判断条件1:
循环语句
当判断条件1为true时,执行循环语句,直到判断条件1为假。
例如:

while 判断条件1:
循环语句
判断条件2:
break
当判断条件1为true时执行循环语句,若此时判断条件2为true,执行break跳出while循环,若判断条件2一直为false,则执行while循环,一直到判断条件1为false。
例如:

count = 0
while(count

编程要求
本关的编程任务是补全line.py文件中的判断语句部分,具体要求如下:

填入当已处理零件数小于总零件数count < partcount时的while循环判断语句。
在停电时填入break语句跳出循环。
本关涉及的代码文件line.py的代码框架如下:

partcount = int(input())
electric = int(input())
count = 0

请在此添加代码,当count < partcount时的while循环判断语句

* Begin _*#
#
_ End #
count += 1
print(“已加工零件个数:”,count)
if(electric):
print(“停电了,停止加工”)
#请在此添加代码,填入break语句
#
Begin _#
#
_ End ****

测试说明
本文的测试文件是line.py,具体测试过程如下:

平台自动编译生成line.py;
平台运行line.py,并以标准输入方式提供测试输入;
平台获取line.py输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step1/line.py的样例测试集:
预期输入:

预期输出:

已加工零件个数: 1
已加工零件个数: 2
已加工零件个数: 3

预期输入:
5
1

预期输出:
已加工零件个数: 1
停电了,停止加工

partcount = int(input())
electric = int(input())
count = 0

while(count<partcount):

    count += 1
    print("已加工零件个数:",count)
    if(electric):
        print("停电了,停止加工")

        break

python中还为我们提供了一种循环结构:for循环。for循环可以遍历序列成员,直到序列中的成员全部都遍历完后才跳出循环。
本关的任务是让读者学会使用for循环。

相关知识
for语句
for语句的基本形式为:

for iteration_var in sequence:
循环语句
依次遍历序列中的成员,执行循环语句。
例如:

list = [‘python’,’java’,’c’,’c++’]
for book in list:
print(“当前书籍为:”,book)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:

第一题
已知 L 为 [101, 25, 38,29,108,121] ,利用如下公司计算 L 中的数据标准差

=
N
∑(x−μ)
2

其中, x 为 L 中的数据,N 为数据的个数,u 为数据平均值。

第二题
水仙花数是三位整数,且各位数字的立方之和等于该数,比如,因为

153=1
2
+5
2
+3
2

所以153是水仙花数。编写程序,计算所有的水仙花数

测试说明
需要在右侧的代码中补全所缺失的代码,并打印出计算的结果。平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。


L = [101, 25, 38, 29, 108, 121]
N = len(L)
miu = sum(L)/N
s2 = 0

for x in L:

     s2 = s2+(x-miu)**2
sigma=(s2/N)**0.5
print(sigma)

for x in range(100,1000):

    x1 = x%10
    x2 = x//10%10
    x3 = x//100
    if x1**3+x2**3+x3**3==x:
        print(x)

python中还为我们提供了一种跳出for循环的方法:continue关键词。这个语句的作用是跳出当前循环。以下场景便模拟了for循环结构与跳出当前循环的现实场景;

全班同学的试卷为一个序列,老师在批阅一个班同学的试卷时,需要从第一个同学开始一个一个批阅,然后根据每个同学的具体答卷情况给出最后得分。如果评阅到某张试卷时发现这位同学缺考,为空白卷,那么就不评阅这张试卷,直接评阅下一张。当全部同学的试卷都评阅完毕时,结束评阅,跳出循环。

本关的任务是让读者学会使用for循环与continue语句。

相关知识
for循环+continue结构如下图所示:

continue语句
continue语句的基本形式为:

for iteration_var in sequence:
循环语句
if 判断语句1:
continue
当遍历序列时,如果判断语句1为真,则执行continue语句,跳出当前循环,直接进入下一次循环。
例如:

list = [‘python’,’java’,’c’,’c++’]
count = 0
for book in list:
count += 1
if count == 3:
continue
print(“当前书籍为:”,book)
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第三章。

编程要求
本关的编程任务是补全checkWork.py文件中的判断语句部分,具体要求如下:

填入循环遍历studentname列表的代码;
当遍历到缺席学生时,填入continue语句跳过此次循环。
本关涉及的代码文件checkWork.py的代码框架如下:

absencenum = int(input())
studentname = []
inputlist = input()
for i in inputlist.split(‘,’):
result = i
studentname.append(result)
count = 0

请在此添加代码,填入循环遍历studentname列表的代码

* Begin _*#
#
_ End #
count += 1
if(count == absencenum):
#在下面填入continue语句
#
Begin _#
#
_ End ****

print(student,”的试卷已阅”)
测试说明
本文的测试文件是checkWork.py,具体测试过程如下:

平台自动编译生成checkWork.py;
平台运行checkWork.py,并以标准输入方式提供测试输入;
平台获取checkWork.py输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step2/checkWork.py的样例测试集:
预期输入:

2
zhangsan,lisi,wangwu,zhaoliu,qianqi
预期输出:

zhangsan 的试卷已阅
wangwu 的试卷已阅
zhaoliu 的试卷已阅
qianqi 的试卷已阅

预期输入:

3
zhangsan,lisi,wangwu

预期输出:

zhangsan 的试卷已阅
lisi 的试卷已阅

absencenum = int(input())
studentname = []
inputlist = input()
for i in inputlist.split(','):
   result = i
   studentname.append(result)
count = 0

for student in studentname:

    count += 1
    if(count == absencenum):

        continue

    print(student,"的试卷已阅")

在python中,除了while循环与for循环,还有循环嵌套。循环嵌套就是在一个循环体里嵌入另一个循环。以下场景便模拟了循环嵌套与跳出循环的现实场景:
在一次考试结束后,学校需要统计每位同学的考试总成绩。在这个场景中,我们先将所有同学组成一个序列,然后遍历每位同学,在遍历到每位同学时还要遍历每个同学的每门分数,计算出总成绩,最后得出每位同学的总成绩。
本关的任务是让读者学会使用循环嵌套。

相关知识
嵌套循环分为for循环嵌套和while循环嵌套。

for循环嵌套
for循环嵌套的基本形式为:

for iteration_var in sequence:
for iteration_var in sequence:
循环语句
例如:

for x in range(1,10):
for y in range(0,x):
result = x + y
print(result)
while循环嵌套
while循环嵌套的基本形式为:

while 判断条件:
while 判断条件:
循环语句
例如:

x = 1
y = 0
while x < 10:
while y < x:
result = x + y
print(result)
y += 1
x += 1
y = 0
如果你想了解更多运算符相关知识,请参考[美]Katie Cunningham著《Python入门经典》第三章。

编程要求
本关的编程任务是补全sumScore.py文件中的判断语句部分,具体要求如下:

当输入学生人数后,填入在for循环遍历学生的代码
当输入各科目的分数后的列表后,填入for循环遍历学生分数的代码
本关涉及的代码文件sumScore.py的代码框架如下:

studentnum = int(input())

请在此添加代码,填入for循环遍历学生人数的代码

* Begin _*#
#
_ End #
sum = 0
subjectscore = []
inputlist = input()
for i in inputlist.split(‘,’):
result = i
subjectscore.append(result)
#请在此添加代码,填入for循环遍历学生分数的代码
#
Begin _#
#
_ End ****

score = int(score)
sum = sum + score
print(“第%d位同学的总分为:%d” %(student,sum))
测试说明
本文的测试文件是sumScore.py,具体测试过程如下:

平台自动编译生成sumScore.py;
平台运行sumScore.py,并以标准输入方式提供测试输入;
平台获取sumScore.py输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step3/sumScore.py的样例测试集:
预期输入:

2
23,56,78,90
21,56,78,76,91

预期输出:

第0位同学的总分为:247
第1位同学的总分为:322

预期输入:

3
98,76,54
90,54,87,4
78,26,12,90

预期输出:

第0位同学的总分为:228
第1位同学的总分为:235
第2位同学的总分为:206

studentnum = int(input())

for student in range(studentnum):

    sum = 0
    subjectscore = []
    inputlist = input()
    for i in inputlist.split(','):
        result = i
        subjectscore.append(result)

    for score in subjectscore:

        score = int(score)
        sum = sum + score
    print("第%d位同学的总分为:%d" %(student,sum))

任务描述
迭代器就是用来循环访问一系列元素。迭代器不仅可以迭代序列也可以迭代不是序列但是表现出序列行为的对象。

本关的任务是让读者理解与学会使用迭代器。

相关知识
迭代器的优点
迭代器访问与for循环访问非常相似,但是也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势,因为迭代器在访问的时候会丢失数据索引值,但是如果遇到无法随机访问的数据结构如集合时,迭代器是唯一访问元素的方式。
迭代器仅仅在访问到某个元素时才使用该元素,在这之前,元素可以不存在,所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合。
迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问。
理解迭代器
可直接作用于for循环的数据类型如:list、tuple、dict等统称为可迭代对象:Iterable。可以使用方法isinstance()判断一个对象是否是可迭代对象。

例如:

from collections import Iterable
result = isinstance([],Iterable)
print(result)
result = isinstance((),Iterable)
print(result)
result = isinstance(‘python’,Iterable)
print(result)
result = isinstance(213,Iterable)
print(result)
结果为:

True
True
True
False
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象,直到对象访问完毕返回一个StopIteration异常。可以使用isinstance()判断一个对象是否是Iterator对象。
例如:

from collections import Iterator
result = isinstance([],Iterator)
print(result)
result = isinstance((),Iterator)
print(result)
result = isinstance((x for x in range(10)),Iterator)
print(result)
结果为:

False
False
True
所有的Iterable都可以通过iter()函数转化为Iterator。

定义迭代器
当自己定义迭代器时,需要定义一个类,类里面包含一个iter()函数,这个函数能够返回一个带next()方法的对象。
例如:

class MyIterable:
def iter(self):
return MyIterator()
class MyIterator:
def init(self):
self.num = 0
def next(self):
num += 1
if self.num >= 10:
raise StopIteration
return self.num
复制迭代器
迭代器当一次迭代完毕后就结束了,在此调用便会引发StopIteration异常。如果想要将迭代器保存起来,可以使用复制的方法:copy.deepcopy():x = copy.deepcopy(y),不可使用赋值的方法,这样是不起作用的。

如果你想了解更多运算符相关知识,请参考[美]Wesley J. Chun 著《Python核心编程》第八章。

编程要求
本关的编程任务是补全Book.py文件中的判断语句部分,具体要求如下:

当输入一个列表时,填入将列表List转换为迭代器的代码;
填入用next()函数遍历迭代器IterList的代码。
本关涉及的代码文件ListCalculate.py的代码框架如下:

List = []
member = input()
for i in member.split(‘,’):
result = i
List.append(result)

请在此添加代码,将List转换为迭代器的代码

* Begin _*#
#
_ End #
while True:
try:
#请在此添加代码,用next()函数遍历IterList的代码
#
Begin _#
#
_ End ****

result = int(num) * 2
print(result)
except StopIteration:
break
测试说明
本文的测试文件是ListCalculate.py,具体测试过程如下:

平台自动编译生成ListCalculate.py;
平台运行ListCalculate.py,并以标准输入方式提供测试输入;
平台获取ListCalculate.py输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step4/ListCalculate.py的样例测试集:

预期输入:

5,6,7,8,9

预期输出:

10
12
14
16
18

预期输入:

12,54,89,10,0

预期输出:

24
108
178
20
0

开始你的任务吧,祝你成功!

List = []
member = input()
for i in member.split(','):
    result = i
    List.append(result)

List=iter(List)

while True:
    try:

        num=next(List)

        result = int(num) * 2
        print(result)
    except StopIteration:
        break

第二章-Python语言基础-2.3循环(理)

任务描述
本关主题是通过解决简单问题,实践Python循环结构基础。
本关任务:仔细阅读背景知识,学习Python循环结构的语法构成及语义,学会循环结构如何编排语句的执行顺序,以及实际问题哪些解决方案需要用循环结构来表达。完成下面的实训。这些实训中,请在指定的位置编写程序,得到正确的输出。

相关知识
while循环:重复执行语句1~语句n,直到条件表达式不再成立退出循环
,
例:依次打印1-100,最后打印’end’
i=1
while i

while循环常和break一起使用,用于满足某一条件提前中止循环
while 条件表达式:

if 条件:
break
例: 在屏幕打印小于10的整数
i=1
while True:
print(i)
i+=1
if i>=10:
break

for循环:一般的使用方式类似while循环,不同的for与in一起使用来访问序列数据
for …in …:

if…

break
例: 在屏幕打印小于10的整数
for i in [1,2,3,4,5,6,7,8,9,10]:
print(i)
if i==10:
break

编程要求
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:

第1题
编程计算如下公式的值

1
2
+3
2
+5
2
+…+995
2
+997
2
+999
2

并输出结果

第2题
用while语句完成程序逻辑,求如下算法可以求根号x的近似值。(例如,x为3时,算法输出约为1.7320508)。

算法如下:

输入x,若x为负数,则输出”无实数解”,算法结束;

令g=x/2;

通过如下公式计算误差值,如果
∣x−g∗g∣

否则,将(g+x/g)/2作为新的猜测值,仍记为g。

重复步骤3和4

第3题:
用for循环完成下列程序,计算3位数的水仙花数
水仙花数是三位整数,且各位数字的立方之和等于该数,比如,因为
,
所以153是水仙花数。


"""
Created on Tue Sep  1 10:54:44 2020

@author: hzh
"""
from math import *

i = 1
s = 0

while i<1000:
    s=i**2+s
    i=i+2

print(s)

x = int(input())

if x<0:
    print('无实数解')
else:
    g = x/2

    while abs(x-g*g)>=10**(-6):
        g=(g+x/g)/2

    print("%.4f" %g)

for i in range(100,1000):
    x=str(i)
    if (int(x[0])**3+int(x[1])**3+int(x[2])**3)==i:
        print(i)

任务描述
本关任务:输出特殊的图形

相关知识
为了完成本关任务,你需要掌握:1.for循环,2.循环嵌套。

编程要求
根据提示,在右侧编辑器补充代码,输出下列图案 。

第1题:从键盘输入m行n列,在屏幕上输出m行n列的*行图案

例如输入6,7
输出为:
,

第2题:从键盘输入m行,在屏幕上输出m行的直角图案
例如输入:8
输出为:
,

第3题:从键盘输入m行,在屏幕上输出m行的等腰三角形图案
例如输入9
输出为:
,


"""
Created on Thu Feb 18 22:18:27 2021

@author: hzh
"""

m,n= eval(input())

for i in range(m):
    print('*'*n)

m=eval(input())

for i in range(m):
    print('*'*(2*i+1))

m=eval(input())

for i in range(m):
    print(' '*(m-i-1)+'*'*(2*i+1))

任务描述
本关任务:天天向上的力量。

相关知识(略)
编程要求
根据提示,在右侧编辑器补充代码,计算并输出结果。
一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1‰,当没有学习时由于遗忘等原因能力值相比前一天下降1‰。每天努力和每天放任,一年下来的能力值相差多少呢?
import math
dayup = math.pow((1.0 + 0.001), 365) # 每天提高0.001
daydown = math.pow((1.0 – 0.001), 365) # 每天荒废0.001
print(“向上: %.2f, 向下: %.2f.”%(dayup, daydown))
如果按5‰提高与下降对比一年的能力值相差多少呢?
import math
dayup = math.pow((1.0 + 0.005), 365) # 每天提高0.005
daydown = math.pow((1.0 – 0.005), 365) # 每天荒废0.005
print(“向上: %.2f, 向下: %.2f.”%(dayup, daydown))

任务一:俗语”三天打鱼两天晒网”,一年下来能力值又会是多少呢?请补全代码完成程序编写

三天打鱼两天晒网

dayup, dayfactor = 1.0, 0.01

请在下面编写代码

* begin * #

* End *

请不要修改下面的代码

print(“向上3天向下2天的力量: {:.2f}.”.format(dayup))

任务二:如果按工作日5天学习,周末2天休息每天相比前一天下降1%,工作日要努力到什么程度,一年后的水平才能与每天努力1%取得的效果一样呢?请补全代码完成程序编写。以0.001为dayfactor的增量值。

天天向上的力量

dayup, dayfactor = 1.0, 0.01
ddup= math.pow((dayup+dayfactor),365)
print(“天天向上的力量: {:.2f}.”.format(ddup))

请在下面编写代码

* begin *

* End *

请不要修改下面的代码

print(“{:.4f}.”.format(dayfactor))
print(dayfactor)

任务三:尽管每天坚持,但人的能力发展并不是无限的,它符合特定模型,假设能力增长符合以下模型:以7天为一周期,连续学习3天能力值不变,但从第4天开始至第7天每天能力增长为前一天的1%,如果7天中有一天间断学习,则周期从头计算,请编写程序,如果初始能力为1,固定每10天休息一天, 365天后能力值是多少,请补全代码完成程序编写。

任务三:天天向上续

from math import *
Restday = 10 #第10天为固定休息日,
dayup, dayfactor = 1.0, 0.01 #初始值

请在下面编写代码

* begin *

* End ***

请不要修改下面的代码

print(“dayup is {:.2f}”.format(dayup))


"""
Created on Wed Sep  2 09:49:56 2020

@author: hzh
"""
from math import *

dayup, dayfactor = 1.0, 0.01

dayup=(dayup-dayfactor)**146*(dayup+dayfactor)**219

print("{:.2f}.".format(dayup))

import math
dayup, dayfactor = 1.0, 0.01
ddup= math.pow((dayup+dayfactor),365)

dayfactor=((ddup/((dayup-0.01)**112)))**(1/253)-1

print("{:.4f}.".format(dayfactor))

from math import *
Restday = 10
dayup, dayfactor = 1.0, 0.01

restday=-3
for i in range(1,366):
    if i%9==0:
        restday=-3
    restday += 1
    if i%10==0:
        restday=-3
        continue
    if restday>0:
        dayup *= 1+dayfactor

print("{:.2f}".format(dayup))
  • – coding: utf-8 –
    “””
    Created on Tue Sep 1 11:25:23 2020

@author: hzh
“””
from random import *

第1题

list1=[6,8,10,20] #n的取值列表list1
numbers = [] #用来存放结果的

for n in list1: #依次从列表中取出数据赋值给n,求第n项的结果并保存到numbers[]列表中

请在下面编写代码

* Begin * #
f1=1
f2=1
if n==1:
f=1

if n>1:
    count=2
    while count<n: f="f1+f2" f1="f2" f2="f" count="count+1" numbers.append(f) < code></n:>

* End *

请不要修改下面的代码

print(numbers)
print(‘\n*****\n’)

第2题

numbers = []

请在下面编写代码

* Begin *

for x in range(0,301):
if x%20 and x%30 and x%5==0:
numbers.append(x)

x=x+1

* End * #
请不要修改下面的代码
print(numbers)

print(‘\n*****\n’)

第3题:输出100以内的素数。

numbers = [] #存放结果的列表

请在下面编写代码
* Begin * #
for i in range(2,101):

p=0
for j in range(2,int(i**0.5)+1):
    if i%j==0:
        p=1
        break
if p==0:
    numbers.append(i)

* End * #
请不要修改下面的代码
print(numbers)

print(‘\n*****\n’)

第4题求:1-3!+5!-7!…(-1)n-1(2n-1)!,求前n的项的和

number=[2,4,5,7,10] #n取值来自列表
result=[] #存放结果的程序
def jc(n):
if n==1:
return 1
else:
return jc(n-1) n
for n in number:
请在下面编写代码
#
* Begin * #
x1=0
for i in range(n):
x=(-1)
*(i) _jc(2_i+1)
x1=x+x1
result.append(x1)

* End *

请不要修改下面的代码
print(result)

print(‘\n*****\n’)

第5题 :求sin(x)的值

from math import *
Number=[pi,pi/2,pi/4] # x的取值
result=[]

for x in Number:
i=1
s=0

请在下面编写代码

* Begin * #
while abs(x(2 _i-1)/jc(2_i-1))>=1e-7:
a=((-1)
(i-1))(x*(2 _i-1))/jc(2_i-1)
s=s+a
i=i+1

result.append(s)
********** End ********** #

for num in result:
print(“output=%.10f” %num)
请不要修改下面的代码
print(‘\n*****\n’)

第6题 #求数列队中两个数的最大公约数

Number = [(8,6),(12,18),(15,8),(100,75)]
greatcd = [] #保存最大公约数
for a,b in Number:

&#x8BF7;&#x5728;&#x4E0B;&#x9762;&#x7F16;&#x5199;&#x4EE3;&#x7801;
********** Begin ********** #
m=min(a,b)
for i in range(m,0,-1):
    if a%i==0 and b%i==0:

        greatcd.append(i)
        break
********** End ********** #
&#x8BF7;&#x4E0D;&#x8981;&#x4FEE;&#x6539;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x7801;

print(‘最大公约数为:’)

print(greatcd)

print(‘\n*****\n’)


"""
Created on Tue Sep  1 11:25:23 2020

@author: hzh
"""
from random import *

list1=[6,8,10,20]
numbers = []

for n in list1:

    f1=1
    f2=1
    if n==1:
        f=1

    if n>1:
        count=2
        while count<n:
            f=f1+f2
            f1=f2
            f2=f
            count=count+1
        numbers.append(f)

print(numbers)
print('\n***********************\n')

numbers = []

for x in range(0,301):
    if x%2==0 and x%3==0 and x%5==0:
        numbers.append(x)

    x=x+1

print(numbers)

print('\n***********************\n')

numbers = []

for i in range(2,101):

    p=0
    for j in range(2,int(i**0.5)+1):
        if i%j==0:
            p=1
            break
    if p==0:
        numbers.append(i)

print(numbers)

print('\n***********************\n')

number=[2,4,5,7,10]
result=[]
def jc(n):
    if n==1:
        return 1
    else:
        return jc(n-1)*n
for n in number:

    x1=0
    for i in range(n):
        x=(-1)**(i)*jc(2*i+1)
        x1=x+x1
    result.append(x1)

print(result)

print('\n***********************\n')

from math import *
Number=[pi,pi/2,pi/4]
result=[]

for x in Number:
    i=1
    s=0

    while abs(x**(2*i-1)/jc(2*i-1))>=1e-7:
        a=((-1)**(i-1))*(x**(2*i-1))/jc(2*i-1)
        s=s+a
        i=i+1

    result.append(s)

for num in result:
    print("output=%.10f" %num)

print('\n***********************\n')

Number = [(8,6),(12,18),(15,8),(100,75)]
greatcd = []
for a,b in Number:

    m=min(a,b)
    for i in range(m,0,-1):
        if a%i==0 and b%i==0:

            greatcd.append(i)
            break

print(greatcd)

print('\n***********************\n')

实验3-2 Python基础-循环结构

任务描述
程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次。本次任务要求是认真阅读相关知识部分,完成相应题目。

第一题:
补充程序,用循环语句完成程序,输出[1,3000)的所有同时为3、5和7的倍数的数。

第二题:
计算e的近似值。编写程序,根据近似公式e≈1+1/(1!)+1/(2!)+1/(3!)+…+1/(n!)计算e的近似值,要求直至最后一项的值小于10的负七次方为止。

相关知识
Python中循环结构
for循环:
for循环在Python中是一个通用的迭代器,可以遍历任何有序的序列对象内的元素。for语句可用于字符串、列表、元组、文件等可迭代对象。for循环格式如下:

for

while循环
while循环格式:

while

Python中循环控制语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:

控制语句 描述
break语句 在语句块执行过程中终止循环,并且跳出整个循环
continue语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass语句 pass是空语句,是为了保持程序结构的完整性。
编程要求
补全代码,完成上述题目,直接print()每道题目的答案,每个答案占一行,中间不能空行。

注:请不要直接print()每道题目的最终答案,一经发现将取消整个题目的成绩!

平台会对你编写的代码进行测试。

import math

for i in range(1,3000):
    if i%3==0 and i%5==0 and i%7==0:
        print(i)

print('\n***********************\n')

s, y, i=1, 1, 1

def jc(n):
    if n==1:
        return 1
    else:
        return jc(n-1)*n
while i/jc(i)>=1e-7:
    y=1/jc(i)
    s=y+s
    i+=1

print("e值为{:.6f}".format(s))

任务描述
本关任务:编写一个能求两个正整数的最大公约数和最小公倍数的小程序。

编程要求
根据提示,在右侧编辑器补充代码,求最大公约数和最小公倍数。
从键盘输入两个整数,编写程序求出这两个整数的最大公约数和最小公倍数(提示:求最大公约数可用辗转相除法,求最小公倍数则用两数的积除以最大公约数即可)

测试说明
平台会对你编写的代码进行测试:

测试输入:
75
45;

预期输出:
最大公约数15 最小公倍数225.0


x=eval(input("请输入一个整数"))
y=eval(input("请输入另一个整数"))
m, n = x, y
if x < y:
    x,y = y,x
r = x % y

while r!=0:
    x,y=y,r
    r=x%y

print("\n最大公约数{} 最小公倍数{}".format(y,m*n/y))

任务描述
本关任务:编写一个能统计字符个数的小程序。

编程要求
根据提示,在右侧编辑器补充代码,统计不同字符个数。用户输入一行字符,编写一个程序,统计并输出里面英文字母、数字、空格和其他字符的个数。

测试说明
平台会对你编写的代码进行测试:

测试输入:123ABCabc;
预期输出:
数字字符3个,英文字符5个,空格0个,其他字符0个

开始你的任务吧,祝你成功

s=input("请输入一串字符")
sz,zm,kg,qt=0,0,0,0

sz=0
zm=0
kg=0
qt=0
for i in range(len(s)):
    if 48ord(s[i])57:
        sz=sz+1
    elif 65ord(s[i])122:
        zm=zm+1
    elif ord(s[i])==32:
        kg=kg+1
    else:
        qt=qt+1

print("\n数字字符{}个,英文字符{}个,空格{}个,其他字符{}个".format(sz,zm,kg,qt))

任务描述
本关任务:编写一个能统计一组数据特征的小程序。

编程要求
根据提示,在右侧编辑器补充代码,进行数据统计。从键盘输入若干个1-100之间的整数,求这些数的和、个数、平均值、最大值、最小值。若输入0,则输入结束,显示统计结果。若输入不符合要求的数,则显示输入错误。

测试说明
平台会对你编写的代码进行测试:

测试输入:4,91,51,2,32,0;
预期输出:
共有数5个,和180,平均值36.0,最大值91,最小值2

测试输入:5,-90,90,0;
预期输出:
输入错误
共有数2个,和95,平均值47.5,最大值90,最小值5

print('"数据特征统计,请输入整数(1-100)"')
x = eval(input())
s,c,maxx,minn,pj=0,0,1,100,0
array=[]

while x!=0:
    if x<1 or x>100:
        print('输入错误')
    else:
        c=c+1
        s=x+s
        array.append(x)
    pj=s/c
    x=eval(input())
maxx=max(array)
minn=min(array)

print("\n共有数{}个,和{},平均值{},最大值{},最小值{}".format(c,s,pj,maxx,minn))

任务描述
本关任务:编写一个能计算sinx的小程序。

测试说明
平台会对你编写的代码进行测试:

测试输入:0;
预期输出:
sin(0.00)=0.00

测试输入:1.57;
预期输出:
sin(1.57)=1.00

n = 1
x = eval(input('请输入'))

def jc(n):
    if n==1:
        return 1
    else:
        return jc(n-1)*n
i=1
s=0
while abs((-1)**(i+1)*x**(2*i-1)/jc(2*i-1))>=1e-7:
    a=(-1)**(i+1)*x**(2*i-1)/jc(2*i-1)
    s=a+s
    i+=1

print('\nsin({:.2f})={:.2f}'.format(x,s))

第二章-Python语言基础-2.3循环(二)

partcount = int(input())
electric = int(input())
count = 0

请在此添加代码,当count < partcount时的while循环判断语句

* Begin _*#
while(count
_ End #
count += 1
print(“已加工零件个数:”,count)
if(electric):
print(“停电了,停止加工”)
#请在此添加代码,填入break语句
#
Begin _#
break
#
_ End ****


"""
Created on Tue Sep  8 06:29:54 2020

@author: hzh
"""

year = int(input())

if (year%4==0 and year%100!=0) or year%400==0:
    print('yes')

else:
    print('no')

month = int(input())

if month==4 or month==6 or month==9 or month==11:
    print('yes')

else:
    print('no')

scores = int(input())
grade = '0'

if scores>=90:
    garde='A'

elif 60scores89:
    grade='B'

else:
    grade='C'

print(grade)

velocity = int(input())

rank = 0

if 74velocity95:
     rank=1

elif 96velocity110:
     rank=2

elif 111velocity130:
     rank=3

elif 131velocity154:
     rank=4

elif velocity>=155:
     rank=5

else:
    rank=0
print(rank)

根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:

第1题
摄氏温度转换为华氏温度的公式是:F=
5
9

C+32,热力学上的绝对零度相当于摄氏-273.15℃,低于这个温度意义不大。请完成程序,将有意义的摄氏温度转换成对应的华氏温度,如果是无意义的数据结果输出为None。

第2题
请编写程序,计算给定的实数的绝对值。(要求:不准使用abs函数)

第3题
请完成程序,对给定的一对整数,按从小到大排序。

第4题
请完成程序,对给定的三个整数,按从小到大排序。

第5题
请完成程序,对给定的一对整数,计算第一个数除以第二个数的结果,结果是实数。

第6题
请完成程序,对给定的三个实数,假设第一个实数是二次项系数、第二个是一次项系数、第三个是常数项,请计算以这三个实数为系数的一元二次方程的实根,若方程无实根, 输出为None。

第7题
请完成程序,实现以下函数f的计算能力,对给定的x值,计算正确的f(x)结果。
f(x)=

























x−2
x+3
x
2

∣x∣
x
3

3x−4
4x+1

−10⩽x


"""
Created on Tue Sep  8 07:49:34 2020

@author: hzh
"""

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)

for temp in [-280, -100, 0, 20, 120, 200]:

    if temp<-273.15:
        F=None
    else:
        F=9*temp/5+32

    print_(F)

print('\n***********************\n')

for number in [-101.23, -3.14, 0, 12.55, 1908]:

    if number<0:
        number=0-number

    print_(number)

print('\n***********************\n')

for (num1, num2) in [(12, 34), (-6, -7),(-12, 23), (-273, 0), (0, 199)]:

    if num1>num2:
        num1,num2=num2,num1

    print(num1, '  ', num2)

print('\n***********************\n')

for (num1, num2, num3) in [(-231, -321, 123), (100, 0, -99), (-980, -1002, -1), (6,1,2017)]:

    if num1<num2:
        if num3<num2:
            num2,num3=num3,num2
    if num2<num1:
        if num1<num3:
            num1,num2=num2,num1
        elif num3<num2:
            num1,num2,num3=num3,num2,num1
        else:
            num1,num2,num3=num2,num3,num1

    print(num1, num2, num3)

print('\n***********************\n')

for (num1, num2) in [(10, 5), (12,34), (89,0), (-100, 23), (789, -123)]:

    if num2==0:
        print('None')
    else:
        result=num1/num2

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

    x=b**2-4*a*c
    if x>=0:
        root1=(-b+x**0.5)/2*a
        root2=(-b-x**0.5)/2*a
    else:
        root1=None
        root2=None

    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]:

    if -10x<-8:
        fx=x-2
    if -8x<-6:
        fx=x+3
    if -6x-2:
        fx=x**2
    if -2<x<2:
        fx=abs(x)
    if 2x4:
        fx=x**3
    if 4<x6:
        fx=3*x-4
    if 6<x8:
        fx=4*x+1

    print_(fx)

根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:

第一题:BMI 问题的求解
请完成程序,根据下图表格,计算国内与国际BMI的值
,
已知某人的体重和身高,根据上表计算国内与国外的BMI,并输出结果。
提示:BMI= 体重/(身高的平方)
第二题:个人所得税的计算问题
在指定位置编写代码,实现一个函数,功能是根据下表计算个人所得税。
,
注:具体输出请查看测试集。

第三题:剪刀石头布的游戏问题
1、编写程序实现:剪刀、石头和布的游戏。
规则说明:1)两个人出的相同的为平局;
2)布胜过石头,石头胜过剪刀,剪刀胜过布。
提示:玩家:p1,p2
‘剪刀”石头”布’= ‘j’,’s’,’b’
结果: 0:平局,1:p1胜,-1:p1负


"""
Created on Fri Aug 28 15:27:35 2020

@author: hzh
"""

for (Weight,Height) in [(60,1.65),(40,1.60),(80, 1.70),(75,1.83),(88,1.80)]:
    bmi = Weight / pow(Height, 2)
    wto, dom = " ", " "

    if bmi<18.5:
        wto="偏瘦"
        dom="偏瘦"
    if 18.5bmi25:
        wto="正常"
    if 18.5bmi24:
        dom="正常"
    if 25<bmi<30:
        wto="偏胖"
    if 24<bmi<28:
        dom="偏胖"
    if bmi>=30:
        wto="肥胖"
    if bmi>=28:
        dom="肥胖"

    print("BMI 指标为:国际'{0}', 国内'{1}'".format(wto, dom))
print('\n******************************\n')

for salary in [-1000, 0, 40000, 47450, 98000, 114650, 14980, 17470, 25670, 311950, 360000]:

    if 0salary47449:
        salaTax=0.22*salary
    elif 47450salary114649:
        salaTax=0.25*salary
    elif 114650salary174699:
        salaTax=0.28*salary
    elif 174700salary311949:
        salaTax=0.33*salary
    elif salary>=311950:
        salaTax=0.35*salary
    else:
        salaTax=0

    print("%.4f" %salaTax)
print('\n***********************\n')

for (p1, p2) in [('s', 'j'), ('b', 'j'),('j', 'j'), ('b', 's')]:

    if p1==p2=='j' or p1==p2=='s' or p1==p2=='b':
        game=0
    elif (p1=='j' and p2=='b') or (p1=='s' and p2=='j') or (p1=='b' and p2=='s'):
        game=1
    else:
        game=-1

    print(game)
print('\n***********************\n')

实验五 循环结构

任务描述
本关任务:编写一个能计算斐波那契数列中第x个数的小程序。

相关知识
为了完成本关任务,你需要掌握:1.什么是斐波那契数列,2.for循环

什么是斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、
因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为”兔子数列”。
有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,每个月的兔子数形成的数为斐波那契额数列
在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n – 1)+F(n – 2)(n ≥ 3,n ∈ N*)
斐波那契

for循环
在python中,对于for循环,可以设置遍历结构为range函数
for i in range(初值,终值):

编程要求
根据提示,在右侧编辑器补充代码,输入x,输出第x个斐波那契数列。
注意:斐波那契数列的第一项和第二项为1

测试说明
平台会对你编写的代码进行测试:

测试输入:6
预期输出:
8

测试输入:1;
预期输出:
1
测试输入:10;
预期输出:
55

x=eval(input(""))

a,b=0,1

for i in range(x):
    a,b=b,a+b
print(a)

任务描述
本关任务:编写一个小程序,输入一段英文短语,统计其中的单词数目和句子数目。

相关知识
为了完成本关任务,你需要掌握:1.如何判断英文语句中的单词数和句子数,2.如何遍历字符串。

获取判断英文语句中的单词数目和句子数目
要统计词语的数量,则统计当前字符是大写或小写英文字母,而前一个字符是空格或标点符号(句号(.)惊叹号(!)问号(?)逗号(,)分号(;)双引号(“”))等的数目。
例如,输入英文短语如下,统计结果为57个单词和3个句子。
提示:对字符串的每个字符ch循环,若ch是句号(.)惊叹号(!)问号(?)时,则表示句子数的变量加一。若ch是大小写英文字母,且前一个字符是指定标点时,表示词语数的变量加一。前一个字符可以用一个变量保存,只要在循环语句的最后将ch赋值给该变量即可。提示:对于第一个字符,可以设置其前一个字符为空格。
句子判断

遍历字符串
for c in s:

从字符串s中逐一提取字符,放在字符变量c中,
对于所提取的每个字符执行一次循环体

编程要求
根据提示,在右侧编辑器补充代码,统计输入的英文中的单词数目和句子数目。

测试说明
平台会对你编写的代码进行测试:

测试输入:The government of Beijing has spent a large amount of money on building these bridges. For their own safety, pedestrians should be encouraged to use them instead of risking their lives by dashing across the road. Old people , however , may find it a little difficult climbing up and down the steps, but it is still much safer than walking across the road with all the danger of moving traffic.

预期输出:
单词69句子3

测试输入:One morning a fox saw a cock.He thought,”This is my breakfast.” He came up to the cock and said,”I know you can sing very well.Can you sing for me?”
预期输出:
单词33句子4

提示:
可以用一个字符变量保存前一个字符(当前字符前的字符)

x=input()

x=" "+x

a=" "
cy=0
jz=0
for i in x:
    if str.isalpha(i) is True and a in' .!?,;"':
        cy=cy+1
    a=i
for i in x:
    if i in'.!?':
        jz=jz+1

print("单词{}句子{}".format(cy,jz))

任务描述
本关任务:输入用户名和密码,根据密码文件中所记录的用户名和密码信息,判断登录信息是否正确

密码文件的信息如下所示,每行显示逗号分隔的姓名和密码
甲乙,11111111
陈二,76895409
张三,12345678
李四,87654321
王五,88888888
赵六,99999999
欧阳小七,42110198

相关知识
为了完成本关任务,你需要掌握:1.如何打开文件,2.如何遍历文件,3.如何截取字符串。

打开文件

打开一个文件,并创建一个file类对象
文件名在当前文件夹下,直接输入文字的名字
当以读的方式打开文件时,设置打开模式为”r”

遍历文件
遍历结构是文件
遍历文件fi的每一行
for line in fi:

注意:line字符串的结尾为换行符’\n’

截取字符串
str.find(指定字符)返回指定字符在字符串str的索引pos
str[:pos]是该字符串中该字符以前的子串
str[pos+1:]是该字符串中该字符以后的子串

编程要求
根据提示,在右侧编辑器补充代码,实现检测用户名和密码的功能。
注意:str.strip(‘\n’)去掉字符串首尾的换行符

测试说明
平台会对你编写的代码进行测试:

测试输入:
用户名张三
密码129876543

预期输出:
用户名或密码错误

测试输入:
用户名甲乙
密码11111111

预期输出:
密码正确

测试输入:
用户名刘好
密码129876543

预期输出:
用户名或密码错误

f1=open("sy5/密码.txt","r",encoding="utf-8")
x=input("用户名")
y=input("密码")
flag=0
for line in f1:
    line=line.strip("\n")
    pos=line.find(",")
    if(x==line[:pos] and y==line[pos+1:]):
        print("密码正确")
        flag=1
        break
if flag==0:
    print("用户名或密码错误")

任务描述
本关任务: 编写程序,根据近似公式
e≈1+1/(1!)+1/(2!)+1/(3!)+… +1/(n!)
计算 e 的近似值,要求直至最后一项的值小于 1e-7 次方为止

相关知识
为了完成本关任务,你需要掌握:while循环

while循环
while

编程要求
根据提示,在右侧编辑器补充代码,输出自然常数e的值。
根据近似公式
e
计算 e 的近似值,要求直至最后一项的值小于 1e-7 为止

s=1

def jc(n):
    if n==1:
        return 1
    else:
        return jc(n-1)*n
a=1
while 1/jc(a)>=1e-7:
    s=s+1/jc(a)
    a+=1

print("e值为{:.8}".format(s))

任务描述
本关任务:编写一个使用双倍余额递减法计算固定资产折旧的小程序。

相关知识
为了完成本关任务,你需要掌握:双倍余额递减法进行固定资产折旧的规则

双倍余额递减法是在不考虑固定资产预计净残值的情况下,根据每年年初固定资产净值和双倍的直线法折旧率计算固定资产折旧额的一种方法。它的基本规则是:以固定资产使用年数倒数的2倍作为它的年折旧率,以每年年初的固定资产账面余额作为每年折旧的计算基数,但由于在固定资产折旧的初期和中期时不考虑净残值对折旧的影响,为了防止净残值被提前一起折旧,因此现行会计制度规定,在固定资产使用的最后两年中,折旧计算方法改为平均年限法,即在最后两年将固定资产的账面余额减去净残值后的金额除以2作为最后两年的应计提的折旧。
例:某医院有一台机器设备原价为600000元,预计使用寿命为5年,预计净残值24000元。
年折旧率=2/5=40%

第一年应提的折旧额=60000040%=240000元
第二年应提的折旧额=(600000-240000)
40%=144000元
第三年应提的折旧额=(600000-240000-144000)*40%=86400元
第四、五年每年应提的折旧额=(600000-240000-144000-86400-24000)/2=52800元
编程要求
根据提示,在右侧编辑器补充代码,计算并输出每年的折旧额。

测试说明
平台会对你编写的代码进行测试:

测试输入:
原价80000
残值2000
年限15

预期输出:
第 1年折旧10666.67
第 2年折旧9244.44
第 3年折旧8011.85
第 4年折旧6943.60
第 5年折旧6017.79
第 6年折旧5215.42
第 7年折旧4520.03
第 8年折旧3917.36
第 9年折旧3395.04
第10年折旧2942.37
第11年折旧2550.06
第12年折旧2210.05
第13年折旧1915.38
第14年折旧5224.97
第15年折旧5224.97

注意 年号显示为2位 折旧额保留两位小数

yj=eval(input("原价"))
cz=eval(input("残值"))
n=eval(input("年限"))
s=2/n
y=0
h=0
for i in range(1,n-1):
    y=(yj-h)*s
    h=h+y
    print("第{:2d}年折旧{:.2f}".format(i,y))
for i in range(n-1,n+1):
        Y=(yj-h-cz)/2
        print("第{:2d}年折旧{:.2f}".format(i,Y))

任务描述
本关任务:循环输入商品编号、数量和价格,进行累加。
只到输入商品编号为0000为止。
输出商品种类、数量总计和金额总计。

测试说明
平台会对你编写的代码进行测试:

测试输入
输入商品代码0101
输入商品价格5
输入商品数量2
输入商品代码0103
输入商品价格10
输入商品数量5
输入商品代码9999
输入商品价格2
输入商品数量1
输入商品代码0000
预期输出
商品种类3数量总计8金额总计62.00

spbh=input("输入商品代码")
s=0
c=0
sl=0

while spbh!='0000':
    c=c+1
    jg=eval(input("输入商品价格"))
    SL=eval(input("输入商品数量"))
    sl=SL+sl
    spbh=input("输入商品代码")
    s=s+SL*jg

print("商品种类{}数量总计{}金额总计{:.2f}".format(c,sl,s))

任务描述
本关任务:编写一个计算投资年限的小程序
某客户每年年初在银行存入一笔固定金额的钱m,在年底,将本金和利息取出.在第二年年初,将该笔钱与新存入的钱m一起,再存入银行。输入每年存款m、年利率r,再输入用户要得到的金额x,计算该客户需要存放多少年y才能得到需要的金额。
例如,输入存款10000,年利率0.1,金额100000,输出7
输入存款50000,年利率0.05,金额500000,输出8。

m=eval(input("存款"))
r=eval(input("年利率"))
x=eval(input("金额"))

n=0
s=0
k=m
while s<x:
    s=k*(1+r)
    k=m+s
    n=n+1

print(n)

本关任务:
在唐诗.txt文件,如下图所示。每首诗的标题为序号诗人冒号诗名。
唐诗
编写程序,输入诗人姓名,显示该诗人所写的诗的标题,以及作品数,如图所示。
如果该诗人没有作品,显示无作品。
唐诗作者统计

f1=open("sy5//唐诗.txt","r")
x=input("输入作者")

n=0
for line in f1:
    line=line.strip("\n")
    pos=line.find(":")
    if x==line[3:pos]:
        print(line)
        n+=1
if n==0:
    print("无作品")
else:
    print("作品数",n)

实验6 多重循环

任务描述
本关任务:编写一个能输出九九乘法表的小程序。

相关知识
为了完成本关任务,你需要掌握:1.如何循环嵌套。

编程要求
根据提示,在右侧编辑器补充代码,计算如下图所示的两种形式的九九乘法表。
,
注意:每行中,各项之间用一个”\t”分隔。

测试说明


for i in range(1,10):
    print('\t' * (9 - i), end='')
    for j in range(1,i):
        print(i,'*',j,'=',i*j,'\t',sep='',end='')
    print(i,'*',i,'=',i*i,'\t',sep='')
print()
for i in range(1,10):
    for j in range(1,10-i):
        print(i,'*',j,'=',i*j,'\t',sep='',end='')
    print(i,'*',10-i,'=',i*(10-i),'\t',sep='')

任务描述
本关任务:求给定范围内的所有素数的和。
素数:素数又称质数(prime number),除了1和它自身外,不能被其他自然数整除的数。

测试说明
平台会对你编写的代码进行测试:

测试输入:10
预期输出:
17


n = eval(input())

s=0

for i in range(2,n+1):
    p=1
    x=int((i+1)**0.5)
    for j in range(2,x+1):
        if i%j==0:
            p=0
            break
    if p==1:
        s=s+i

print(s)

任务描述
本关任务:编写一个能计算给定范围内完全数的小程序。

相关知识
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的因子之和,则称该数为”完全数”。
第一个完全数是6,6=1+2+3。第二个完全数是28,28=1+2+4+7+14。

编程要求
根据提示,在右侧编辑器补充代码,计算并输出指定范围内的完全数。程序从测试集中读取到数据范围n,求n以内所有完全数,每行输出一个数据。

测试说明
平台会对你编写的代码进行测试:

测试输入:10;
预期输出:
6是完全数

测试输入:100;
预期输出:

6是完全数
28是完全数


n = eval(input())
for i in range(2,n+1):

    s=0
    for j in range(1,i):
        if i%j==0:
            s=s+j
    if s==i:
        print(i,'是完全数',sep='')

任务描述
有100石粮食,每匹大马驮2石,每匹中马驮1石,每两匹小马驮1石,要用100匹马驮完100石粮食,共有多少种驼法?要求每种马至少一匹。

编程要求
根据提示,在右侧编辑器Begin-End间补充代码,计算并输出百马百石问题的所有解。每种解法输出一行,注意标点符号全部为中文格式。

测试说明
平台会对你编写的代码进行测试:

预期输出前3行如下:

第1种分配方法:大马:1匹,中等马:97匹,小马:2匹
第2种分配方法:大马:2匹,中等马:94匹,小马:4匹
第3种分配方法:大马:3匹,中等马:91匹,小马:6匹
开始你的任务吧,祝你成功!

我们能做的就是拼尽全力,即使迈出的步子再小,我们也


count = 0

for i in range(1,50):
    for j in range(1,100):
        for k in range(2,101,2):
            if i+j+k==100 and 2*i+j+k/2==100:
                count+=1
                print('第',count,'种分配方法:大马:',i,'匹,中等马:',j,'匹,小马:',k,'匹',sep='')

print('共有{}种方法'.format(count))

任务描述
本关任务:编写一个能计算分解质因数小程序。

编程要求
根据提示,在右侧编辑器补充代码,计算并输出一个正整数(大于1)的质因数。例如:输入90,输出90=2 _3_3*5。输入2,输出2=2。输入17,输出17=17。

解答提示:
(1)先将n用变量fac保存。后面因式分解用fac进行。
(2)用筛选法从最小的质数2开始,判断2是否fac的因子。如果是,输出质因子2,并将fac/2->fac,再判断是否有因子2,如此循环,直到当前fac中没有因子2,就找出所有的因子2。这部分用while循环实现。
(3)然后再找质数3是否是当前fac的因子,直到n。把从2到n的所有数测试一遍,查找n的因子。
(4)对输出格式要注意,输出的第一个因子是直接输出数值,从第二个因子开始输出时数值前面有*号。判断第一个因子的方法是fac==n。

测试说明
平台会对你编写的代码进行测试:

测试输入:90;
预期输出:
90=2 _3_3*5

测试输入:2;
预期输出:


n = int(input())
fac = n
print('{}='.format(n),end='')

m=[]
i=2
while in:
    if n%i==0:
        m.append(str(i))
        n=n/i
    else:
        i=i+1
print('*'.join(m))

任务描述
本关任务:由测试集输入一个大写字母(A 到 Z 中的任意一个),输出如下图所示由相关大写字母组成的图形。
,

解答提示:

打印图案关键是找出其中的规律与关系。对于输入的字母,首先算出需要打印几行,再算出每行打印多少列。
实际上,输出的每一行包括三部分组成:空格、字符串和换行。每行的空格数+字符串都相同,都等于行数。
测试说明
平台会对你编写的代码进行测试:

测试输入:D
预期输出:

DCBA
CBA
BA
A


ch = input()

for i in range(1,ord(ch)-63):
    print(' ' * (i-1), end='')
    for j in range(i,ord(ch)-63):
        print(chr(ord(ch)-j+1),end='')
    print("")

Original: https://blog.csdn.net/SUOLONG1/article/details/126713912
Author: 勤奋努力的野指针
Title: 湖南大学python头歌实训-循环语句

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/730304/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 微博的版本控制还真是问题多多

    微博的版本控制还真是问题多多。 无法正常通过微博界面找到取消授权某些用微博自动登录绑定的第三方网站或app的位置! 折腾了好久,才找到解决方法:到 应用广场-我的应用 进行操作! …

    Python 2023年6月3日
    068
  • Python—-数据分析-使用scikit-learn构建模型

    Python—-数据分析-使用scikit-learn构建模型 scikit-learn库整合了许多机器学习算法,可以帮助使用者在数据分析过程中快速建立模型,且模型接口…

    Python 2023年5月24日
    066
  • numpy和torch函数使用

    2、 np.reshape()和torch.view()_dspeia的博客-CSDN博客 3、 torch.max()与numpy.max()函数_xulei_zhai@163….

    Python 2023年8月26日
    044
  • 用matplotlib写游戏必须的代码

    from matplotlib import pylab%pylab%matplotlib notebookimport matplotlib.pyplot as pltfrom …

    Python 2023年9月3日
    045
  • 什么是微服务(通俗易懂)

    其实网上有很多关于微服务介绍的博客,虽然多,也全,但是有一些对于新手来说不太友好,所以该篇文章我就本着: 简单,通俗,一步到位的介绍一下什么是微服务 就两句话 (1)微服务就是一种…

    Python 2023年10月1日
    032
  • #yyds干货盘点#python抽象工厂模式

    当您想要分组替换生成的产品时,可以考虑使用抽象工厂模式,如下图所示 [En] When you want to replace the generated product in g…

    Python 2023年5月24日
    049
  • python 属性错误_如何解决属性错误?

    就像我之前说的,我的代码(或者我目前正在做的项目)充满了错误。到目前为止,我至少解决了十几个错误,老实说,我只是放弃了。我是说上帝知道还有多少人。在 目前我遇到的问题是一个Attr…

    Python 2023年9月23日
    026
  • 【完虐算法】「字符串-最长公共子序列」全面总结

    你好!我是Johngo! LeetCode专题「字符串」现在准备到了 5 期内容来啦。 [TencentCloudSDKException] code:FailedOperatio…

    Python 2023年6月3日
    080
  • html css中有哪些属性可以继承,哪些不可以继承

    css样式表继承指的是,特定的css属性向下传递到后代元素 为了看到继承的实际应用,我们将使用下面的HTML代码。 <p> <em> 继承em> p&…

    Python 2023年6月11日
    099
  • 简单的使用java操作hdfs

    一:创建maven项目 导入maven org.apache.hadoop hadoop-hdfs 2.7.6 org.apache.hadoop hadoop-common 2….

    Python 2023年6月16日
    066
  • 【matplotlib绘图自学操作(1)】

    matplotlib绘图自学操作(1) 这是一个重要的绘图库:进行数据可视化(仿照matlab做图标与数据可视化)先上视频课程系列链接(哔哩哔哩) 折线图 axis:坐标轴引例:假…

    Python 2023年9月5日
    059
  • 远程配置深度学习服务器详细教程,配置Conda+PyTorch环境

    进入实验室以后,大家就会用实验室的服务器跑一些深度学习模型。如何连接服务器,以及连接服务器后如何配置conda和PyTorch深度学习框架,在此进行详细的介绍。 首先,在连接服务器…

    Python 2023年9月8日
    033
  • BEVFormer-accelerate:基于EasyCV加速BEVFormer

    作者:贺弘 夕陌 谦言 临在 导言 BEVFormer是一种纯视觉的自动驾驶感知算法,通过融合环视相机图像的空间和时序特征显式的生成具有强表征能力的BEV特征,并应用于下游3D检测…

    Python 2023年9月15日
    040
  • 第五章:Flask数据库操作

    第五章:Flask 数据库操作 1、SQLALchemy 的介绍 SQLAlchemy 是 Python 中一个通过 ORM 操作数据库的框架。 SQLAlchemy对象关系映射器…

    Python 2023年8月10日
    064
  • Windows Server 开启远程桌面

    工作中不可避免地经常要用到WindowsServer,为了使用的方便,配置了远程桌面,这里记录一下远程桌面配置过程中遇到的一些问题以及解决方法。 Windows Server200…

    Python 2023年6月11日
    083
  • 自动化测试框架pytest系列一

    各位小伙伴们,大家好,今天给大家带来的pytest方面的干货,超详细。 大家在编写自动化测试脚本的时候都会用到测试框架,pytest就是其中一种,而且是超级好用,好学的一种,它的优…

    Python 2023年9月11日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球