【问题标题】:Use value of a variable as counter in python 3在python 3中使用变量的值作为计数器
【发布时间】:2013-09-04 14:18:33
【问题描述】:

我想从用户那里获取输入并将其存储在一个变量中,比如说k。然后将此k 用作for loop 的计数器。

while i<k: 不起作用! 代码:

k= input('number of points:')
p=[]
i=0
while i<k:
x=float(input('Enter value='))
p.append(x)
i=i+1

输出:

number of points:3
Traceback (most recent call last):
File "/home/ramupradip/tes.py", line 4, in <module>
while i<k:
TypeError: unorderable types: int() < str()

我也尝试过使用范围

for i in range(1,k)

这给了我一个错误: 回溯(最近一次通话最后): 文件“/home/ramupradip/reflect.py”,第 6 行,在 对于范围内的 i (1,k): TypeError: 'str' 对象不能被解释为整数

【问题讨论】:

  • 什么是k.....?是int吗?请发布您遇到的错误
  • 请解释“不起作用”是什么意思。

标签: python for-loop python-3.x counter


【解决方案1】:

像这样读取输入:

k = int(input('enter counter: '))

...我猜你忘记将数字转换为int,但如果你不显示相关代码是不可能的。除此之外,问题中显示的循环结构应该可以正常工作,但第一个在 Python 中是首选,只是要小心索引:

for i in range(1, k+1):
    # do something

等价:

i = 1
while i <= k:
    # do something
    i += 1

【讨论】:

  • 谢谢 :) 。问题在于缺少的“int”。
【解决方案2】:

这没有任何意义。 你可能想要这个:

for i in range(k):
     ...

其中k 是用户设置的迭代 总数,i 是一个从0 变为k - 1 的值。 或者你可能想要这个:

for k in range(x):
     ...

其中k 是从0x - 1 的值,用户输入没有任何意义。或者你可能想要这个:

for i in range(k, x):
    ...

其中k是用户设置的起始值,x是程序设置的值,i是从k开始到x - 1结束的值

有关更多信息,请参阅文档http://docs.python.org/3/library/functions.html#func-range

【讨论】:

  • 您正在更改i 的起始值,这不等同于问题中的代码。 可能 OP 可能只对循环 k 次感兴趣(我们无法仅通过查看当前问题来判断),但如果他要使用 i,则预期起始值为1,根据问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 2015-03-30
  • 2019-05-27
  • 1970-01-01
相关资源
最近更新 更多