python - 有没有办法在 python 中转到特定的行或命令?
问题描述
我正在阅读使用 python 自动化无聊的东西并尝试解决实际问题的书籍。在这个项目中,我需要定义 collatz() 函数并打印代码中看到的结果,直到它得到 1。所以基本上我只需要输入一个数字,程序应该返回数字,直到它返回 1。程序工作正常,但我有一个问题如果我能做得更好:D。
我的问题是在使用 try: 和 except: 之后有没有办法在输入函数中输入字符串时不结束进程,而是在“您必须输入数字”下方获取消息并返回输入新数字或字符串并正常执行 while 循环。代码工作正常,只是想知道这是否可行,如果可以,怎么办?
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
else:
print(3 * number + 1)
return 3 * number + 1
try:
yourNumber = int(input('Enter number: '))
while True:
yourNumber = collatz(yourNumber)
if yourNumber == 1:
break
except ValueError:
print('You must enter a number')
解决方案
将try/except
内部放入一个循环中,这样except
循环将继续,但成功时它将break
:
while True:
try:
yourNumber = int(input('Enter number: '))
except ValueError:
print('You must enter a number')
else:
break
while yourNumber != 1:
yourNumber = collatz(yourNumber)
推荐阅读
- neural-network - 使用 Gekko 的大脑模块,我如何确定使用多少层和什么类型的层来解决深度学习问题?
- google-drive-api - Google Oauth 客户端对已验证的应用程序是否有用户限制?
- python - 如何在 Python 上使用 FinQuant 访问 Quandl 网络数据?
- c# - 反射在评估堆栈上发出推送和附加参数
- perl - 无法安装模块
- asp.net-mvc - asp.net MVC中如何实现动态资源权限?
- haskell - 在一个 cabal 包中,为什么我应该有几乎相同的“其他模块”字段
- session - twisted.web.server.Session - 可以刷新超时的替代 Session 类/工厂
- python - 来自数据流的 BigQuery 流式传输静默失败
- django - Django 表单向导:跳过一步但仍提供数据