Python循环训练

第1关:正整数n以内累加求和

任务描述


本关任务:输入一个正整数n,利用循环的方法实现:
1.求n以内所有奇数和(包含n)
2.求n以内所有偶数和(包含n)
输出为:奇数和和偶数和,以空格隔开。

测试说明


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

测试输入:10
预期输出:25 30

测试输入:100
预期输出:2500 2550

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

###begin
n = int(input())
x = y = 0
for i in range(n + 1):
    if i % 2 == 0:
        x += i
    else:
        y += i
print(y, x)
###end

第2关:整数的条件判断

任务描述


本关任务:
1.求[1,100]内能被7整除,但不能同时被5整除的所有整数。
2.求500以内能被17整除的最大正整数。

测试说明


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

测试输入:无
预期输出:

7,14,21,28,42,49,56,63,77,84,91,98
493

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

###begin
x = []
for i in range(101):
    if i % 35 != 0 and i % 7 == 0:
        x.append(i)
y = ','.join(map(str, x)) #将列表x中的每个元素转换成字符串,然后用','拼接起来
print(y)
for i in range(500, 0, -1): #倒序更容易完成要求
    if i % 17 == 0:
        print(i)
        break
###end

第3关:素数判断

任务描述


本关任务:输入一个正整数x,请判断其是否为素数。

相关知识


素数定义:只能被1和自身整除的整数。最小的素数是2。

测试说明


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

测试输入:

4


预期输出:

False

测试输入:

11


预期输出:

True

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

###begin
def is_zhishu(t):
    if t <= 1:
        return False
    for i in range(2, t):
        if t % i == 0:
            return False
    return True
#本来不想用函数嵌套的,但感觉没啥更简洁的写法

t = int(input())
print(is_zhishu(t))
###end

第4关:循环之序列解包

相关知识


Python 中有很多很实用的语法,这些语法可以帮助我们简化代码、更易理解等优点,特别实用的语法序列解包示例如下。

这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中。

解包的使用还可以利用 * 表达式获取单个变量中的多个元素,只要它的解释没有歧义即可。如获取剩余部分:


获取中间部分:

如果左值比右值要多,那么带 * 的变量默认为空


嵌套解包:


编程要求


根据提示,在右侧编辑器补充代码,输出如下格式:
测试输入:

ABCDEFGH


输出格式:

A ['B', 'C', 'D', 'E', 'F', 'G', 'H']
B ['C', 'D', 'E', 'F', 'G', 'H']
C ['D', 'E', 'F', 'G', 'H']
D ['E', 'F', 'G', 'H']
E ['F', 'G', 'H']
F ['G', 'H']
G ['H']
H []

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

###begin
s = input()
n = len(s)
S = []
for i in range(n):
    S.append(s[i]) #先将s中的每个字符存到S中
for i in range(n):
    print(s[i], end=" ") #注意这里要留一个空格
    S.pop(0) #删除指定位置的元素
    print(S)
###end

第5关:求n以内的所有自幂数

任务描述


本关任务:求n以内的(含n)所有自幂数(大于0的正整数),n为正整数,且n<10000。

相关知识


如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

测试说明


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

测试输入:10
预期输出:1 2 3 4 5 6 7 8 9

测试输入:500
预期输出:1 2 3 4 5 6 7 8 9 153 370 371 407

提示:输出数字间以空格隔开

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

###begin
n = input()
for i in range(1, int(n) + 1):
    s = 0
    for j in str(i):
        s += int(j) ** len(str(i)) #不要忘了i和j的数据类型
    if s == i:
        print(i, end=" ")
###end

第6关:打印九九乘法表

任务描述


本关任务:打印九九乘法表。


测试说明


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

测试输入:无
预期输出:如上图所示

说明:每个公式占7个字符,公式之间有一个空格。

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

###begin
for i in range(1, 10):
    for j in range(1, i + 1):
        s = str(i) + '*' + str(j) + '=' + str(i * j) #字符串的拼接感觉是比较简洁的
        print(f'{s:7}', end=' ') #这里的f'{:n}'中的n就是指定占位,缺位则用空格补充
    print('')
###end

第7关:数字组合

任务描述


本关任务:编写程序,输出由1、2、3、4这四个数字组成的每位数都不相同的所有三位数。

测试说明


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

测试输入:无
预期输出:

123
124
...
432

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

###begin
for i in range(123, 433): #在知道最小值和最大值后就可以直接循环找了
    s = ['1', '2', '3', '4']
    for j in range(len(s)):
        m = s.pop(j) #将删除的值先存到m里面
        if all(n in str(i) for n in s): #all的用法就是完全满足,如果是只要求部分满足可以用any
            print(i)
        s.insert(j, m) #别忘了将删除的元素添加回来
###end

第8关:阶乘之和

任务描述


本关任务:输入正整数n,求1!+2!+...+n!之和

测试说明


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

测试输入:

3


预期输出:

9

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

###begin
n = int(input())
m = 0
for i in range(1, n + 1):
    x = 1
    for j in range(1, i + 1):
        x *= j
    m += x
print(m)
###end

第9关:因式分解

任务描述


本关任务:输入一个正整数n(n>=2),对其做因式分解。
例如:

10 = 2*5
60 = 2*2*3*5

测试说明


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

测试输入:

5


预期输出:
 

5

测试输入:

60


预期输出:

2*2*3*5

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

###begin
n = int(input())
m = ''
while n != 0:
    for i in range(2, n + 1):
        if n == i: #除到最后,剩下的因子就是自己
            m += str(i)
            n = 0 #这个是打破while循环的条件
            break
        elif n % i == 0:
            m += str(i) + '*'
            n //= i #这里采用整除,因为用/的话会将n变成浮点数
            break
print(m)
###end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在远方的眺望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值