python 每日一练
局部变量和全局变量
字符串与数字计算
字符串格式化
局部变量和全局变量
如下代码的最后一行,会报错说NameError: name ‘c’ is not defined
怎样修复代码,让代码不报错,并且输出数值1?
def foo():
c = 1
return c
foo()
print©
提示:
• 函数内的c是局部变量,不能直接被外部访问的
• 可以将函数内的c,声明成全局变量,在外部即可访问
答案
def foo():
global c
c = 1
return c
foo()
print©
字符串与数字计算
解释:
• 加上global c,会将变量c的生效范围变成全局作用域
• print©的这个c,访问的是全局作用域的c,所以不报错了
字符串与数字计算
如下代码会报错,你知道为什么吗?怎么修复?
age = input("What’s your age? ")
age_last_year = age - 1
print(“Last year you were %s.” % age_last_year)
答案
age = input("What’s your age? ")
age_last_year = int(age) - 1
print(“Last year you were %s.” % age_last_year)
字符串格式化
解释:
• input函数使得用户可以提供自己的输入给变量
• input函数每次都会返回一个str类型字符串
• 如果想实现字符串和数字的计算,得把字符串转换成数字,使用int(变量)即可
字符串格式化
如下代码让用户输入name和age,然后拼接字符串
但是代码会报错 TypeError
你知道为什么吗?怎么修复?有另一种办法吗?
name = input("Enter name: ")
age = input("Enter age: ")
print(“Your name is %s and your age is %s” % name, age)
答案
name = input("Enter name: ")
age = input(“Enter age: “)
print(“Your name is %s and your age is %s” % (name, age))
print(f"Your name is {name} and your age is {age}”)
解释:
• 每个%占位符,在后面的%需要一个变量对应起来,如果多于一个%占位符,后面的%
之后需要跟一个元组tuple包含多个变量,所以需要用(name, age)这个元组
• f-string是第二种好用的格式化方式,形如f"Your name is {name}”,在字符串
中可以用{变量名}的方式格式化