甜萝 发表于 2022-5-20 22:45

python题目解决过程

一道来自 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个数相加),几个数相加由键盘控制。

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

我给出的解法

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的值 最后再检查一下能否运行成功

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才解决.:loveliness:

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()
页: [1] 2
查看完整版本: python题目解决过程