【问题标题】:Sum input integer by itself, integer times将输入整数本身相加,整数倍
【发布时间】:2022-01-23 13:38:09
【问题描述】:

Salam,我得到了一个用户输入,我必须将它自己求和 n 次。这意味着如果输入是“5”,例如,我应该返回5 + 5 + 5 + 5 + 5 = 25
我用过:

def sum(user_input):
    inp_sum = 0
    string = ''
    for n in range(0, user_input, 1):
        inp_sum += user_input
        if n != user_input -1:
            string+= "5 + "
        else: string += '5'
    return string + ' = ' + str(inp_sum)

但它会返回

Failed for value=6 
Expected: 6 + 6 + 6 + 6 + 6 + 6 = 36
Actual: 5 + 5 + 5 + 5 + 5 + 5 = 36

解决办法是什么?

【问题讨论】:

  • 这个逻辑没有意义
  • 如何让它有意义?
  • 您实际上是在告诉 python ... if n != user_input -1: string+= "5 + "...else: string += '5'....输入 python 应该总是返回 "5" 作为字符串
  • 我实际上没有得到它@MaximilianFreitag

标签: python string for-loop if-statement output


【解决方案1】:

当您应该将用户输入传递给字符串格式逻辑时,您将 5 硬编码到函数的逻辑中。另外,不要将你的函数命名为sum,因为你会隐藏内置函数sum

def mysum(user_input):
    inp_sum = 0
    string = ""
    for n in range(0, user_input, 1):
        inp_sum += user_input
        if n != user_input - 1:
            string += "{} + ".format(user_input)
        else:
            string += str(user_input)
    return "{} = {}".format(string, inp_sum)

【讨论】:

  • 这将返回此错误:导入测试模块失败:评估 Traceback(最近一次调用最后):文件“/usr/lib/python3.5/unittest/loader.py”,第 428 行,在_find_test_path module = self._get_module_from_name(name) File "/usr/lib/python3.5/unittest/loader.py", line 369, in _get_module_from_name __import__(name) File "/eval/evaluate.py", line 1, in import sum File "/eval/sum.py", line 7 string += f"{user_input} + " ^ SyntaxError: invalid syntax
  • 好的,您使用的是 Python3.5,并且在 Python3.6 中添加了 f-string,我更新了答案以使用旧格式
【解决方案2】:

你可以这样简化:

def user_input(n):
    return "{} = {}".format(' + '.join([str(n) for _ in range(n)]), str(n*n))

print(user_input(5))
# 5 + 5 + 5 + 5 + 5 = 25

print(user_input(6))
# 6 + 6 + 6 + 6 + 6 + 6 = 36

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 2017-04-27
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    相关资源
    最近更新 更多