具有功能的回溯输出

问题描述 投票:0回答:1

正如您在我的代码中所看到的,我正在尝试创建一个地毯配件服务程序!但是我不确定为什么它到达第二个功能时会停止!你能分析我的代码并试着告诉我出了什么问题吗?我担心如果你看到剩下的代码,你只会理解我的问题。请记住,我是一个非常新的初学者。

问题(在代码中 - 我无法找到它):

https://pastebin.com/SWMYEAfE

输出:

This is Carpet Diem Carpets and we hope we are able to help you today!
We first need your personal details, so can you please choose your title.
Mr, Mrs, Miss, Ms, Dr, Lady or Lord?Lord
Well, what is your last name, Lord?
>>Test
Here at Carpet Diem Carpets...
We offer a variety of different levels of quality - 
With varying prices, of course, Lord Test!
We can fit your carpets at £6.50 per square meter - the Basic level.
Standard for £18.75.
And, for those who like to live as the very best, Luxury for £29.50!
There is also a 3.75 fee per square meter.
How many rooms do you want 'carpeted'?
>>3
Traceback (most recent call last):
  File "C:\Users\mikec\OneDrive - Ilford County High School\Computing HW.py", line 144, in <module>
    loopquality()
  File "C:\Users\mikec\OneDrive - Ilford County High School\Computing HW.py", line 28, in loopquality
    for x in range(nor):
TypeError: 'function' object cannot be interpreted as an integer
>>> 
python output traceback
1个回答
1
投票

在我运行代码时,有两个主要错误立刻突显出来:

  • 可变scope问题。
  • 属性名称覆盖问题。

你在range上打电话给nor。我可以看到你打算在函数nor中定义的变量nor上调用它而不是函数本身。

有两个直接的解决方案,你可以在上面的范围(你定义所有其他变量)中创建一个名为nor_val的变量(或者与nor不同的变量);并在nor函数内更新该变量,并在range调用中使用它。第二个选项是让你的nor函数在执行结束时返回nor属性,而不是调用range(nor)你会调用range(nor())

在第一种情况下,你会添加像nor_val = 0这样的行来声明你的属性,然后用nor替换你所指的变量(不是函数)的所有nor_val实例。

在第二种情况下,您将在return nor函数的末尾添加一行nor,并将range(nor)更改为range(nor())

但是,在这两种情况下,您的变量命名都不是很直观。您应该尝试不重用名称,因为它们可能会导致此类混淆。你的nor函数没有描述函数的实际功能。我可以把它称为像get_number_rooms或类似的东西,我会称nor变量可能rooms

© www.soinside.com 2019 - 2024. All rights reserved.