吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1141|回复: 15
收起左侧

[学习记录] python题目解决过程

[复制链接]
甜萝 发表于 2022-5-20 22:45
一道来自 https://www.runoob.com/python/python-exercise-example18.html 的题目

刚开始看题目的时候觉得蛮简单 但是亲自写了之后才发现 并不是那种1+1等于2的题目

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

咋一看 非常简单 但是我写了二三十分钟才弄出来 中途还修改了一下才弄出来 没有看案例是自己写的

我给出的解法

[Python] 纯文本查看 复制代码
a = int(input('请输入一个数字: '))
n = int(input('n个数值相加: '))
k = 0
for i in range(1,n+1):
    w = str(a) * i
    k += int(w)
print(k)


这个很简单 就不写注释了 当然 很少写注释 没有写注释的习惯 直接解释这段代码是干什么的

前两行要求输入数字 第一行要求输入的是一个数字 第二行也是要求输入一个数字 第二行的数字决定相加n-1次自身
(比如 第一次输入2 第二次输入5 就等于 2 + 2 + 2 + 2 + 2) 数字2相加了四次数字2

只不过从第一次相加之后 这个数字末尾就拼接了一个2 之后的每一次相加都拼接2
于是 2 + 2 + 2 + 2 + 2 就变成了 2 + 22 + 222 + 2222 + 22222

第三行 for循环遍历 每进入一次循环 就将数字转换为字符串 并且复制字符i次 第一次循环为一个字符类型的数字 第二次循环为两个字符类型的数字 以此类推
只不过 每进入一次循环 k就累加数字类型的数字 直到for循环结束 然后再输出k的值 最后再检查一下能否运行成功

自己

自己

网站

网站

免费评分

参与人数 1热心值 +1 收起 理由
夫子点灯 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kesai 发表于 2022-5-20 23:03
a = int(input('请输入一个数字:'))
n = int(input('n个数值相加:'))
print(sum(a*int('1'*(i+1)) for i in range(n)))
 楼主| 甜萝 发表于 2022-5-20 23:04
kesai 发表于 2022-5-20 23:03
a = int(input('请输入一个数字:'))
n = int(input('n个数值相加:'))
print(sum(a*int('1'*(i+1)) for i  ...

这个简洁 写的可以
sapin 发表于 2022-5-20 23:09
本来用str变int就很方便,答案还用了reduce才解决.
alongzhenggang 发表于 2022-5-20 23:25
呃呃呃去乡下向天歌
Ghy410 发表于 2022-5-20 23:34
牛笔,挺不错的呀
recipeck 发表于 2022-5-21 07:43
崇拜的目光!~
xglys 发表于 2022-5-21 07:59
这个是不是属于数组啊 ?
zhjm21 发表于 2022-5-21 08:15
学习了!
opst4525 发表于 2022-5-21 09:01
sum([int(str(a)*i) for i in range(1,n+1)])
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表