将输入转换为列表进行求和
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()
问题是:
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()