当尝试使用while循环时,出现回溯错误和 "类型为'int'的参数不可迭代"。

问题描述 投票:0回答:1

我想写我的第一个程序,一个 collatz sequense 程序。代码如下

input_siffra = input("Input an integer: ")
startsiffra = int(input_siffra)

def Collatz(collatz_number):
    position = (len(str(collatz_number)) - 1)
    if position in collatz_number in (0, 2, 4, 6, 8):
        return (collatz_number / 2)
    else:
        return (collatz_number * 3 + 1)

while startsiffra != 1:
    print(startsiffra)
    Collatz(startsiffra)

我想做的是找到一种方法来判断我输入的数字是偶数还是奇数(是的,我知道有%2的方法,但我故意不在这里使用它来学习),通过查看数字中的最后一位数字,然后做两件事中的一件,如果它是偶数或奇数。运行这个程序会给我两个错误,首先是Collatz(startiffra)的回溯和检查最后一个数字是否在列表中的行的int错误。

python int collatz
1个回答
0
投票
input_siffra = input("Input an integer: ")
startsiffra = int(input_siffra)

def Collatz(collatz_number):
    position = (len(str(collatz_number)) - 1)
    if collatz_number%10 in (0, 2, 4, 6, 8):
        return (collatz_number / 2)
    else:
        return (collatz_number * 3 + 1)

while startsiffra != 1:
    print(startsiffra)
    startsiffra=Collatz(startsiffra)

这似乎和你希望的一样。希望我帮到了你

EDIT: 你也可以用这个if代替我在代码中放的那个。它是你在你的代码中一直试图做的事情(不使用%)。

if str(collatz_number)[position] in ('0', '2', '4', '6', '8'):
© www.soinside.com 2019 - 2024. All rights reserved.