在每次迭代中,将循环结果打印在同一行上,而不是每次迭代都换行。

33 浏览
0 Comments

在每次迭代中,将循环结果打印在同一行上,而不是每次迭代都换行。

我希望我的代码只在一行上打印silly,但实际上它像这样打印出来:

silly
silly
silly

我希望的输出是:

silly silly silly 

这是我的代码:

    def print_silly_name ()
       i = 0
       while ( i < 60 )
         puts "silly"
         i += 1 
       end
    end
    def main
      name = read_string('Please enter your name: ')
      if ( name == "benyamin") or ( name == "jack" )
        puts  " #{name} 是个好名字"
      else 
        puts print_silly_name
      end
    end
    main

0
0 Comments

问题的原因是在print_silly_name函数中使用了puts语句,每次迭代时都会打印一行,导致输出结果每个迭代都会换行显示。

解决方法是将print_silly_name函数中的puts语句改为print语句,这样每次迭代时打印的结果都会在同一行显示。

以下是修改后的代码:

def print_silly_name
  print Array.new(60, 'silly').join(' ')
end
def main
  name = read_string('Please enter your name: ')
  if ( name == "benyamin") || ( name == "jack" )
    puts  " #{name} that is a nice name"
  else 
    print_silly_name
  end
end
main

修改后的代码中,print_silly_name函数使用了print语句,每次迭代时打印的结果都会在同一行显示。这样就解决了问题,输出结果不再每个迭代都换行显示。

0
0 Comments

问题:循环的每次迭代都会在新行上打印结果,而不是在同一行上打印。

原因:

1. 使用了错误的打印方法。在代码中使用了puts,而应该使用print

2. 调用了未定义的#read_string方法。应该使用gets.chomp或定义#read_string方法来替换。

3. 使用了错误的逻辑运算符or,应该使用||

解决方法:

1. 将puts替换为print

2. 将#read_string替换为gets.chomp或定义#read_string方法。

3. 将or替换为||

修复后的代码如下:

def print_silly_name_60_times
  60.times do
    print "silly "
  end
end
def main
  name = gets.chomp
  if (name == "benyamin") || (name == "jack")
    puts "#{name} that is a nice name."
  else
    print_silly_name_60_times
  end
end
main

修复后的简化代码如下:

def print_silly_name_60_times
  60.times{print "silly "}
end
def main
  name = gets.chomp
  %w(benyamin jack).include?(name) ? (puts "#{name} that is a nice name.") : print_silly_name_60_times
end
main

0
0 Comments

问题出现的原因:在循环的每次迭代中,使用了puts方法来打印输出,而puts方法会在每次输出之后自动换行,导致每次迭代的结果都被打印到新的一行上。

解决方法:修改代码,使用print方法来代替puts方法,print方法在输出之后不会自动换行,从而可以将每次迭代的结果都打印在同一行上。

修改后的代码如下:

def print_silly_name()
    print "silly " * 60
end

这样修改后,每次迭代的结果将会在同一行上输出,而不是每次输出都换到新的一行。

0