![](/img/trans.png)
[英]How to find K-means total number of iterations in sklearn python?
[英]Using iterations to find smallest k in python
我是编程新手,我正在尝试进行迭代。
我正在尝试做的一个例子是:
输入一个正整数: 100
19
是最小的 n,使得1+3+5+7+...+n >= 100
因此,从插入的整数开始,从 1 以 2 为步长求和,直到总和等于插入的整数。
我收到一条错误消息
while r <= q:
TypeError: '<=' not supported between instances of 'range' and 'int'
我不确定如何在不使用范围和整数的情况下做到这一点。 有没有更好的办法?
到目前为止,我尝试过的代码是下面的代码,但本质上是:我尝试创建变量和 s 作为范围从 0 到 q 以 2 为步长,然后当 s 小于或等于 q 它继续求和通过 n. 我输入 r 来尝试解决我遇到的错误,但它仍然给出相同的错误。
也许我正在以错误的方式思考这个问题,任何帮助将不胜感激。 如果我提供了足够的信息,请原谅。 让我知道,我会更新问题。
n = 0
q = int(input("enter a number"))
s = range(1,q,2)
r = s
while r <= q:
n= n+1
s= s+n
print("smallest N is",n)
答案
q = int(input("enter a number "))
s=[1] #start from 1
while sum(s) < q: #check if sum of s is less than input
s.append(s[-1]+2) #s[-1] will get the last element of list and +2 will ensure odd numbers are inserted in list
print("smallest N is",s[-1]) #get the last element in the list
完美运行感谢大家的所有答案,非常感谢。 我只是好奇。 如果我有
Enter a positive integer: 25
8 is the largest k such that 0+2+4+6+...+k < 25
它应该得到 8 但它得到 10 `
q = int(input("enter a number "))
s=[0] #start from 0
while sum(s) < q:
s.append(s[-1]+2)
print("smallest N is",s[-1])
`
这是一个简单的例子。
q = int(input("enter a number "))
s=[1] #start from 1
while sum(s) < q: #check if sum of s is less than input
s.append(s[-1]+2) #s[-1] will get the last element of list and +2 will ensure odd numbers are inserted in list
print("smallest N is",s[-1]) #get the last element in the list
我提出这个解决方案:
q = int(input("enter a number"))
s = 0
r = iter(range(1,q,2))
while not s >= q:
n = next(r)
s += n
print("smallest N is",n)
它会在以下几点修改您的版本:
s
作为累计和并将其初始化为0
r
成为一个迭代器,当我在它上面运行next()
时它会给我下一个值while
循环的条件以运行直到总和s
如果最终大于或等于用户输入给出的数字q
n
并将其添加到总和s
。 所以我记得在最终 sum s
变得更大或等于q
之前添加的最后一项 range
函数非常强大,但是您没有正确使用它(这里确实没有必要)。
positive_integer = int(input('Enter a positive integer: '))
assert positive_integer >= 1
n = 1
sum = 1
while sum < positive_integer:
n += 2
sum += n
print('Smallest n is ', n)
您的代码出现错误,因为无法判断一个整数是等于还是小于某个范围。 例如,我无法确定 5 是小于、等于还是大于 60 到 110 之间的数字。这不是数学的工作原理。 但是,您可以确定该数字是小于、等于还是大于该范围内的最小数字。 我建议您为此更改代码:
while r <= min(1, q, 2):
n += 1
s += n
print("Smallest N is " + n)
q = int(input("enter a number"))
sum = 0;
n=0;
for i in range(1,q,2):
sum = sum+i
if(sum >= q):
n=i
break
print("smallest N is",n)
这会做
一个例子可能更容易理解:假设 q = 5 那么 s = range(1,5,2)(循环 s 将生成 1,3)因此,s 不是 1 个特定数字,而是“多个”数字。 设置 r = s 表示 r 是多个数字。 检查是否 r <= q 检查 q 的值是否大于或等于 r 是多个数字。 因此,无法进行比较。
这应该是这样做的。 我试图在不改变代码太多的情况下对其进行编码以进行解释。
q = int(input("enter a number"))
r = range(1,q,2)
s = 0
n = 0
for i in r:
n = n + 1
s = s + i
if s >= q:
break
print("smallest N is",i)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.