Google Gemini回答如下
def is_positive_integer(n):
"""
判斷輸入是否為正整數
Args:
n: 要判斷的數字
Returns:
如果 n 為正整數,則回傳 True;否則回傳 False。
"""
try:
n = int(n)
return n > 0
except ValueError:
return False
def sum_of_even_numbers(n):
"""
計算 1 到 n 的所有偶數總和
Args:
n: 正整數
Returns:
1 到 n 的所有偶數總和
"""
total = 0
for num in range(1, n + 1):
if num % 2 == 0:
total += num
return total
while True:
number_str = input("請輸入一個正整數:")
if is_positive_integer(number_str):
number = int(number_str)
even_sum = sum_of_even_numbers(number)
print(f"1 至 {number} 的所有偶數總和為:{even_sum}")
break
else:
print("請輸入一個正整數:")
這段程式碼首先定義了兩個函式:
is_positive_integer(n)
:判斷輸入是否為正整數。此函式會嘗試將輸入轉換為整數,如果成功且大於 0,則回傳 True;否則回傳 False。sum_of_even_numbers(n)
:計算 1 到 n 的所有偶數總和。此函式會遍歷 1 到 n 的所有數字,如果數字為偶數,則將其加入總和中。接著,程式會使用 while True
迴圈來不斷要求使用者輸入正整數。在每次迴圈中,程式會先呼叫 is_positive_integer(number_str)
函式來判斷輸入是否為正整數。如果為正整數,則程式會將輸入轉換為整數,並呼叫 sum_of_even_numbers(number)
函式來計算偶數總和。最後,程式會將偶數總和列印出來。
如果使用者輸入的不是正整數,則程式會顯示警告訊息【請輸入一個正整數:】。
以下是程式的執行範例:
請輸入一個正整數:10
1 至 10 的所有偶數總和為:30
在這個範例中,使用者輸入了 10,程式計算出 1 到 10 的所有偶數總和為 30。
您可以根據自己的需求修改程式碼。例如,您可以新增功能來驗證使用者輸入的數字是否大於 0,或者您可以新增功能來列印出所有偶數。
ChatGPT:
你可以使用以下的Python程式碼來實現這個功能:
def get_positive_integer():
while True:
try:
num = int(input("請輸入一個正整數:"))
if num <= 0:
raise ValueError
return num
except ValueError:
print("請輸入一個正整數。")
def sum_of_even_numbers(n):
return sum(i for i in range(1, n + 1) if i % 2 == 0)
if __name__ == "__main__":
num = get_positive_integer()
result = sum_of_even_numbers(num)
print("1 至 %d 的所有偶數總和為:%d" % (num, result))
這個程式碼會先定義兩個函式,get_positive_integer 用來取得使用者輸入的正整數,而 sum_of_even_numbers 則是計算從1到該整數的所有偶數總和。然後在 main 區塊中,程式會先呼叫 get_positive_integer 函式取得正整數,然後再呼叫 sum_of_even_numbers 函式計算總和,最後將結果列印出來。
1.把首尾變成偶數
2.(上底+下底)*高/2 就是答案
輸入7,→1-7的偶數和=2-6的偶數和
2,4,6
(2+6)*3/2=12
程式適合 任何倍數的和,此邏輯適合工程研究,
判斷資料,直接公式帶出答案,又快又省資源
不過老師應該是要求要用 if 及迴圈,甚至自建副程式
所以程式分4部分
1.輸入數字
2.建立副程式: 判斷使否偶數,是偶數傳回值,否則傳回0
3.迴圈累加傳回值
4.輸出結果
上面流程適合機器人工作模組化重複性工作邏輯,一步一腳印跑完
程式適合:改動副程式可符合任何工作,如基數,倍數,質數
while True:
mystr = input("請輸入一個正整數: ")
try:
myint = int(mystr)
except:
continue
if myint > 0:
res = sum([x for x in range(1,myint+1) if x%2==0])
print('1至'+mystr+'的所有偶數總和為:'+str(res))
mystr = input("請輸入一個正整數: ")