这就是我想要完成的事情:
这是我尝试过的:
print("type in a number")
number = (input())
while number != 6174:
start_big = "".join(sorted(number, reverse=True))
start_small = "".join(sorted(number))
number = (int(start_big)-int(start_small))
print(number)
print("Calculation finnished!")
我收到了错误:
start_big = "".join(sorted(number, reverse=True)) TypeError: 'int'
object is not iterable
答案 0 :(得分:1)
计算时:
number = (int(start_big)-int(start_small))
number
的类型变为int
,因此在下一次迭代中会发生错误。
一种解决方案是
print("type in a number")
number = input()
while number != "6174":
start_big = "".join(sorted(number, reverse=True))
start_small = "".join(sorted(number))
number = str((int(start_big) - int(start_small)))
print(number)
print("Calculation finnished!")
答案 1 :(得分:0)
你快到了。您需要将this.panel1.AutoScroll = true;
this.panel1.AutoScrollMinSize = = new System.Drawing.Size(500, 300);
private void OnPaint(object sender, PaintEventArgs e)
{
Rectangle ellipse = new Rectangle(Point.Empty, new Size(400, 400));
ellipse.Offset(this.panel1.AutoScrollPosition);
using (Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red))
{
e.Graphics.DrawEllipse(myPen, ellipse);
}
}
private void OnPanelScroll(object sender, ScrollEventArgs e)
{
this.panel1.Invalidate();
}
转换为可迭代的。我建议:
number
答案 2 :(得分:0)
你必须将输入数字转换为可迭代的,你可以这样做
number = iter(number)
您还需要更改while循环条件:
while int(number) != 6174:
打印号码只需这样做:
number = str((int(start_big)-int(start_small)))
答案 3 :(得分:0)
您的解决方案存在多个问题:
input()
总是返回一个字符串,因此number
永远不会是一个整数,因此永远不会等于6174
。所以你的循环仍然会输入6174
。
首先需要将字符串转换为数字,只需在字符串上调用int()
即可。请注意,这可能会失败,因此您可能需要ask the user for input until they enter a valid number。
一旦number
为整数,它就不再是可迭代的,因此您无法在其上调用sorted()
。如果要对数字进行排序,则需要先将其转换为字符串:sorted(str(number))
。