首页 / PYTHON / python-过程控制问题
python-过程控制问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-过程控制问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1497字,纯文字阅读大概需要3分钟。
内容图文
![python-过程控制问题](/upload/InfoBanner/zyjiaocheng/690/de632debeaf34197ba64cd2754d5ef10.jpg)
为什么第一次collat??z()返回1时循环没有结束?
def collatz():
global number
if number % 2 == 0:
number = number // 2
print(number)
return number
else:
number = 3 * number + 1
print(number)
return number
try:
number = int(input('Please enter an integer except zero.\n'))
except ValueError:
print("ValueError: invalid value.")
number = int(input('You must enter an integer except zero.\n'))
while collatz() != 1: # if input(4), the output will be: 4 2 1 4 2 1
collatz()
# another way, which works:
while number != 1: --> # also input(4), the output will be: 4 2 1
collatz()
解决方法:
在您的第一个方法中,您在每个循环中两次调用collat??z():
>一次,而collat??z()!= 1:测试返回值.如果此时返回1,则将退出循环.
>在循环体内第二次.这次,返回值没有经过测试,因此即使它是1,您也只需要返回while行.
因此,当您输入4时,输出为:
> 4(您的输入)
> 2(边线)
> 1(正文-循环不会结束)
> 4(边线)
> 2(身体)
> 1(在一行中-现在循环结束)
您也可以像这样编写循环:
while collatz() != 1:
pass # do nothing
一点建议:
>避免使用全局变量,它们会很快变成邪恶
>单独的关注点:例如,让您的collat??z()函数将数字作为参数,然后返回下一个值.将打印内容保留到代码的其余部分.
>尽量不要重复自己.
您可以这样修改它,例如:
def collatz(n):
if n % 2 == 0:
n = n // 2
else:
n = 3 * number + 1
return n
try:
number = int(input('Please enter an integer except zero.\n'))
except ValueError:
print("ValueError: invalid value.")
number = int(input('You must enter an integer except zero.\n'))
while True: # infinite loop
number = collatz(number)
print(number)
if number == 1:
# we break out of the loop
break
内容总结
以上是互联网集市为您收集整理的python-过程控制问题全部内容,希望文章能够帮你解决python-过程控制问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。