自 1991 年由吉多.范羅蘇姆(Guido van Rossum)研發並釋出後,陸續有許多程式設計者為 Python 提供了很多自行開發的模組,用來解決各式各樣的問題,因此學習Python 不僅可以支援大部分的應用,也能從廣大的 Python 社群中獲得豐富的資源,其中常見的應用有資料分析、科學運算、網站開發、人工智慧、機器人控制等。
Python 語言最大的優勢就是擁有極其豐富的外部函式庫支援,使的Python可以開發各式各樣有意思的專案。
## 展示POPCAT
import pyautogui
while True:
pyautogui.press('shiftleft')
請設計一個程式,讓使用者輸入名字後,電腦會將名字呈現在畫面上與使用者打招呼。
name = input("請問您的名字是?")
print("哈囉!",name,"您好!")
# Demo
print("Hello","how","are","you", sep="@")
print("Hello","how","are","you", end="@")
print("Hello","how","are","you", end="@")
# x=20
x=input("x=? ")
print(x+x)
# 三數之和
x = int(input("請輸入數字x: "))
y = int(input("請輸入數字y: "))
z = int(input("請輸入數字z: "))
print(x+y+z)
# 課堂練習 求(X+Y)*Z
x = int(input("請輸入數字x: "))
y = int(input("請輸入數字y: "))
z = int(input("請輸入數字z: "))
print((x+y)*z)
2>4
#自動轉換
num = 8+ 2.3
num
# 強制轉換
print(8%5)
print(8//5)
"文字"+"34"
請設計一個程式,讓使用者輸入兩個數字後,再呈現兩個數字的平均值。
x = int(input("請輸入數字x: "))
y = int(input("請輸入數字y: "))
average = (x+y)/2
print('平均是'+str(average))
請設計一個程式,讓使用者輸入各項成績後,再將各項成績轉換為學期成績,並判斷學期成績是否及格?(其中,作業成績占 40%,測驗成績占 40%,平時成績占20%,學期成績 60 分為及格分數。)
score1 = int(input('請輸入作業成績:'))
score2 = int(input('請輸入測驗成績:'))
score3 = int(input('請輸入平時成績:'))
grade = score1*0.4 + score2*0.4 + score3*0.2
print('學期成績是'+str(grade))
if grade < 60:
print('不及格')
else:
print('及格')
# 單向
x=30
if x<60:
print('要補考')
# 雙向
x=30
if x<60:
print('要補考')
else:
print("及格")
#多向
x=85
if x>=90:
print("優等")
elif x>=80:
print('甲等')
elif x>=70:
print('乙等')
else:
print('要補考')
請設計一個程式,讓使用者輸入數字 n 後,再計算 1 + 2 + 3 +⋯+ n 的值。
n = int(input('請輸入數字 n:'))
sum =0
for i in range(1,n+1):
sum =sum + i
print('1+2+...+'+str(sum)+'='+str(sum))
list1 =[1,2,3,4]
list2 = ['Peter','Mary', 'John']
list3 = ['Hello',23 ,True]
list1
list3[0]
list1 = range(5)
list1
##
for i in [1,2,3,4,5]:
print(i)
for i in range(1,6):
print(i)
請設計一個電腦系統的密碼驗證機制,條件如下: 1 若第一次輸入密碼錯誤後,可再重複嘗試輸入兩次。 2 若三次密碼都錯誤,跳出使用者帳號被鎖定的訊息。
# 密碼檢查程式
password = '137'
times = 1
password2 = input('請輸入密碼:')
while password != password2 and times < 3:
print('密碼錯誤!')
times = times + 1
password2 = input('請輸入密碼:')
if password == password2:
print('歡迎使用本系統')
else:
print('輸入密碼錯誤 3 次,帳號已被鎖定')
not(2>3)
請設計一個程式,讓使用者輸入一個數字後,再找出該數字的所有因數。
#
n = int(input('請輸入數字 n:'))
factors = []
for i in range(1, n+1):
if n % i == 0:
factors.append(i)
print(factors)
list1 = [1,2,3,4,5,6]
list2 = list1[1:3] #由索引值1取到不包含索引值3
list3 = list1[2:] #由索引值2取到最後
list4 = list1[:3] #由索引值0取到不包含索引值3
print(list2)
print(list3)
print(list4)
list1.append(7) #新增元素7
print(list1)
list1.remove(6) #移除元素6
print(list1)
list1.insert(0,9) #插入元素9到第0項
print(list1)
list1.insert(1,8) #插入元素8到第1項
print(list1)
有三十人參加摸獎活動,分別有編號 1 ∼ 30 的摸獎券,透過電腦進行抽獎,從中抽出三位幸運兒頒發獎品。
from random import randint # 只用亂數取整數
n = 30 # n=5(說明用)
box = [] #空串列
#以下是如洗牌
for i in range(1, n+1):
#print(i)
position = randint(0, i-1) #取大於等於0且小於等於i-1的整數
#print(position)
box.insert(position, i)
#print(box)
print(box)
# 抽獎是假的, 只是輸出前3個號碼
print('第一特獎:' + str(box[0]))
print('第二特獎:' + str(box[1]))
print('第三特獎:' + str(box[2]))
#
import random
list1 = list(range(1,31))
print(list1)
random.shuffle(list1)
print(list1)
# 抽獎是假的, 只是輸出前3個號碼
print('第一特獎:', str(list1[0]))
print('第二特獎:', str(list1[1]))
print('第三特獎:', str(list1[2]))
# 練習題: 由1到100隨機取出二個不重複的數字
請設計一個程式,先隨機產生 4 個 0 ∼ 9 之間,且不重複的數字當正確答案
我們可以將這個程式拆解為幾個部分如下:
# 課本解答
from random import randint
# 初始化變數
answer = ''
count_a = 0
count_b = 0
times = 1
# 產生正確答案
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random_answer = []
# 由串列中隨機取1數字, 並移除它
for i in range(4):
j = randint(0, 9-i)
random_answer.append(numbers[j])
numbers.remove(numbers[j])
i = i + 1
for i in range(4): #把正確答案轉成字串
answer = answer + str(random_answer[i])
print(answer) #顯示正確答案
# 取得使用者猜測的數字
input_number = input('請輸入您猜測的 4 個數:')
# 對照猜測數字與答案,給予回應
while times < 8 and input_number != answer:
for i in range(4):
for j in range(4):
if i==j and input_number[i]==answer[j]:
count_a = count_a + 1
elif input_number[i]==answer[j]:
count_b = count_b + 1
print(str(count_a)+'A'+str(count_b)+'B')
count_a=0
count_b=0
times = times + 1
input_number = input('請輸入您猜測的 4 個數:')
# 顯示最後答案
if input_number == answer :
print('您答對了,正確答案是'+answer)
else:
print('作答已達 8 次,遊戲結束,正確答案是 '+answer)
# 另一解法
# 輸入答案時要空一格空白
import random
ans = random.sample(range(1,10),4) #取4個不重複的數字
#print(ans)
count = 0 #次數
while True:
guess = list(map(int,input("輸入4位數").split())) #輸入文字分割成串列
#print(guess)
count += 1
a=0
b=0
for i in range(0,4):
if ans[i] == guess[i]:
a += 1
elif guess[i] in ans:
b += 1
if a == 4:
print(f"共猜{count}次,正確答案",ans)
break
else:
print(f'{a}A{b}B')
練習實作題目
教室裡,老師欲將同學們分組,1,2,3 號分在第 1 組,4,5,6 號分在第 2 組,依此類推。
算術運算子共 7 個: 加減乘除餘商指數
首先最直覺的想法就是除以3。 只是差了一點點,1, 2, 3 除以3 之後,分別變成 0.333, 0.666, 1。但我們的目標是 1。只有一個 3號算出來可以在 第 1 組。
第二. 0.333, 0.666 怎麼調整到變成 1? 我們可以想到一個簡單的做法,無條件進位。
第三. 如何用算術運算子達到目的?
n = int(input())
print((n+2)//3)
一個籠子裡面關了雞和兔子(雞有 2 隻腳,兔子有 4 隻腳,沒有例外)。已經知道了籠子裡面腳的總數,問籠子裡面至少有多少隻動物,至多有多少隻動物?
# Python可以用中文當變數
腳 = int(input("腳數= "))
兔 = 腳 // 4
雞 = 腳%4 //2
print("最少",兔+雞,"最多",腳//2)
某學校規定學生應在 7:30 上學,17:00 放學。給你一個時間(時:分)請問現在應該是上學還是放學?
hh = int(input("時="))
mm = int(input("分="))
count = hh*60 + mm #總分鐘數
if (count >= 7*60+30) and (count <17*60):
print("上學")
else:
print("放學")
相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只看一下隊伍的排尾就知道總人數了。(已知總人數不小於10,不超過100。)
# 測資2,3,4
a = int(input("三人一排剩幾人? "))
b = int(input("五人一排剩幾人? "))
c = int(input("七人一排剩幾人? "))
for i in range(10,101):
if i%3==a and i%5==b and i%7==c:
print(i)
break
else:
print("無解")
新冠病毒複製快速,病毒每隔一小時數量就會變成原來的 3 倍。一旦達到 x 個病毒量就會被檢驗出陽性。
如果一開始接觸到了 n 個病毒。經過多少個小時會變陽性呢?
n = int(input("一開始接觸多少個病毒? "))
x = int(input("總病毒量多少會陽性? "))
ans = 0
while n<x:
ans+=1
n*=3
#print(ans+"小時") #若寫成本行會執行錯誤, 為什麼?
print(ans,"小時")