我目前正在我的入門級 CS 課程中做作業,只需要一點幫助。
他們要求我撰寫一個程式來讀取整數串列并確定它是否有;
- 10的倍數
- 沒有 10 的倍數
- 混合值。
它目前正確輸出除了混合值之外的所有內容。這就是我所擁有的:
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def is_list_mult10(my_list):
mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 0:
mult10 = False
return mult10
def is_list_no_mult10(my_list):
no_mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 1:
no_mult10 = False
return no_mult10
if is_list_no_mult10(my_list) == True:
print("no multiples of 10")
elif is_list_mult10(my_list) == True:
print("all multiples of 10")
else:
print("mixed values")
uj5u.com熱心網友回復:
def check_multiplier(my_list):
is_10_multiplier = []
for i in my_list:
if i % 10 == 0:
is_10_multiplier.append(True)
else:
is_10_multiplier.append(False)
if sum(is_10_multiplier) == len(my_list):
print("all multiples of 10")
elif sum(is_10_multiplier) == 0:
print("no multiples of 10")
else: print("mixed values")
# tests
mixed = [1, 20, 34, -10]
check_multiplier(mixed)
no_10 = [13, 22, 101, -5]
check_multiplier(no_10)
only_10 = [20, 140, 30, -50]
check_multiplier(only_10)
函式check_multiplier索引所有元素my_list并將布林值保存到is_10_multiplier. 然后檢查 的總和is_10_multiplier,如果所有專案都是,True那么總和等于傳遞串列的長度,如果都是,False那么總和是 0。
uj5u.com熱心網友回復:
如評論中所述,您的代碼中有幾個錯誤(回傳陳述句在 for 回圈內)。
另外,邏輯似乎有點太復雜了 :) 不需要有 2 個單獨的函式,您可以嘗試:
n = int(input('How many numbers?: '))
my_list =[]
for i in range(n):
num = int(input(f'Insert element {i}: '))
my_list.append(num)
def how_may_mult10(my_list):
# counting how many multiples of 10 you have in your list
number_of_m10 = 0
for num in my_list:
if num % 10 == 0:
number_of_m10 = 1
return number_of_m10
number_of_m10 = how_may_mult10(my_list)
if number_of_m10 == len(my_list):
print('All multiples of 10')
elif number_of_m10 == 0:
print('No multiples of 10')
else:
print('Mixed values')
uj5u.com熱心網友回復:
我看到你已經做了一些邏輯和語法錯誤,正如評論中提到的那樣。
以下是您修改后的代碼:
n = int(input())
my_list =[]
for i in range(n):
num = int(input())
my_list.append(num)
def is_list_mult10(my_list):
mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 != 0:
mult10 = False
return mult10 #changed here
def is_list_no_mult10(my_list):
no_mult10 = True
for i in range(len(my_list)):
if my_list[i] % 10 == 0: #changed here
no_mult10 = False
return no_mult10 #changed here
if is_list_no_mult10(my_list) == True:
print("no multiples of 10")
elif is_list_mult10(my_list) == True:
print("all multiples of 10")
else:
print("mixed values")
它成功列印了正確的陳述句。但是,我建議您嘗試優化您的程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453940.html
標籤:Python python-3.x 功能 返回值 定义
