写一些关于自己学习Python的经历的内容,遇到的问题和思考等,方便以后查询和复习。
声明:本人学习是在扇贝编程通过网络学习的,相关的知识、案例来源于扇贝编程。如果使用请说明来源。
第八关:条件初阶
练习:是否租此房
房租预算是3000元,大于不租,小于就可以租
rent = 3000
def transfer(rent):
if rent > 3000:
print('这可太贵了')
else:
print('就租这个吧')
rent = int(input('请输入房租:'))
transfer(rent)
这个是可以得到正确结果的。
最初在倒数第二行中,忘记加入变量rent,结果虽然能挑出对话框,但是输入的结果并没有赋值给变量,所以会反馈说变量rent没有定义
增加rent变量之后,将输入的结构对其赋值,就可以正常运行,此时不需要在第一行赋值,因为通过输入已经给变量重新赋值的,原值有没有都不影响了。
如果有第一行的原始赋值,但是倒数第二行的输入没有重新赋值,就会导致无论输入什么结果都是执行else,因为赋值是3000是不变的。虽然有输入但是没有对变量实现赋值。
参考答案中,函数中的变量是rent,而后面的输入赋值于变量input_rent,调用的还是函数transfer,但是变量也变成了input_rent。
用这个变量名称,可读性比较强
def transfer(rent):
if rent > 3000:
print('这可太贵了')
else:
print('就租这个吧')
x = int(input('请输入房租:'))
transfer(x)
我试验了一下,把倒数第一第二行的变量改成x也是可以的,这个等于说吧变量名字都改变了啊,相同的函数中,变量名可以不同,而且默认相等吗?
练习:记录涨粉量
def check_growth(growth):
if growth:
print('你忘记记录今天的涨粉量了')
else:
print(chech_growth(growth))
growth = input('请输入今天涨粉量:')
check_growth(growth)
输入什么数字都是打印“你忘记记录今天的涨粉量了”,有些不理解,于是看答案
答案的思路和我是一样的,使用if growth,设置了一个布尔表达式。但是不同的时候,它打印的是growth,就是当growth的布尔值为真时,就打印出输入的值。
而我的刚好是为真时,打印“你忘记记录今天的涨粉量了”
还有一个要注意的是:答案不是打印函数,而是直接打印变量的值,因为这个不需要运算,符合条件直接打印出值就行,只是记录数量。
答案中还是用了新的变量input_growth,作为输入值的变量名,增加可读性
def check_growth(growth):
if growth:
print(growth)
else:
print('你忘记记录今天的涨粉量了')
growth = input('请输入今天涨粉量:')
check_growth(growth)
打印内容颠倒一下,而且把为真时打印的是变量值,而不是打印函数值
如果输入具体数值,包括零,则if growth为真,就打印数字,如果什么都不输入,包括空格也没有,则为假,就打印忘记了。如果输入空格,仍然为真,程序正常运行,但是结果是空白,本来就是空白,打印的是空格,输入几个空格就打印几个,只是看不见
如果第三行改成:打印函数print(check_growth(growth)),报告多错误:
ExternalError: RangeError: Maximum call stack size exceeded on line 3
超过调用最大范围什么的吧
练习:到哪里工作?
wage_bj = 8500 # 北京薪资
wage_hf = 6700 # 合肥薪资
rent_bj = 2800 # 北京房租
rent_hf = 1400 # 合肥房租
def choice(x):
x1 = wage_bj - rent_bj
x2 = wage_hf - rent_hf
if x1 > x2:
print('去北京工作吧')
else:
print('去合肥工作吧')
choice(x)
结果报错
NameError: name 'x' is not defined on line 14
把x1和x2提到函数前面,还是不行,错误原因是一样的。在第14行x是全局变量,而在函数中x是局部变量
看了答案才意识到整复杂了,这个不需要计算,只要比较,然后打印就可以了,不用函数的
我后来想着把调用函数的语句去掉,就是最后的第14行,还是不行,但是没有想着去掉函数,这两个应该一起去掉的。不调用函数,还定义函数干什么啊?
wage_bj = 8500 # 北京薪资
wage_hf = 6700 # 合肥薪资
rent_bj = 2800 # 北京房租
rent_hf = 1400 # 合肥房租
x1 = wage_bj - rent_bj
x2 = wage_hf - rent_hf
if x1 >= x2:
print('去北京工作吧')
else:
print('去合肥工作吧')
直接用条件分支,然后打印即可,不需要调用定义函数和调用函数。
第八关导图:
网友评论