python - 为什么这段代码会让我的 Python 解释器挂起?

标签 python

我的另一台笔记本电脑也遇到了同样的问题,这导致我买了这台新笔记本电脑(NBC 在《老友记》之后推出的新笔记本电脑)——解释器会卡在某种嵌套迭代上,甚至卡住和/或如果任由其自行其是,就会发疯。在这种情况下,我在大约五秒后按 CTRL+C。解释器说它停在 while 循环中的某行,每次都不同,表明它正在工作,但速度很慢。一些测试打印语句似乎显示了迭代控制(计数器等)的一些问题。

是CPU问题还是什么?

from __future__ import print_function

import sys

# script is a useless dummy variable, setting captures the setting (enc or dec), steps captures the number of lines.
script, setting, steps = sys.argv

# Input handling bloc.
if setting not in ('enc', 'dec'):
    sys.exit("First command line thing must either be 'enc' or 'dec'.")

try:
    steps = int(steps)
except:
    sys.exit("Second command line thing must be convertable to an integer.")

# Input string here.
string_to_convert = raw_input().replace(' ', '').upper()

if setting == 'enc':
    conversion_string = ''

    counter = 0
    while len(conversion_string) < len(string_to_convert):
        for char in string_to_convert:
            if counter == steps:
                conversion_string += char
                counter = 0
            counter += 1
        steps -= 1

print(conversion_string)

最佳答案

根据 steps 的起始值,countersteps 可能永远不会相等,这意味着 conversion_string code> 永远不会改变,因此它总是比 string_to_convert 短,并且循环永远不会结束。

一个简单的例子是,让steps=-1,因为counter0开始并递增,并且steps code> 总是递减,它们永远不会相等。

<小时/>

实际上,经过进一步检查,如果 steps 小于 len(string_to_convert),这将总是以无限循环结束。

考虑:

steps=2
string_to_convert="Python"
  1. for 循环的第一次迭代会将 counter 迭代到 2 并获取“t”;现在steps = 1conversion_string="t"
  2. 接下来的 for 循环会将 counter 迭代到 1,获取“y”;现在steps = 0conversion_string="ty"
  3. for 循环将 counter 迭代到 0,获取“P”;现在steps = -1conversion_string="tyP"
  4. 现在,steps = -1counter 永远无法等于它,for 循环结束时不会更改 conversion_string
  5. 重复第 4 步,同时减少步数,但无法退出 while 循环。

这就是为什么它有时有效有时无效的原因。

关于python - 为什么这段代码会让我的 Python 解释器挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833489/

相关文章:

python - GroupBy 列并过滤 Pyspark 中具有最大值的行

python - 导入错误: No module named 'bokeh.layouts'

python - CORS 在 Django 中不起作用,但设置似乎正确

Python:每个类一个模块(文件.py)?

python - 为什么使用列表作为字符串格式化参数,即使没有 %s 标识符,也会返回原始字符串?

python - 在 numpy 数组中从末尾切片可变距离的更多 Pythonic 方法

python - Heroku 应用程序成功部署,但在加载站点时收到应用程序错误

python - 在导入语句之前设置 pythonpath

python - 使用外键向 Django Rest Framework API 发送补丁请求

python - Blobstore 对于生产来说足够稳定吗?