str3 = "老男孩教育\n"
str4 = "帮助有志向的年轻人通过努力学习获得理想的工作和生活"
print(str3)
print(str4)
在这里注意,当某个变量是字符串变量时,如上面的str3和str4.输出时,可以在print函数里直接去写变量名,而不需要加双引号。
输出结果为:
老男孩教育
帮助有志向的年轻人通过努力学习获得理想的工作和生活
其中,写几个转义符号\n,就会空几行。
方法2:直接用print输出一个空行
str1 = "老男孩教育"
str2 = "帮助有志向的年轻人通过努力学习获得理想的工作和生活"
print(str1)
print(" ")
print(str2)
输出结果为:
老男孩教育
帮助有志向的年轻人通过努力学习获得理想的工作和生活
Python中通过csv的writerow输出的内容有多余的空行main(){
int i=1
while(i<=5)
printf("%d\n",SQ(i++))
}
SQ(int y)
{
return((y)*(y))
}
【例9.10】
#define SQ(y) ((y)*(y))
main(){
int i=1
while(i<=5)
printf("%d\n",SQ(i++))
}
在例9.9中函数名为SQ,形参为Y,函数体表达式为((y)*(y))。在例9.10中宏名为SQ,形参也为y,字符串表达式为(y)*(y))。 例9.9的函数调用为SQ(i++),例9.10的宏调用为SQ(i++),实参也是相同的。从输出结果来看,却大不相同。
分析如下:在例9.9中,函数调用是把实参i值传给形参y后自增1。 然后输出函数值。因而要循环5次。输出1~5的平方值。而在例9.10中宏调用时,只作代换。SQ(i++)被代换为((i++)*(i++))。在第一次循环时,由于i等于1,其计算过程为:表达式中前一个i初值为1,然后i自增1变为2,因此表达式中第2个i初值为2,两相乘的结果也为2,然后i值再自增1,得3。在第二次循环时,i值已有初值为3,因此表达式中前一个i为3,后一个i为4,乘积为12,然后i再自增1变为5。进入第三次循环,由于i 值已为5,所以这将是最后一次循环。计算表达式的值为5*6等于30。i值再自增1变为6,不再满足循环条件,停止循环。
从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。