无法在函数中正确返回Python数据

问题描述 投票:0回答:3

我已经在这上面花了好几个小时了。我认为我的问题是我需要在第一个函数中使用 return ,以便我可以使用该函数作为第二个函数中的参数。但是,如果我使用返回,数据似乎无法正确传递给第二个函数。我这么说是因为如果我注释掉我的 print 语句并只使用 return (return 语句不允许我包含 end = '',所以它是垂直出现的),我似乎无法正确格式化它。然后第二个函数只是吐出第一个函数返回的第一个数字。我很迷茫,我想我现在需要睡觉了。为此整晚没睡。有什么方法可以将数据返回到第一个函数中,并使其成为一个很好的水平字符串,就像我使用 print 语句一样? (或者这并不重要,我偏离了轨道?)如果我可以澄清一些事情,请告诉我。只要朝正确的方向轻推就会有所帮助。

说明:编写一个程序,将一个正整数作为 输入,并输出代表整数的 1 和 0 的字符串 二进制。对于整数 x,算法为:

只要x大于0
输出 x % 2(余数为 0 或 1)
x = x // 2

注意:上述算法输出0和1 以相反的顺序。您需要编写第二个函数来反转 字符串。

例如:如果输入是:6

输出为: 110

程序必须定义并调用以下两个函数。 定义一个名为 int_to_reverse_binary() 的函数,它接受一个整数 作为参数并返回代表 1 和 0 的字符串 二进制整数(相反)。

定义一个名为 string_reverse() 以输入字符串作为参数并返回 表示输入字符串反转的字符串。定义 int_to_reverse_binary(integer_value) def string_reverse(input_string)

我的代码:

在此处定义您的功能。

def int_to_reverse_binary(int_number):
    while int_number > 0:
       #print (int_number % 2, end='')
       return int_number % 2
       int_number = int_number // 2
       

def string_reverse(input_string):
    for i in reversed(str(input_string)):
        print(i,end='')
        
    
    
    
if __name__ == '__main__':
    # Type your code here. 
    # Your code must call int_to_reverse_binary() to get 
    # the binary string of an integer in a reverse order.
    # Then call string_reverse() to reverse the string
    # returned from int_to_reverse_binary().
    x = int(input())
    int_to_reverse_binary(x)
    string_reverse(int_to_reverse_binary(x))

1:比较输出 0 / 2 输出不同。请参阅下面的亮点。 输入 6 你的输出 0 预期产出 110

2:单元测试 0 / 2 使用 int_to_reverse_binary() 和 string_reverse() 将 19 转换为二进制 你的输出 1 测试反馈 string_reverse(user_input) 未返回值。 您的函数可能缺少 return 语句。

3:单元测试 0 / 3 使用 int_to_reverse_binary() 和 string_reverse() 将 255 转换为二进制 你的输出 1 测试反馈 string_reverse(user_input) 未返回值。 您的函数可能缺少 return 语句。

python function while-loop binary
3个回答
1
投票
Python 中的

return

 语句也充当函数的结束点。也就是说,一旦函数中遇到 return 语句,就不会执行任何语句。因此,当执行 
while
 循环时,解释器会看到 return 语句并停止进一步执行。如果您希望从函数返回多个值,您可以做两件事,

    不要在 s 函数中使用 while 循环,而是在 while 循环中使用该函数: 示例代码:
def foo(num): return num % 2 i = 0 while i< 10: print(foo(i)) i += 1

    使用
  1. list
     一次返回所有值。示例代码:
def foo(num): a = [] i = 0 while i < num: a.append(i) i+=1 print(foo(10))
更正代码:

def int_to_reverse_binary(int_number): # print('i', int_number) a = [] while int_number > 0: a.append(int_number % 2) int_number = int_number // 2 # print('a', a) return a def string_reverse(input_string): print(''.join([str(i) for i in input_string])[::-1]) if __name__ == '__main__': x = int(input()) # a = int_to_reverse_binary(x) string_reverse(int_to_reverse_binary(x))
    

1
投票
你似乎让这变得不必要的复杂。 f 字符串格式将为您提供整数的二进制表示形式,然后用切片反转字符串,如下所示:

def int_to_reverse_binary(int_number): return f'{int_number:b}'[::-1] print(int_to_reverse_binary(100))

输出:

0010011
    

0
投票
def string_reverse(input_string): reverse_binary = '' for letter in reversed(input_string): reverse_binary += letter return reverse_binary def int_to_reverse_binary(integer_value): binary = '' while integer_value > 0: binary += str(integer_value % 2) integer_value = integer_value // 2 return (binary) if __name__ == '__main__': integer_value = int(input()) print(f'{string_reverse(int_to_reverse_binary(integer_value))}')
    
© www.soinside.com 2019 - 2024. All rights reserved.