python - collatz 序列名称未定义
问题描述
calculation = 0
def collatz(number):
global calculation
if number % 2 == 0:
calculation = number // 2
print(calculation)
return calculation
#odd number
elif number % 2 == 1:
calculation = 3 * number + 1
print(calculation)
return calculation
try:
number = collatz(input('Type a number:')))
except:
while type(number) != int:
print('Please type a numerical value')
number = collatz(int(input('Type a number:')))
while calculation > 1:
collatz(calculation)
问题:在我正在阅读的 python 书中做一个项目时,我被指示创建一个利用 collatz 猜想的程序。在用户输入非整数值的情况下,我在做任何事情时都没有遇到任何问题整数值,但由于某种原因,当它到达异常语句下的 while 循环时会引发错误,该语句指出“名称‘数字’未定义’,我不确定它为什么会引发此错误
解决方案
在except
您的代码块中,将在哪里number
定义?它不可能在try
块中,因为如果你正在执行except
块,那么根据定义,try
块的操作已经失败。
作为单独的评论,请考虑您将从哪种类型的数据中返回以及如果不满足或不满足任何条件input
可以collatz
返回什么?if
else
推荐阅读
- reactjs - Apollo graphql 可以与 Nextjs 一起使用而无需安装 react-router-dom 吗?
- powershell - Jenkins 作业错误“Get-WinEvent:RPC 服务器不可用”
- c# - 我无法写入文件夹 DirectorySeparatorChar 的路径不起作用
- python - 多个模型的搜索过滤器——Django
- javascript - 我想清除 onClick react-select 中的选定数据
- javascript - 如何使用每个问题的 NA 按钮将问题设置为灰色(在 HTML 中带有单选按钮答案的问题)?
- python - selenium.common.exceptions.WebDriverException:消息:TypeError:node.ownerDocument 为空
- javascript - 如何使用 JavaScript 或 JQuery 更改 html 内容?
- c - NTP 客户端连接超时
- javascript - 数组推送在 Promise 中不起作用