将输入转换为列表进行求和

Convert input into a list for summation

问题是:

Write a python function is_valid that checks if the input is a valid student id number. Valid student id’s are in the range 1000-6999 and the sum of their digits should be divisible by 7. If the id number is valid return True otherwise return False.

此代码 returns 一个未定义的错误。我尝试了很多方法来修复 然而,这个问题,我认为没有任何效果。

def is_valid():
    ID=input ("Enter ID number:")
if ID in range(1000,6999):
    ID= [[i for i in ID]for ID in input().split()]
    sum [ID]
if sum [ID]%2==0:
    print (True)
else:
    False

乍一看我可以看到缩进不正确,您将输入的数字作为字符串然后将其与范围匹配而不将其转换为 int。还有更多的错误,所以我刚刚为你写了一个新的代码。试试吧。

# is_valid function taking ID as an argument
def is_valid(ID):
    #checking the range after changing it to int()
    if int(ID) in range(1000, 7000):
        #adding all the digits in a string
        digits = list(ID)
        #adding the digits after mapping them to int()
        sum_of_digits = sum(list(map(int, digits)))
        if sum_of_digits%7==0:
            #returning true if the sum is divisible by 7
            return True
    return False
print(is_valid(input()))

首先,错误不是未定义的。你得到 NameError: name 'ID' is not defined. 因为缩进不正确。您的程序不知道变量 ID,因为 if 块在函数之外。

那么,1000-6999的正确范围是range(1000,7000).

input returns 一个字符串,而 range(x) 是一个包含整数的范围生成器。

因此您必须将 ID 解析为 int 以检查它是否在该范围内。

input().split() 请求新的输入。不明白为什么会在这里。

如果您想手动输入每个 ID,正确答案是:

def is_valid():
    ID = input("Enter ID number: ")
    if int(ID) in range(1000,7000):
        digits = [int(i) for i in ID]
        if sum(digits) % 7 == 0:
            return True
    return False

print(is_valid())

您的代码有很多问题。 首先,代码格式不正确,缩进不符合代码级别。所有代码都应从函数声明中缩进。

其次,输入 returns 是一个字符串而不是一个整数,所以你不能像你在这里做的那样将它与一个整数范围进行比较,而且范围不包括第二个数字所以你必须将它更改为7000:

if ID in range(1000,6999):

您可以将映射函数映射到 return 个单独的数字。

DIGITS = []
# append each digit to list
for digit in map(int, ID):
    DIGITS.append(digit)

最后,你可以检查一下各位数字的和,看能不能被七整除

# Check if sum of digits is divisible by seven
if sum(DIGITS) % 7 == 0:
    print(True)
# Not divisible by 7
else:
    print(False)

完整代码如下:

def is_valid():
    # Obtain ID Number
    ID = input("Enter ID number:")
    if int(ID) in range(1000, 7000):
        # List for individual digit in input
        DIGITS = []
        # append each digit to list
        for digit in map(int, ID):
            DIGITS.append(digit)
        # Check if sum of digits is divisible by seven
        if sum(DIGITS) % 7 == 0:
            print(True)
        # Not divisible by 7
        else:
            print(False)
    # Not between 1000 inclusive and 7000 exclusive
    else:
        print(False)

is_valid()