【问题标题】:Return statement inside for loop with range not working范围不工作的for循环内的返回语句
【发布时间】:2019-06-24 18:15:42
【问题描述】:

我正在尝试解决一个基于 python 的问题:

`Given an integer,print the following values for each integer  from 1 to n :

Decimal
Octal
Hexadecimal (capitalized)
Binary`

我做了类似的事情:

def print_format(number):
    for i in range(number+1):
        decimal=str(i)
        binary=str(bin(i))
        octa=str(oct(i))
        hexagonal=str(hex(i))
    return (decimal+' '+octa[2:]+' '+hexagonal[2:].upper()+' '+binary[2:])

打印格式(5)

'5 5 5 101'

代码只返回最后一组值。但是,正如我所期待的那样,

0 0 0 0 1 1 1 1 2 2 2 10 3 3 3 11 4 4 4 100 5 5 5 101

print 语句一样的部分代码运行良好。

def print_format(number):
    for i in range(number+1):
        decimal=str(i)
        binary=str(bin(i))
        octa=str(oct(i))
        hexagonal=str(hex(i))
        print (decimal+' '+octa[2:]+' '+hexagonal[2:].upper()+' '+binary[2:])

谁能解释我在使用return 语句时做错了什么?

【问题讨论】:

  • 提示:缩进。
  • return 语句应该在 for 循环之外?正确的?这就是我所做的。如果我错了,请纠正我

标签: python-3.x for-loop return user-defined-functions


【解决方案1】:

只需将所有字符串保存在使用\n 拆分的变量中并返回即可。

def print_format(number):
    result = ''
    for i in range(number+1):
        decimal=str(i)
        binary=str(bin(i))
        octa=str(oct(i))
        hexagonal=str(hex(i))
        result += decimal+' '+octa[2:]+' '+hexagonal[2:].upper()+' '+binary[2:] + '\n'
    return result

print(print_format(5))

【讨论】:

    【解决方案2】:

    在您当前的尝试中,您正在循环输入而不做任何事情。 Return 仅在最后一次迭代后查看局部变量并返回它们。你想要的是一个生成器:

    def print_format(number):
        for i in range(number+1):
            decimal=str(i)
            binary=str(bin(i))
            octa=str(oct(i))
            hexagonal=str(hex(i))
            yield (decimal+' '+octa[2:]+' '+hexagonal[2:].upper()+' '+binary[2:])
    
    mygen = print_format(5)
    
    for i in mygen:
        print(i)
    

    这应该打印您想要的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-08
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多