这是print的官方文档的一部分:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将 objects 打印到 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep, end, file 和 flush 如果存在,它们必须以关键字参数的形式给出。
所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end。
是不是不大好懂,官方文档就这样,严谨得不得了,难得看懂

。简单来说,end是print的一个参数,默认值是'\n',就是换行符,print的时候会加到打印的内容最后,end=''就是说不用换行了,光标会在打印的内容后面而不是下一行。
input就不上官方的了,简单来说,input('内容')相当于print('内容',end=’‘)加上input(),就是在你输入前打印一段字符给你看,input(),没有参数时,就在当前光标出输入。在这段代码里,第一次循环是在"不妨猜一下小甲鱼现在心里想的是哪个数字:"的后面输入,后面的循环是在"再试一次吧:"或者"抱歉,您的输入有误,请输入一个整数:"后面输入。