iT邦幫忙

0

請問一支簡單的偶數加總Python程式

  • 分享至 

  • xImage

請以Python語法撰寫ㄧ支程式,讓使用者輸入一個正整數,程式會計算由 1 到該整數的所有偶數總和。程式執行時,首先要求輸入一個正整數,程式需能判斷輸入是否為正整數, 如果不是需顯示警告訊息【請輸入一個正整數:】,如果正確輸入正整數,則將計算結果列印出來,並顯示【1 至%d 的所有偶數總和為:】(其中%d 為輸入的值)。

froce iT邦大師 1 級 ‧ 2024-04-22 22:48:29 檢舉
作業自己寫
聰明貓 iT邦新手 3 級 ‧ 2024-04-23 09:59:16 檢舉
哈哈 這個是幫別人問的,他有自己寫了,但還是想看一下其他大神的寫法,有哪些地方不同,有沒有更好的方式
froce iT邦大師 1 級 ‧ 2024-04-23 14:28:25 檢舉
認真的說,你熟python的話其實2到3行應該就結束了。
但我還是要說作業自己寫,其實包含查關鍵字、問GPT都是該他自己練習的。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2024-04-22 23:59:51

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,或者您可以新增功能來列印出所有偶數。

total = 0
for num in range(1, n + 1):
    if num % 2 == 0:
      total += num
return total

變成

total = 0
for num in range(2, n+1, 2):
    total += num

return total
0
mackuo
iT邦研究生 1 級 ‧ 2024-04-23 11:05:27

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 函式計算總和,最後將結果列印出來。

0
chuway
iT邦新手 2 級 ‧ 2024-05-05 08:26:00

1.把首尾變成偶數
2.(上底+下底)*高/2 就是答案

輸入7,→1-7的偶數和=2-6的偶數和
2,4,6
(2+6)*3/2=12
程式適合 任何倍數的和,此邏輯適合工程研究,
判斷資料,直接公式帶出答案,又快又省資源

不過老師應該是要求要用 if 及迴圈,甚至自建副程式
所以程式分4部分
1.輸入數字
2.建立副程式: 判斷使否偶數,是偶數傳回值,否則傳回0
3.迴圈累加傳回值
4.輸出結果
上面流程適合機器人工作模組化重複性工作邏輯,一步一腳印跑完
程式適合:改動副程式可符合任何工作,如基數,倍數,質數

0
may031556
iT邦新手 5 級 ‧ 2024-06-17 14:57:11
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("請輸入一個正整數: ")

我要發表回答

立即登入回答