我正在尝试解决基于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:])
print_format(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
语句时我做错了什么吗?
答案 0 :(得分: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)
这应该打印您想要的输出。
答案 1 :(得分: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))