def abc(nums): #能被2整除的數 A = [num for num in nums if num % 2 == 0] #大於10的樹 B = [num for num in nums if num > 10] #能被3整除的數 C = [num for num in nums if num % 3 == 0] #作為元祖回傳 return A,B,C
nums = [1, 4, 9, 12, 15, 20] D = abc(nums) #將D拆解成A,B,C A,B,C = D print(A) print(B) print(C)
#小計算機 a = int(input("輸入第一個數")) c = input("請輸入運算符號") b = int(input("輸入第二個數")) try: #可能引發的錯誤 #判斷運算符號 if c == "+": result = a + b print("結果:",result) elif c == "*": result = a * b print("結果:",result) elif c == "-": result = a-b print("結果:",result) elif c == "/": result = a/b print("結果:",result) elif c == "%": result = (a * b) /100 print("結果:",result) elif c == "**": result = (a+b) ** 2 print("結果:",result)
#题目:输入某年某月某日,判断这一天是这一年的第几天? a=int(input("請輸入年分:")) b=int(input("請輸入月份:")) c=int(input("請數入日期:")) result = 0 data = [31,28,31,30,31,30,31,31,30,31,30,31] if a % 4 == 0: if b > 2: result += 1 for i in range(1,b): if b <= 12: result += data[i] else: print("日期不對") break if b <= 12: if c <= 31: result += c print("今天是這一年的第",result,"天") else: print("日期不對")
if ip != newip: ip = newip res = setdns(dns_id,zone_id,auth_email,auth_key,ip) timestamp = datetime.datetime.now() print(res,"|",ip,"|",timestamp) time.sleep(300)
count = int(input("請輸入學生人數")) #新增這行 math=[None for i in range(count)] #修改這裡 english=[None for i in range(count)] #修改這裡 chinese=[None for i in range(count)] #修改這裡 subject=['math','english','chinese','not']
#定義輸入成績函式 def a_s(): while True: try: s=input('輸入要登記的科目\n math,english,chinese,not\n') if s=='not': print("english:",english) print("math:",math) print("chinese:",chinese) exit() else: #刪除這裡 for i in subject: if s not in subject: #修改這裡 print('輸入錯誤') break
student = int(input()) data = list(map(int,input().split()))
data.sort() for i in range(student): print(data[i],end=" ")
print()
def findBig(): for i in range(student): if data[i]>60: print(data[i]) break def findsmall(): for i in range(student): if data[(student-1)-i]<60: print(data[(student-1)-i]) break
if data[0]>=60: print("best case") else: findsmall()
if data[student-1]<60: print("worse case") else: findBig()
#判斷輸入的數字是否為3的倍數 while True: try: n=input('請輸入正整數:\n').split('\n') for i in range(len(n)): nl=list(map(int,n)) for a in nl: if a%3==0: print('Yes') else: print('No') except: break
for i in data: if i >=1: d.append(1) else: d.append(0)
a, b, ans = d c=0 if a!=b: c=1
out = False if a*b ==ans: print("AND") out = True if a+b>=ans: print("OR") out = True if c==ans: print("XOR") out = True if out ==False: print("IMPOSSIBLE")
times=int(input('請輸入要使用的次數:')) for i in range(times): a,b,c=map(int,input('請輸入a,b,c的值\na值為1時為加法\na值為2時為減法\na值為3時為乘法\na值為4時為除法\n').split()) if a==1: print(b+c) elif a==2: print(b-c) elif a==3: print(b*c) elif a==4: print(b/c) else: print('錯誤')
def abc(nums): A = len(nums) # A 為列表 nums 的長度 B = sum(nums) # B 為列表 nums 的元素總和 C = max(nums) # C 為列表 nums 的最大值 D = min(nums) # D 為列表 nums 的最小值 E = B / A # E 為列表 nums 的平均值 F = sum(1 for num in nums if num>E) # F 為大於平均值 E 的元素個數 return A,B,C,D,E,F
/*求三個數最大值*/ #include int main(){ int a, b, c, max; printf("Please enter the integer: \n"); scanf("%d%d%d", &a, &b, &c); max = a; if(max < b){ max = b; } if(max < c){ max = c; } printf("The maximum is %d", max); return 0; }
/*對三個變數求中位數*/ #include int main(){ int a, b, c, med; printf("Please enter three integers: \n"); scanf("%d%d%d", &a, &b, &c); med =a; if((b - med) * (b - c) < 0){ med = b; } if((c - med)*(c - b) <0){ med = c; } printf("The median is %d\n", med); return 0; }
#貨比三家 A = int(input("輸入A商店售價")) #A商店售價 B = int(input("輸入B商店售價")) #B商店售價 C = int(input("輸入C商店售價")) #C商店售價 # 判斷誰比較便宜 if A > B: if B > C: print("A商店最便宜") elif A == C: print("A商店跟C商店價格一樣") elif B > C: if B > A: print("B商店最便宜") elif B == A: print("A商店跟B商店價格一樣") elif C > A: if C > B: print("C商店最便宜") elif C == B: print("B商店跟C商店價格一樣")
h, w = list(map(int,input().split())) y, x = list(map(int,input().split())) x-=1 y-=1
data = []
for i in range(h): a = list(map(int,input().split())) data.append(a)
if data[y][x] == 0: print(0) exit()
def findconect(arr, index): if arr[index]==0: return 0 i = index outindex = [index] count = 0 while i >0: i-=1 if arr[i]!=0: outindex.append(i) count +=1 else: break i = index while i 0: i-=1 for j in indexs: a = findconect(data[i],j) if a!=0: indexs_ = a indexs =indexs_ ans+=len(indexs) i = y while i < len(data)-1: i+=1 for j in indexs: a = findconect(data[i],j) if a!=0: indexs_ = a indexs = list(indexs_) indexs_ =[] ans+=len(indexs) return ans
/*對三個數依照大小排序*/ #include int main(){ int a, b, c, t; printf("Please enter three integers: \n"); scanf("%d%d%d", &a, &b, &c); printf("Before: %2d%2d%2d\n", a, b, c); if(b < a){ t = a; a = b; b = t; } if(c < b){ t = b; b = c; c = t; } if(c < a){ t = a; a = c; c = t; } printf("After: %2d%2d%2d", a, b, c); return 0; }
#題目:將一個正整數分解質因數。 def reduceNum(n): print ('{} = '.format(n), end=" ") if not isinstance(n, int) or n <= 0 : print ('請輸入一個正確的正整數 !') exit(0) elif n in [1] : print ('{}'.format(n)) while n not in [1] : # 循环保证递归 for index in range(2, n + 1) : if n % index == 0: n //= index # n 等于 n//index if n == 1: print (index ) else : # index 一定是素数 print ('{} *'.format(index), end=" ") break
#题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 n = int(input("請輸入一個是數字:")) if n >= 90: level = "A" elif n >= 60: level = "B" else: level = "C" print(n,"為等級",level)
#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一 #个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 #的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 n=1 for i in range(10): n=(n+1)*2 n/=2 n-=1 print(n)
/*猜數字*/ #include int main(){ int a, answer; answer = 2; printf("Please enter your guess: \n"); scanf("%d", &a); if(a > answer){ printf(" Too large!\n"); } else if (a < answer) printf(" Too small!\n"); else { printf("Correct!\n"); } return 0; }
# 台中女中程式解題系統 公平的戰役(1行版) (**) a,b = map(int,input("輸入兩個數用空格隔開\n").split( )) while True: if a < b: b = b - a print("B ",b) else: a = a - b print("A ",a) break
k = int(input()) data = input() d = [] ans = 0 n = 0
for i in data: if i.islower(): d.append(1) else: d.append(-1)
for i in range(len(d)): check = d[i]*-1 if ans<n: ans = n n = 0 while True: nomatch = False try: temp = d[i+n:k+i+n] if len(temp)<k: break for j in temp: if j==check: nomatch=True if nomatch==True: break n+=k check*=-1 except: break print(ans)
if __name__ == "__main__": N = 10 # input data print ('請輸入10個數字:\n') l = [] for i in range(N): l.append(int(input('輸入一個數字:\n'))) print for i in range(N): print (l[i]) print
# 排列10個數字 for i in range(N - 1): min = i for j in range(i + 1,N): if l[min] > l[j]:min = j l[i],l[min] = l[min],l[i] print ('排列之後:') for i in range(N): print (l[i])
TRUE = 1 FALSE = 0 def SQ(x): return x * x print ('如果輸入的數字小於 50,程序將停止運行。') again = 1 while again: num = int(input('請輸入一個數字:')) print ('運算結果為: %d' % (SQ(num))) if SQ(num) >= 50: again = TRUE else: again = FALSE
#题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 for i in range(100,1000): if (i//100)**3 + (i//10%10)**3 + (i%10)**3 == i: print(i)
/*判斷三角形*/ #include int main(){ int a, b, c, t; printf("Please enter the lengths:\n"); scanf("%d%d%d", &a, &b, &c); if (a > b){ t = a; a = b; b = t; } if (b > c){ t = b; b= c; c = t; } if (a > c){ t = a; a = c; c = t; } if (a + b <= c){ printf("Not a triangle!"); } if(a == c ){ printf("regular triangle"); } else if (a == b || b == c){ printf("isoscale triangle"); } else if(a * a + b * b == c*c){ printf("rectangular triangle"); } return 0; }
#题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 a=c=int(input("請輸入一個數(10以內):")) b=int(input("請輸入次數:")) result=a print(a) for i in range(b-1): a=c+a*10 print(a) result += a print("計算和為:",result) 範例: 請輸入一個數(10以內):4
A , B = map(int,input("輸入兩個0~9的數用空格隔開\n").split( )) C = 0 if A % 2 != 0: C += 100 elif B == 2 or B == 5 or B ==8: C += 200 elif A == B: C += 50 else: print("未中獎") print("獎金為",C,"元")
/*找正因數*/ #include int main(){ int n,number; printf("N = "); scanf("%d", &n); for(number = 1 ; number <= n ; number++){ if (n % number == 0) printf("%3d", number); } }
for i in range(len(data2)- a + 1): b = data2[i:i+a] check = [] e = 0 for c in range(len(data1)): if b[c]==data1[c]: check.append(0) else: check.append(1) for d in check: e = e + d if e<=1: result.append(b)
if result ==[]: print('Not Found') else: result.sort() for i in result: print(i)
import numpy as np import matplotlib.pyplot as plt import pandas as pd
data = pd.read_csv("./randomdata.csv")
x = data["x"] y = data["y"] w = 1 b = 0 learning_rate = 0.0001
fig, ax = plt.subplots() plt.ion()
def loss(x, y, w, b): loss = 0 for i in range(len(x)): loss += (w * x[i] + b - y[i]) ** 2 return loss
def compute_gradient(x, y, w, b): w_gradient = 0 b_gradient = 0 for i in range(len(x)): w_gradient += x[i] * (x[i] * w + b - y[i]) b_gradient += (x[i] * w + b - y[i]) return w_gradient, b_gradient
for i in range(2000): print(f"w:{w:10.2e}, b:{b:10.2e}, loss:{loss(x, y, w, b):10.2e}") w_gradient, b_gradient = compute_gradient(x, y, w, b) w -= learning_rate * w_gradient b -= learning_rate * b_gradient
line.set_ydata([-5*w + b, 30 * w + b]) plt.draw() plt.pause(0.01)
#题目:给一个不多于5位的正整数,要求:一、逆序打印出各位数字,二、求它是几位数。 n=a=int(input("請輸入一個不多於五位數的數:")) data=[] for i in range(4): if n // 10 > 1 : data.append(n%10) print(n % 10) n //= 10 for j in range(len(data)): a //= 10 data.append(a) print(a) print("共有",len(data),"位數")
// 韓信點兵最大值練習 #include int main(){ int n; printf("N = "); scanf("%d", &n); int a; for (a = n; a >= 0; --a){ if (a % 3 == 2 && a % 5 ==3 && a % 7 ==2){ printf("%d", a); return 0; } } return 0; }
7-9 #題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位 if __name__ == '__main__': nmax = 50 n = int(raw_input('請輸入總人數:')) num = [] for i in range(n): num.append(i + 1)
i = 0 k = 0 m = 0
while m < n - 1: if num[i] != 0 : k += 1 if k == 3: num[i] = 0 k = 0 m += 1 i += 1 if i == n : i = 0
7-9 #題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度 f __name__ == '__main__': s = raw_input('please input a string:\n') print 'the string has %d characters.' % len(s)
# 台中女中程式解題系統 校內初賽 3.HAPPY A = input() d = {} for i in A: if i not in d: d[i] = 1 else: d[i] += 1 #利用get()來獲得"H" "A" "P" "P" "Y" 若不是就返回0(從網路上找來的方法 gifts = min( d.get("H", 0), d.get("A", 0), d.get("P", 0)//2, d.get("Y", 0)) print(gifts)
//印出九九乘法表 #include int main(){ int a = 2, b, c = 1; for (b = 1; a <= 9; ++b){ printf("%d * %d = %d\n", a, b, a*b); if (b == 9){ ++a; b = 0; } } return 0; }
def p(nsl, result=''): #定義輸出結果的函式 for t in range(len(nsl)): #重複已反向的列表長度之次數 nsl = list(map(str, nsl)) #把列表內的型態轉為字串型態 result = ''.join(nsl) #連結列表中所有字串 join用法:.join(iterable可迭代物) return result #回傳結果
for i in cl: system = int(input('請輸入要轉換的進制(2 or 8 or 16):')) d=i #建立計算結果列表函數的變數 long=0 #結果列表記錄長度的變數 while d!=0: d//=system #判別轉換進制中所需要用到的列表長度 long+=1 sl = [0] * (long) #建立轉變進制的結果列表 l = 0 #取列表中項目所使用的變數 if system == 16: while True: if i == 0: #沒得除了 nsl = list(reversed(sl)) #反向結果列表,並存入nsl列表中 print(p(nsl)) break else: change = i % system #取除以進制的餘數 #判斷10~15間的餘數改為英文 if change == 10: change = 'A' elif change == 11: change = 'B' elif change == 12: change = 'C' elif change == 13: change = 'D' elif change == 14: change = 'E' elif change == 15: change = 'F' sl[l] = change #把餘數值放到結果列表中 l += 1 #取下一項所以變數加一 i //= system elif system == 2 or system == 8: while True: if i == 0: nsl = list(reversed(sl)) print(p(nsl)) break else: change = i % system sl[l] = change l += 1 i //= system else: print('輸入錯誤')
#题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 n=int(input("請輸入一個五位數:")) if n % 10 ==n // 10000 and n % 100 //10 == n // 1000 % 10: print(n,"是回文") else: print("此數不是回文")
#题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 a=str(input("請輸入第一個字母:")) if a == "s": b=input("請輸入第二個字母:") if b == "u": print("星期日") elif b == "a": print("星期六") else: print("輸入錯誤") elif a == "m": print("星期一") elif a == "t": b=input("請輸入第二個字母:") if b == "u": print("星期二") elif b == "h": print("星期四") else: print("輸入錯誤") elif a == "w": print("星期三") elif a == "f": print("星期五") else: print("輸入錯誤")
#題目:https://zerojudge.tw/ShowProblem?problemid=b558 #求列表中的第n項 nl=[] while True: try: l=list(map(int,input('請輸入要求列表中的第幾項(按q即可退出):').split())) nl+=l except: break for i in nl: D=1 n=1 a=1 while D<i: n+=a a+=1 D+=1 print(f'第{i}項是{n}')
#身份證檢驗 def city(): ascii=[]#建立空列表存放身份證英文列表 for a in range(65,91):#建立身分證英文列表 ascii+=chr(a)#利用ASCII編碼建立連續的英文列表 cn=[n for n in range(10,36)]#建立對應身分證的數字列表 cn[8]=34 change=9 while change<14: cn[change]=cn[change]-1 change+=1 cn[14]=35 change=15 while change<22: cn[change]=cn[change]-2 change+=1 cn[23]=30 cn[24]=31 cn[25]=33 return ascii,cn#回傳兩個列表 ID_card=input('請輸入要檢驗的身分證字號:\n')#使用者輸入 s=ID_card[0]#取出開頭英文字母 el,nl=city()#建立兩個列表存放函式所回傳的列表 for num in el:#尋找開頭字母存在列表中第幾項 if s==num:#判斷字母是否相同 d=el.index(s)#把尋找到的字母為第幾項用變數存取 ecn=nl[d]#取數字列表中所對應的英文字母之數字 tens=ecn//10#取字母對應之數字的十位數 ones=ecn%10#取字母對應之數字的個位數 sum=ones*9+tens m=8#要乘的倍數 for i in range(1,9): sum+=int(ID_card[i])*m m-=1 sum+=int(ID_card[9]) result=sum%10 if result==0:#判斷結果 print('real') else: print('fake')
// 用文字繪製空心長方形 #include int main(){ int n; printf("N = "); scanf("%d", &n); int a, i; for (a = 1; a <= n; ++a){ printf("*"); } printf("\n"); for (i = 1; i <= n - 2; ++i){ printf("*"); for (a = 1; a <= n - 2; ++a){ printf(" "); } printf("*\n"); } for (a = 1; a <= n; ++a){ printf("*"); } printf("\n"); return 0; }
// 用文字繪製空心長方形 #include int main(){ int n; printf("N = "); scanf("%d", &n); int a, i; for (a = 1; a <= n; ++a){ for (i = 1; i <= n; ++i){ if(a == 1 || a == n || i == 1 || i ==n){ printf("*"); } else { printf(" "); } } printf("\n"); } return 0; }
num=input('請輸入要反向的數字:')#使用者輸入 l=[0]*len(num)#建立要分別存放字串的列表 n=0#為項數的變數 for i in num:#把使用者輸入的字串拆開並一個個加到列表中 l[n]=int(i)#轉換成數字加到列表中 n+=1 times=0#次數的判斷 pl=list(reversed(l))#反向列表
#從開頭判斷是否為0,是0要刪除那一項,若開頭不為0則直接輸出 for t in range(len(pl)):#重複pl的長度次 while pl[t]==0:#判斷第t項是否等於0 if times==0: del pl[times]#刪除為0的那一項 times+=1 else: del pl[times-1] times+=1 else: pl=list(map(str,pl))#把列表再轉回字串型態 print(''.join(pl))#連結列表中字串並輸出結果 break#跳出迴圈
I=input('請輸入字母:')#使用者輸入 l=[]#建立存放使用者輸入的列表 for i in I: l+=i#依序放入列表中 ascii=[0]*len(l)#建立轉換ASCII的列表 for n in range(len(l)):#重複列表的長度次 r=int(ord(l[n]))#轉換ASCII碼 ascii[n]=r#放入存放ASCII的列表中 result=''#建立存放結果的字串 for t in range(len(ascii)): if t==6:#最後一項沒有得比直接跳出迴圈 break elif ascii[t]>ascii[t+1]:#若前項大於後項 reduce=ascii[t]-ascii[t+1]#前項減後項 result+=str(reduce)#轉變成字串存到結果中 elif ascii[t]<ascii[t+1]:#若前項小於後項 reduce=ascii[t+1]-ascii[t]#後項減前項 result+=str(reduce)##轉變成字串存到結果中 else:#若前項與後項相同 result+='0' print(result)#輸出結果
#题目:数字比较。 a=int(input("請輸入第一個數:")) b=int(input("請輸入第二個數:")) if a > b: print(a,">",b) elif a < b: print(a,"<",b) elif a == b: print(a,"=",b) #题目:求输入数字的平方,如果平方运算后小于 50 则退出。 for i in range(100): n=int(input("請輸入一個數:")) if n**2 < 50: break else: print(n**2)
l=[]#建立一個存放使用者輸入的列表 while True: n=list(map(int,input('請輸入一個整數').split()))#讓使用者做輸入 if n==[0]:#判斷是否輸入0 break#是0跳出迴圈 else:#不是0 l+=n#把使用者輸入加入至列表中 for times in l:#從列表中的資料分別取出存到times中 rl=['']*(times+1)#建立存放結果的列表(型態是字串) for n in range(times+1):#重複範圍0~times+1 if n%7!=0:#判斷不等於0 rl[n]=str(n)#把整數型態轉換字串型態再加到列表中 else:#迴圈結束前執行 while '' in rl:#當有空白的字串存在列表中 rl.remove('')#刪除空白字串 result=' '.join(rl)#連結列表中所有的字串 print(result)#輸出結果
a1,an,d=map(int,input('請輸入首項、末項及公差\n(用空白隔開):').split())#讓使用者做輸入 pl=[]#建立空列表 time=int((an-a1)/d+1)#計算迴圈長度 for i in range(time): pl+=[a1+d*i]#把等差數列加入空列表 pl=list(map(str,pl))#把列表中數字型態轉為字串型態 result=' '.join(pl)#連結字串,sep=空白 print(result)#輸出結果
#题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 data=[] a=3 for i in range(1,51): data.append(i) for i in range(50): while len(data)//3>0: data.remove(data[a-1]) a*=2 if len(data)<3: break print(data)
#题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n n=int(input("請輸入一個數字:")) b=0 if n % 2 == 0: for i in range(2,n+1,2): b += 1/i if n % 2 != 0: for i in range(1,n+1,2): b += 1/i print(b)
#判斷使用者輸入的數字是否重複做輸入 l=['']*10#建立一個長度為10的空列表 for lt in range(10):#重複10次(lt從0~9一個個取出) l[lt]=lt#把該項轉換成該項的數字 nl=list(map(str,l))#把列表的資料型態轉換成字串型態 for d in nl:#從列表中一個個取出字串0~9做判斷 if nl.count(d)==2:#搜尋d出現的次數,若次數為2會跟遊戲規則不符合 exit()#直接結束程式
times=int(input('請輸入要給對方猜的次數:'))
for t in range(times):#重複要猜的次數 pn=input('請輸入對方猜的數字:') if len(pn)!=len(n):#若輸入的位數不相同 print('輸入位數錯誤') continue#執行下個迴圈 at=0#建立正確位置的變數 bt=0#建立位置不正確的變數 for i in range(len(pn)):#重複對方輸入的該數長度 if pn[i]==n[i]:#若猜的數字那一位跟原本設的數該值相同 at+=1#正確的變數+1 else:#若不是 bt+=1#錯誤的變數+1 else:#在小迴圈結束前做處理 print(f'{at}A{bt}B')#輸出提示 if at==len(pn):#若正確的數量跟該數長度相同就是答對了 print(f'恭喜答對\n花了{t+1}次猜到正解') exit()#結束程式
# 台中女中程式解題系統 基礎題庫 a029: 連續整數相加(一) A, B = map(int, input("輸入兩個數用空格隔開\n").split()) C = 0 D = "" for i in range(A, B+1): D += str(i) C += i if i != B: D += "+" # 添加加號
A, B = map(int, input("輸入兩個數用空格隔開\n").split()) C = 0 D = "" if A <= B: for i in range(A, B+1): D += str(i) C += i if i != B: D += "+" # 添加加號 else: for i in range (A,B-1,-1): D += str(i) C += i if i != B: D += "+"
//已知兩個整數相加是30,相乘是221,求兩個整數 #include int main(){ int n,a; for (a = 0; a <= 30; ++a){ for (n = 0; n <= a; ++n){ if (a * n == 221 && a + n == 30){ printf("a = %d\nn = %d", a, n); return 0; } } } return 0; }
//已知兩個整數相加是30,相乘是221,求兩個整數 #include int main(){ int n,a; for (n = 15; n <= 30; ++n){ a = 30 - n; if (n * a ==221){ printf("%d&%d", a, n); } } return 0; }
#题目:字符串排序。 #英文竟然也有大小之分!! a=input("輸入一串英文:") b=input("輸入一串英文:") c=input("輸入一串英文:") if a > b: a,b=b,a if a > c: a,c=c,a if b > c: b,c=c,b print(a,b,c) #英文的大小之分好像是從a~z,由小到大
def find_continuous_subsequences(lst): subsequences = [] for i in range(len(lst)): for j in range(i+1, len(lst)+1): subsequence = lst[i:j] subsequences.append(subsequence) return subsequences
# 使用者輸入整數列表 nums = input("請輸入整數列表(以逗號分隔):").split(',') nums = [int(num) for num in nums]
# 尋找連續子數列 result = find_continuous_subsequences(nums)
# 輸出結果 print("連續子數列:") for subseq in result: print(subseq)
import tensorflow as tf , datetime from tensorflow import keras from keras import datasets, layers, optimizers, Sequential, metrics, Input import numpy as np import os
n,m=map(int,input('請輸入要輸入的字串數量跟提供的數字數量\n(用空白隔開兩者):\n').split()) if m>n: print('提供的數字數量大於字串數量') exit() sl=['']*n for t in range(n): s=input('請輸入字串:') sl[t]=s#把使用者輸入之字串放到列表中儲存 num=list(map(int,input('請輸入提供的數字:').split())) string=''.join(sl)#把使用者輸入字串相連 result=[]#建立存放結果的列表 for n in num:#從提供的數字列表中一個個取出在列表中做搜尋 if n-1>len(string): print('數字大於字串長度') exit() else: result+=list(string[n-1])#先把結果取出加到列表中 else: print(''.join(result))#把列表中字串連結起來
//消費金額計算 #include int main(){ int total = 0; int id; do { scanf("%d", &id); switch (id) { case 1:total += 90; break; case 2:total += 75; break; case 3:total += 83; break; case 4:total += 89; break; case 5:total += 71; break; } } while (id != 0);//輸入零結算金額 printf("Total: %d\n", total); return 0; }
同一個題目,不同解法,也可以!
回覆刪除a = 'Hello'
回覆刪除print(a[1])
# 執行結果
e
for x in "banana":
回覆刪除print(x)
#執行結果
b
a
n
a
n
a
def abc(nums):
回覆刪除#能被2整除的數
A = [num for num in nums if num % 2 == 0]
#大於10的樹
B = [num for num in nums if num > 10]
#能被3整除的數
C = [num for num in nums if num % 3 == 0]
#作為元祖回傳
return A,B,C
nums = [1, 4, 9, 12, 15, 20]
D = abc(nums)
#將D拆解成A,B,C
A,B,C = D
print(A)
print(B)
print(C)
好方法!
刪除#小計算機
回覆刪除a = int(input("輸入第一個數"))
c = input("請輸入運算符號")
b = int(input("輸入第二個數"))
try: #可能引發的錯誤 #判斷運算符號
if c == "+":
result = a + b
print("結果:",result)
elif c == "*":
result = a * b
print("結果:",result)
elif c == "-":
result = a-b
print("結果:",result)
elif c == "/":
result = a/b
print("結果:",result)
elif c == "%":
result = (a * b) /100
print("結果:",result)
elif c == "**":
result = (a+b) ** 2
print("結果:",result)
else:
print("輸入的結果無效")
except ZeroDivisionError: #如果除數為0輸出錯誤訊息
print("錯誤!除數不能為0")
except ValueError: #如果數字無效輸出錯誤訊息
print("錯誤!無效的數字")
#题目:输入某年某月某日,判断这一天是这一年的第几天?
回覆刪除a=int(input("請輸入年分:"))
b=int(input("請輸入月份:"))
c=int(input("請數入日期:"))
result = 0
data = [31,28,31,30,31,30,31,31,30,31,30,31]
if a % 4 == 0:
if b > 2:
result += 1
for i in range(1,b):
if b <= 12:
result += data[i]
else:
print("日期不對")
break
if b <= 12:
if c <= 31:
result += c
print("今天是這一年的第",result,"天")
else:
print("日期不對")
#题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
回覆刪除for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i != j != k:
print(i,j,k)
def getip():
回覆刪除url="https://myip.com.tw/"
with requ.urlopen(url) as b:
data=b.read().decode("utf-8")
root=bs.BeautifulSoup(data,"html.parser")
a=root.find("h1")
Regex=re.compile(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}')
mo=Regex.search(a.text)
return mo.group()
這個程式會訪問myip.com
之後再用正規表達式找到網頁中寫ip的部分並且回傳
import requests
回覆刪除import json
import urllib.request as requ
import bs4 as bs
import re
import time
import datetime
def getip():
url="https://myip.com.tw/"
with requ.urlopen(url) as b:
data=b.read().decode("utf-8")
root=bs.BeautifulSoup(data,"html.parser")
a=root.find("h1")
Regex=re.compile(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}')
mo=Regex.search(a.text)
return mo.group()
ip=getip()
dns_id = '這裡我刪掉了喔'
zone_id = '這裡我刪掉了喔'
api_key = '這裡我刪掉了喔'
auth_key = "這裡我刪掉了喔"
auth_email = "這裡我刪掉了喔"
def setdns(dns_id,zone_id,auth_email,auth_key,ip):
url = 'https://api.cloudflare.com/client/v4/zones/'+zone_id+'/dns_records/'+dns_id
head = {
"Content-Type":"application/json",
"X-Auth-Email":auth_email,
"X-Auth-Key":auth_key
}
records = {
"type":"A",
"name":"mc",
"content":ip,
"proxied":True
}
req = requests.put(url,headers=head,data=json.dumps(records))
code = req.status_code
return code
ip = ""
while True:
newip = getip()
if ip != newip:
ip = newip
res = setdns(dns_id,zone_id,auth_email,auth_key,ip)
timestamp = datetime.datetime.now()
print(res,"|",ip,"|",timestamp)
time.sleep(300)
這個程式會先取得對外ip 再使用cloudflare的api 來更新dns
最後while迴圈是每隔5分鐘就檢查一次對外ip 如果不一樣就更新
這個程式可以讓網域實現 動態dns的功能
#include
回覆刪除/*打印華氏與攝氏溫度對照表*/
int main(){
int setp, upper, lower;
float fahr, celsius;
setp = 20; /*步長*/
upper = 0; /*溫度表的下限*/
upper = 300; /*溫度表的上限*/
fahr = upper;
while (fahr<=upper) {
celsius = (5.0/9.0)*(fahr - 32.0);
printf("%3.0f %6.1f\n", fahr, celsius);
fahr = fahr + setp;
}
return 0;
}
#include
刪除int main(){
int fahr;
for(fahr = 0;fahr<=300;fahr = fahr + 20){
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr - 32));
}
return 0;
}
這是一個可以猜1~100之間的數字的小遊戲
回覆刪除import random
target_number = random.randint(1, 100)
while True:
guess = int(input("請猜一個在1和100之間的數字:"))
if guess == target_number:
print("恭喜你猜對了!")
break
elif guess < target_number:
print("太小了,請再試一次。")
else:
print("太大了,請再試一次。")
def factorial(n):
回覆刪除result = 1
for i in range(1, n + 1):
result *= i
return result
num = int(input("請輸入一個正整數:"))
fact = factorial(num)
print(f"{num}的階乘為:{fact}")
這個程式可以幫助我們方便計算階乘
score=input('請輸入成績:')
回覆刪除score=int(score)
if score>=60:
print('及格')
if score<=60:
print('不及格')
今天大家很棒! 好的開始!
回覆刪除math=[[],[]]
回覆刪除english=[[],[]]
chinese=[[],[]]
subject=['math','english','chinese','not']
#定義輸入成績函式
def a_s():
while True:
try:
s=input('輸入要登記的科目\n math,english,chinese,not\n')
if s=='not':
print(english)
print(math)
print(chinese)
exit()
else:
for i in subject:
if s!=i:
print('輸入錯誤')
exit()
elif s==i:
n=int(input('請輸入要登記的座號:'))
score=map(int,input('請輸入該座號的成績:').split())
if s=='math':
math[n].append(score)
elif s=='english':
english[n].append(score)
elif s=='chinese':
chinese[n].append(score)
elif s=='not':
print(math)
print(english)
print(chinese)
else:
print('輸入錯誤')
except:
break
a_s()
這個程式還有很多bug我還沒修好
math=[[],[]]
刪除english=[[],[]]
chinese=[[],[]]
subject=['math','english','chinese','not']
#定義輸入成績函式
def a_s():
while True:
try:
s=input('輸入要登記的科目\n math,english,chinese,not\n')
if s=='not':
print(english)
print(math)
print(chinese)
exit()
else:
for i in subject:
if s!=i:
print('輸入錯誤')
break
elif s==i:
n=int(input('請輸入要登記的座號:'))
score=list(map(int,input('請輸入該座號的成績:').split()))
if s=='math':
math[n].append(score)
elif s=='english':
english[n].append(score)
elif s=='chinese':
chinese[n].append(score)
elif s=='not':
print(math)
print(english)
print(chinese)
else:
print('輸入錯誤')
break
except:
break
a_s()
這個是改過的版本,但還是有一小部分還是怪怪的
count = int(input("請輸入學生人數")) #新增這行
刪除math=[None for i in range(count)] #修改這裡
english=[None for i in range(count)] #修改這裡
chinese=[None for i in range(count)] #修改這裡
subject=['math','english','chinese','not']
#定義輸入成績函式
def a_s():
while True:
try:
s=input('輸入要登記的科目\n math,english,chinese,not\n')
if s=='not':
print("english:",english)
print("math:",math)
print("chinese:",chinese)
exit()
else:
#刪除這裡 for i in subject:
if s not in subject: #修改這裡
print('輸入錯誤')
break
n=int(input('請輸入要登記的座號:'))-1
score=int(input('請輸入該座號的成績:')) #修改這裡
if s=='math':
math[n]=score #修改這裡
elif s=='english':
english[n]=score #修改這裡
elif s=='chinese':
chinese[n]=score #修改這裡
#刪除這裡 elif s=='not':
#刪除這裡 print(math)
#刪除這裡 print(english)
#刪除這裡 print(chinese)
#刪除這裡 else:
#刪除這裡 print('輸入錯誤')
#刪除這裡 break
except:
break
a_s()
我用我的方式改了一下 給你參考
謝謝你
刪除APCS 2022 實作題1 成績指標
回覆刪除student = int(input())
data = list(map(int,input().split()))
data.sort()
for i in range(student):
print(data[i],end=" ")
print()
def findBig():
for i in range(student):
if data[i]>60:
print(data[i])
break
def findsmall():
for i in range(student):
if data[(student-1)-i]<60:
print(data[(student-1)-i])
break
if data[0]>=60:
print("best case")
else:
findsmall()
if data[student-1]<60:
print("worse case")
else:
findBig()
APCS 2022 實作題2 三角形判別
回覆刪除data = list(map(int,input().split()))
data.sort()
a, b, c =data
print(a,b,c)
if a+b<=c:
print("No")
else:
x = a*a+b*b
if xc*c:
print("Acute")
#求1~n的總和
回覆刪除while True:
try:
sum=0
n=int(input('請輸入一個正整數:'))
for i in range(1,n+1):
sum+=i
else:
print(sum)
except:
break
#判斷輸入的數字是否為3的倍數
回覆刪除while True:
try:
n=input('請輸入正整數:\n').split('\n')
for i in range(len(n)):
nl=list(map(int,n))
for a in nl:
if a%3==0:
print('Yes')
else:
print('No')
except:
break
#直角三角形
回覆刪除n = int(input("書入一個數字"))
for i in range(1,n+1): #控制行數
for j in range(1,i+1): #控制每行數字
print("%d"%(j),end= " ") #輸出數字以空白隔開
print() #換行
/*華氏與攝氏對照表*/
回覆刪除#include
int main(){
int fahr;
#define Step 20
#define Upper 300
#define Lower 0
for(fahr = Lower; fahr <= Upper; fahr = fahr + Step)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr - 32));
}
/*用於將輸入複製到輸出*/
刪除#include
int main(){
int c;
c = getchar();
while( c!=EOF ){
putchar(c);
c = getchar();
}
}
#判斷成績
回覆刪除def grade(nums):
#判斷等級
if nums>90:
return "A"
elif 80<=nums<=89:
return "B"
elif 70<=nums<=79:
return "C"
elif 60<=nums<=69:
return "D"
else:
return "F"
#測試成績輸出結果
print(grade(95))
print(grade(59))
print(grade(70))
print(grade(89))
print(grade(61))
#题目:判断101-200之间有多少个質数,并输出所有質数。
回覆刪除for i in range(101,201):
for j in range(2,i):
if i % j == 0:
print(i,"是質數")
break
for i in range(101,201):
刪除isP = True
for j in range(2,i):
if i % j == 0:
isP = False
break
if isP:
print(i,"是質數")
#九九乘法表
回覆刪除for i in range(1,10):
for j in range(1,10):
result=i*j
print("%d*%d=%-2d"%(i,j,result),end="")
print()
def analyze_list(lst):
回覆刪除# 計算列表中的最大值
max_value = max(lst)
# 計算列表中的最小值
min_value = min(lst)
# 計算列表中的總和
sum_value = sum(lst)
# 計算列表中的平均值
avg_value = sum_value / len(lst)
return max_value, min_value, sum_value, avg_value
# 輸入數字
numbers = list(map(int,input("請輸入數字").split()))
# 呼叫函式進行分析
max_val, min_val, sum_val, avg_val = analyze_list(numbers)
# 輸出結果
print("列表中的最大值:", max_val)
print("列表中的最小值:", min_val)
print("列表中的總和:", sum_val)
print("列表中的平均值:", avg_val)
這是一個可以計算所輸入數字最小值、最大值、總和及平均數的小程式
作者已經移除這則留言。
回覆刪除APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
3秘密差
data = input()
odd = 0
even = 0
for i in range(len(data)):
if i % 2==0:
even+=int(data[i])
else:
odd+=int(data[i])
ans = odd-even
if ans<0:
print(-1*ans)
else:
print(ans)
APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
4邏輯運算子
data = list(map(int,input().split()))
d = []
for i in data:
if i >=1:
d.append(1)
else:
d.append(0)
a, b, ans = d
c=0
if a!=b:
c=1
out = False
if a*b ==ans:
print("AND")
out = True
if a+b>=ans:
print("OR")
out = True
if c==ans:
print("XOR")
out = True
if out ==False:
print("IMPOSSIBLE")
#把輸入的陣列反向輸出
回覆刪除times=int(input('輸入陣列長度:'))
n=input('輸入陣列資料:').split(',')
for i in range(len(n)):
nl=list(map(int,n))
pl=list(reversed(nl))
print(pl)
欸哭啊原來有reversed()這個function 喔 我昨天還特地做了一個function 來反向排序
刪除現有的函數自己寫寫看,是很棒的學習!
刪除下次看到現成的函數不好用,就可以自己寫一個!
https://selflearningsuccess.com/python-list/
刪除我在這個網站看到的
times=int(input('請輸入要使用的次數:'))
回覆刪除for i in range(times):
a,b,c=map(int,input('請輸入a,b,c的值\na值為1時為加法\na值為2時為減法\na值為3時為乘法\na值為4時為除法\n').split())
if a==1:
print(b+c)
elif a==2:
print(b-c)
elif a==3:
print(b*c)
elif a==4:
print(b/c)
else:
print('錯誤')
#题目:输入三个整数x,y,z,请把这三个数由小到大输出。
回覆刪除x=int(input("第一個數:"))
y=int(input("第二個數:"))
z=int(input("第三個數:"))
data=[x,y,z]
print(sorted(data))
#每過一秒,輸出當前的時間
回覆刪除import time
for i in range(10):
time.sleep(1)
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
老師出的 第一題
回覆刪除h, w = list(map(int,input().split()))
data = []
for i in range(h):
temp = list(map(int,input().split()))
temp.sort()
a = temp[0]
data.append(a)
for i in data:
print(i)
data.sort()
data.reverse()
print(data[0])
def abc(nums):
回覆刪除A = len(nums) # A 為列表 nums 的長度
B = sum(nums) # B 為列表 nums 的元素總和
C = max(nums) # C 為列表 nums 的最大值
D = min(nums) # D 為列表 nums 的最小值
E = B / A # E 為列表 nums 的平均值
F = sum(1 for num in nums if num>E) # F 為大於平均值 E 的元素個數
return A,B,C,D,E,F
nums = [3, 1, 5, 2, 4, 6] #輸入要找的數
a = abc(nums)
A,B,C,D,E,F = a
print(A)
print(B)
print(C)
print(D)
print(E)
print(F)
#民國年轉換西元年
回覆刪除A = int(input("輸入一個民國年"))
B = A + 1911 #西元年
print(B)
/*求三個數最大值*/
回覆刪除#include
int main(){
int a, b, c, max;
printf("Please enter the integer: \n");
scanf("%d%d%d", &a, &b, &c);
max = a;
if(max < b){
max = b;
}
if(max < c){
max = c;
}
printf("The maximum is %d", max);
return 0;
}
/*對三個變數求中位數*/
刪除#include
int main(){
int a, b, c, med;
printf("Please enter three integers: \n");
scanf("%d%d%d", &a, &b, &c);
med =a;
if((b - med) * (b - c) < 0){
med = b;
}
if((c - med)*(c - b) <0){
med = c;
}
printf("The median is %d\n", med);
return 0;
}
#貨比三家
回覆刪除A = int(input("輸入A商店售價")) #A商店售價
B = int(input("輸入B商店售價")) #B商店售價
C = int(input("輸入C商店售價")) #C商店售價
# 判斷誰比較便宜
if A > B:
if B > C:
print("A商店最便宜")
elif A == C:
print("A商店跟C商店價格一樣")
elif B > C:
if B > A:
print("B商店最便宜")
elif B == A:
print("A商店跟B商店價格一樣")
elif C > A:
if C > B:
print("C商店最便宜")
elif C == B:
print("B商店跟C商店價格一樣")
老師出的 第2題
回覆刪除h, w = list(map(int,input().split()))
y, x = list(map(int,input().split()))
x-=1
y-=1
data = []
for i in range(h):
a = list(map(int,input().split()))
data.append(a)
if data[y][x] == 0:
print(0)
exit()
def findconect(arr, index):
if arr[index]==0:
return 0
i = index
outindex = [index]
count = 0
while i >0:
i-=1
if arr[i]!=0:
outindex.append(i)
count +=1
else:
break
i = index
while i 0:
i-=1
for j in indexs:
a = findconect(data[i],j)
if a!=0:
indexs_ = a
indexs =indexs_
ans+=len(indexs)
i = y
while i < len(data)-1:
i+=1
for j in indexs:
a = findconect(data[i],j)
if a!=0:
indexs_ = a
indexs = list(indexs_)
indexs_ =[]
ans+=len(indexs)
return ans
ans = main(data, x, y)
print(ans)
不過有bug 沒辦法處理項是下面這樣的情況
1 1 1 0 0
1 0 1 0 0
1 0 1 0 0
1 1 1 0 0
或是
1 1 1 0 0
1 0 1 0 0
1 1 1 0 0
0 0 0 0 0
的情況
google 一下dfs及bfs
刪除7/3 -1 計算年齡差
回覆刪除def calculate_age_difference(year1, year2):
age_difference = abs(year1 - year2)
return age_difference
birth_year1 = int(input("請輸入第一個人的出生年份:"))
birth_year2 = int(input("請輸入第二個人的出生年份:"))
age_difference = calculate_age_difference(birth_year1, birth_year2)
print("兩人的年齡差距為:", age_difference, "年")
抱歉晚傳了
7/3-2 把輸入數字顛倒
回覆刪除a = list(map(int,input("請輸入數字").split()))
for i in a[::-1]:
print (i)
#APCS分數換算級分
回覆刪除times=int(input('請輸入要使用的次數:'))
for i in range(times):
cs,ps=map(int,input('請先輸入觀念題(0~100)的分數再輸入實作題(0~400)的分數:\n').split())
if cs<30:
cq='1'
elif cs<50:
cq='2'
elif cs<70:
cq='3'
elif cs<90:
cq='4'
else:
cq='5'
if ps<50:
pq='1'
elif ps<150:
pq='2'
elif ps<250:
pq='3'
elif ps<350:
pq='4'
else:
pq='5'
print('觀念題級分為'+cq+'分\n實作題級分為'+pq+'分')
#取列表中位數
回覆刪除nl=list(map(int,input('請輸入一個列表:\n').split()))
nl_sorted=sorted(nl)
j=len(nl_sorted)%2
if j==0:
m1=int(len(nl_sorted)/2-1)
m2=int(len(nl_sorted)/2)
print((nl_sorted[m1]+nl_sorted[m2])/2)
else:
m=int((len(nl_sorted)+1)/2-1)
print(nl_sorted[m])
/*對三個數依照大小排序*/
回覆刪除#include
int main(){
int a, b, c, t;
printf("Please enter three integers: \n");
scanf("%d%d%d", &a, &b, &c);
printf("Before: %2d%2d%2d\n", a, b, c);
if(b < a){
t = a;
a = b;
b = t;
}
if(c < b){
t = b;
b = c;
c = t;
}
if(c < a){
t = a;
a = c;
c = t;
}
printf("After: %2d%2d%2d", a, b, c);
return 0;
}
作者已經移除這則留言。
刪除作者已經移除這則留言。
刪除作者已經移除這則留言。
刪除/*判斷成績是否及格*/
刪除#include
int main(){
int a;
printf("Please eneter the grade: \n");
scanf("%d", &a);
if(a >= 60){
printf("PASS!\n");
}
else
{
printf("PAIL!");
}
return 0;
}
#題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
回覆刪除tour = []
height = []
hei = 100.0 # 起始高度
tim = 10 # 次數
for i in range(1, tim + 1):
if i == 1:
tour.append(hei)
else:
tour.append(2*hei)
hei /= 2
height.append(hei)
print('總高度:tour = {0}'.format(sum(tour)))
print('第10次反彈高度:height = {0}'.format(height[-1]))
#題目:將一個正整數分解質因數。
回覆刪除def reduceNum(n):
print ('{} = '.format(n), end=" ")
if not isinstance(n, int) or n <= 0 :
print ('請輸入一個正確的正整數 !')
exit(0)
elif n in [1] :
print ('{}'.format(n))
while n not in [1] : # 循环保证递归
for index in range(2, n + 1) :
if n % index == 0:
n //= index # n 等于 n//index
if n == 1:
print (index )
else : # index 一定是素数
print ('{} *'.format(index), end=" ")
break
reduceNum(int(input("請輸入一個正整數:")))
# 台中女中程式解題系統 細菌繁殖
回覆刪除a,b = map(int,input("輸入兩個數用空格隔開").split( ))
c = a
d = 0
while c<b:
d += 1
c *= 3
print(d)
#题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
回覆刪除n = int(input("請輸入一個是數字:"))
if n >= 90:
level = "A"
elif n >= 60:
level = "B"
else:
level = "C"
print(n,"為等級",level)
#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
回覆刪除n=100
a=0
for i in range(10):
a+=n
n/=2
a+=n
a-=n
print("共經過:",a,"米,""第十次反彈的高度為:",n)
# 台中女中程式解題系統 倒數計時
回覆刪除n = int(input())
a = ""
for i in range(n,-1,-1):
a += str(i)
print(a)
#台中女中程式解題系統 年齡推算
回覆刪除#題目:饅頭之家住了大綠、小綠、阿藍、阿紫等四個人,其中大綠是小綠的姐姐,而且比她大三歲,阿藍則是比小綠年齡的兩倍少五歲,而阿紫年齡的十位數和阿藍相同、個位數和大綠相同。已知小綠的年齡,你能推算出阿紫是幾歲嗎?
sg=int(input())
bg=(sg+3)%10
b=(2*sg-5)//10
print(str(b)+str(bg))
#面積計算系統
回覆刪除c=input('請輸入要計算的面積種類\n正方形、長方形、三角形、梯形\n')
if c=='正方形':
s=int(input('請輸入邊長:'))
print(s**2)
elif c=='長方形':
l,w=map(int,input('請輸入長寬:').split())
print(l*w)
elif c=='三角形':
b,h=map(int,input('請輸入底跟高:').split())
print(b*h/2)
elif c=='梯形':
ob,db,h=map(int,input('請輸入上底、下底和高:').split())
print((ob+db)*h/2)
else:
print('程式出錯')
#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一
回覆刪除#个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
#的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
n=1
for i in range(10):
n=(n+1)*2
n/=2
n-=1
print(n)
#题目:打印出如下图案(菱形):
回覆刪除''' *
**
***
****
*****
******
*******
******
*****
****
***
**
*
'''
for i in range(1,8):
print("*"*i)
for j in range(6,0,-1):
print("*"*j)
/*猜數字*/
回覆刪除#include
int main(){
int a, answer;
answer = 2;
printf("Please enter your guess: \n");
scanf("%d", &a);
if(a > answer){
printf(" Too large!\n");
} else if (a < answer)
printf(" Too small!\n");
else {
printf("Correct!\n");
}
return 0;
}
/*簡易四則運算*/
刪除#include
int main(){
int num1, num2;
char op;
float answer;
printf("Please enter the formula = \n");
scanf("%d%c%d", &num1, &op, &num2);
if (op == '+') {
answer = num1 + num2;
} else if (op == '-'){
answer = num1 - num2;
} else if (op == '*'){
answer = num1 * num2;
} else if (op == '/'){
answer = (float)num1 / num2;
}
else {
printf("error!");
return 0;
}
printf("ANS: %.1f", answer);
return 0;
}
# 台中女中程式解題系統 公平的戰役(1行版) (**)
回覆刪除a,b = map(int,input("輸入兩個數用空格隔開\n").split( ))
while True:
if a < b:
b = b - a
print("B ",b)
else:
a = a - b
print("A ",a)
break
#題目1:計算購物車總金額
回覆刪除def calculate_total_price(prices):
total_price = sum(prices)
return total_price
num_items = int(input("請輸入購物車中商品的數量:"))
prices = []
for i in range(num_items):
price = float(input("請輸入第 {} 個商品的價格:".format(i+1)))
prices.append(price)
total_price = calculate_total_price(prices)
print("購物車的總金額為:", total_price)
#計算BMI指數
回覆刪除weight = float(input("請輸入您的體重(公斤):"))
height = float(input("請輸入您的身高(米):"))
bmi = weight / (height * height)
print("您的BMI指數為:", bmi)
# 台中女中程式解題系統 公平的戰役(N行版)
回覆刪除n = int(input())
for i in range(1,n+1):
a,b = map(int,input("輸入兩個數用空格隔開\n").split( ))
if a < b:
b = b - a
print("B ",b)
else:
a = a - b
print("A ",a)
作者已經移除這則留言。
回覆刪除APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
5矩陣轉換
R,C,M = list(map(int,input().split()))
data = []
for i in range(R):
data.append(list(map(int,input().split())))
step = list(map(int,input().split()))
def rotate():
data_ = []
for i in range(len(data[0])-1,-1,-1):
temp = []
for j in data:
temp.append(j[i])
data_.append(temp)
return data_
def change():
data_ = []
for i in range(len(data)-1,-1,-1):
data_.append(data[i])
return data_
for i in range(len(step)-1,-1,-1):
if step[i]==0:
data=rotate()
else:
data=change()
print(len(data),len(data[0]))
for i in data:
for j in i:
print(j,end=" ")
print()
APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
6最大和
N, M=list(map(int,input().split()))
bignums = []
S = 0
for i in range(N):
data = list(map(int,input().split()))
data.sort()
bignums.append(data[M-1])
for i in bignums:
S+=i
print(S)
NoOut=True
for i in bignums:
if S%i==0:
print(i,end=" ")
out=False
if NoOut:
print(-1)
# 台中女中程式解題系統 收集冰棒棍
回覆刪除a = int(input())
c = a #儲存最終可以吃到的冰棒數量
while a >= 5:
b = a // 5 # 換取的新冰棒數量
c += b # 將新冰棒數量加到 c 中
a = a % 5 + b # 計算剩餘的冰棒數量
print(c)
#算列表的平均數
回覆刪除l=list(map(int,input('請輸入列表\n請用空白隔開\n').split()))
sum=0
for i in l:
sum+=i
average=sum/len(l)
print(average)
#求點到直線之距離
回覆刪除dx,dy=map(int,input('請輸入點座標').split(','))
a,b,c=map(int,input('請輸入方程式的a,b,c值\n(方程式的形式為ax+by+c=0)\n').split(','))
do=(dx*a+dy*b+c)
db=(a**2+b**2)**0.5
print(do/db)
APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
7小群體
count = int(input())
friendlist = list(map(int,input().split()))
isvisited=[0 for i in range(count)]
i = 0
ans=0
for a in range(count):
if isvisited[a] ==1:
continue
else:
i = a
while True:
if isvisited[i]!=1:
isvisited[i] = 1
i = friendlist[i]
else:
ans+=1
break
print(ans)
APCS 實作題考古題
回覆刪除https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2022/10/%E5%AF%A6%E4%BD%9C%E9%A1%8C_%E9%A1%8C%E5%9E%8B%E7%AF%84%E4%BE%8B.pdf
8交錯字串
k = int(input())
data = input()
d = []
ans = 0
n = 0
for i in data:
if i.islower():
d.append(1)
else:
d.append(-1)
for i in range(len(d)):
check = d[i]*-1
if ans<n:
ans = n
n = 0
while True:
nomatch = False
try:
temp = d[i+n:k+i+n]
if len(temp)<k:
break
for j in temp:
if j==check:
nomatch=True
if nomatch==True:
break
n+=k
check*=-1
except:
break
print(ans)
#題目:對10個數進行排序
回覆刪除if __name__ == "__main__":
N = 10
# input data
print ('請輸入10個數字:\n')
l = []
for i in range(N):
l.append(int(input('輸入一個數字:\n')))
print
for i in range(N):
print (l[i])
print
# 排列10個數字
for i in range(N - 1):
min = i
for j in range(i + 1,N):
if l[min] > l[j]:min = j
l[i],l[min] = l[min],l[i]
print ('排列之後:')
for i in range(N):
print (l[i])
#題目:求輸入數字的平方,如果平方運算後小於 50 則退出
回覆刪除TRUE = 1
FALSE = 0
def SQ(x):
return x * x
print ('如果輸入的數字小於 50,程序將停止運行。')
again = 1
while again:
num = int(input('請輸入一個數字:'))
print ('運算結果為: %d' % (SQ(num)))
if SQ(num) >= 50:
again = TRUE
else:
again = FALSE
#题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
回覆刪除for i in range(100,1000):
if (i//100)**3 + (i//10%10)**3 + (i%10)**3 == i:
print(i)
#题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时
回覆刪除#,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;4
#0万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,
#超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
a = int(input("請輸入利潤數:"))
print("應發放獎金總數:")
if a-1000000>0:
b=(a-1000000)*0.01
c=400000*0.015
d=200000*0.03
e=200000*0.05
f=100000*0.075
g=100000*0.1
print(b+c+d+e+f+g)
if a-600000>0:
b=(a-600000)*0.015
c=200000*0.03
d=200000*0.05
e=100000*0.075
f=100000*0.1
print(b+c+d+e+f)
if a-400000>0:
b=(a-400000)*0.03
c=200000*0.05
d=200000*0.075
e=100000*0.1
print(b+c+d+e)
if a-200000>0:
b=(a-200000)*0.05
c=200000*0.075
d=100000*0.1
print(b+c+d)
if a-100000>0:
b=(a-100000)*0.075
c=100000*0.1
print(b+c)
else:
print(a*0.1)
/*求1加到N的整數和*/
回覆刪除#include
int main(){
int N, sum = 1, i;
printf("N = ");
scanf("%d", &N);
for(i = 2; i <= N; i++){
sum = sum + i;
}
printf("%d", sum);
}
/*求1加到N的整數和*/
刪除#include
int main(){
int N;
printf("N = ");
scanf("%d", &N);
int sum = (1 + N) * N / 2;
printf("%d", sum);
}
#最大公因數
回覆刪除def gcd(nums1,nums2):
if nums2 == 0:
return nums1
else:
return gcd(nums2,nums1%nums2)
a = int(input("輸入一個數"))
b = int(input("輸入第二個數"))
c = gcd(a,b)
print("最大公因數:",c)
# 台中女中程式解題系統 閏年判斷
回覆刪除N = int(input())
if N % 4 !=0:
print("no")
elif N % 100 != 0:
print("yes")
elif N % 400 !=0:
print("NO")
else:
print("yes")
不完全對喔!
刪除#題目:給定一個整數,n,和n以空格分隔的整數作為輸入,創建一個元組,t,那些n整數。然後計算並打印結果hash(t)。
回覆刪除#輸入格式:n表示元組中元素的數量
n=int(input('請輸入tuple中的元素數量\n'))
t=tuple(map(int,input('請輸入tuple內的資料\n用空白隔開\n').split()))
print(hash(t))
#TQC 距離判斷
回覆刪除#題目:請使用選擇敘述撰寫一程式,讓使用者輸入一個點的平面座標x和y值,判斷此點是否與點(5, 6)的距離小於或等於15,如距離小於或等於15顯示【Inside】,反之顯示【Outside】。
x,y=map(int,input('請輸入x座標和y座標:\n').split())
d=((5-x)**2+(6-y)**2)**0.5
if d<=15:
print('Inside')
else:
print('Outside')
#題目:找出列表中的奇數
回覆刪除def find_odd_numbers(numbers):
odd_numbers = []
for num in numbers:
if num % 2 != 0:
odd_numbers.append(num)
return odd_numbers
numbers = list(map(int,input("請輸入數字").split()))
odd_numbers = find_odd_numbers(numbers)
print("列表中的奇數:", odd_numbers)
#題目:找出最大公因數
回覆刪除def compute_gcd(a, b):
while b:
a, b = b, a % b
return a
num1 = int(input("請輸入第一個正整數:"))
num2 = int(input("請輸入第二個正整數:"))
gcd = compute_gcd(num1, num2)
print("最大公因數為:", gcd)
/*繪製特定長度的橫線*/
回覆刪除#include
int main(){
int N, b;
printf("N = ");
scanf("%d", &N);
for(b = 0; b <= N; b++){
printf("*");
}
printf("\n");
return 0;
}
/*判斷三角形*/
刪除#include
int main(){
int a, b, c, t;
printf("Please enter the lengths:\n");
scanf("%d%d%d", &a, &b, &c);
if (a > b){
t = a;
a = b;
b = t;
}
if (b > c){
t = b;
b= c;
c = t;
}
if (a > c){
t = a;
a = c;
c = t;
}
if (a + b <= c){
printf("Not a triangle!");
}
if(a == c ){
printf("regular triangle");
} else if (a == b || b == c){
printf("isoscale triangle");
} else if(a * a + b * b == c*c){
printf("rectangular triangle");
}
return 0;
}
#题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
回覆刪除a=c=int(input("請輸入一個數(10以內):"))
b=int(input("請輸入次數:"))
result=a
print(a)
for i in range(b-1):
a=c+a*10
print(a)
result += a
print("計算和為:",result)
範例:
請輸入一個數(10以內):4
請輸入次數:4
4
44
444
4444
計算和為: 4936
#题目:分解一個數。
回覆刪除n=int(input("請輸入一個數字:"))
print("此數的因數有:")
for i in range(1,n+1):
if n % i == 0:
print(i)
n /= i
else :
print(n)
break
import requests
回覆刪除from pytube import YouTube
def download_youtube_thumbnail(video_url):
yt = YouTube(video_url)
thumbnail_url = yt.thumbnail_url
response = requests.get(thumbnail_url)
if response.status_code == 200:
filename = 'thumbnail.jpg'
with open(filename, 'wb') as f:
f.write(response.content)
print(f"封面圖片下載完成: {filename}")
else:
print("無法獲取封面圖片")
video_url = 'https://www.youtube.com/watch?v=62UdiKUTAlw'
download_youtube_thumbnail(video_url)
這是一個可以取得youtube影片封面的小程式
z = []
回覆刪除try:
while True:
y = input()
z.append(y)
except EOFError:
pass
for x in z:
a = int(x)
if(a%400==0):
print('閏年')
elif(a%100==0):
print('平年')
elif(a%4==0):
print('閏年')
else:
print('平年')
這個程式可以判斷輸入的年份是閏年或平年
# 台中女中程式解題系統 矩形面積
回覆刪除H,W = map(int,input("輸入兩個數用空格隔開\n").split( ))
A = H*W
print(A)
作者已經移除這則留言。
回覆刪除# 台中女中程式解題系統 刮刮樂兌獎(二)
回覆刪除A , B = map(int,input("輸入兩個0~9的數用空格隔開\n").split( ))
C = 0
if A % 2 != 0:
C += 100
elif B == 2 or B == 5 or B ==8:
C += 200
elif A == B:
C += 50
else:
print("未中獎")
print("獎金為",C,"元")
作者已經移除這則留言。
回覆刪除#成績登記系統
回覆刪除#把list[0]改成座號1~num號的排序
def n(f):
for a in range(1,num+1):
f[0][a-1]=a
num=int(input('請輸入要從1號登記到幾號:'))
#創立各科目的二維list,list[0]代表座號,list[1]代表成績
chinese=[[0]*(num),[0]*(num)]
math=[[0]*(num),[0]*(num)]
english=[[0]*(num),[0]*(num)]
n(chinese)
n(math)
n(english)
ns=1#提示使用者該輸入的座號成績之變數
#使用者輸入成績
for i in range(num):
print(f'請輸入{ns}號成績')
es=int(input('請輸入英文成績:'))
english[1][i]=es
ms=int(input('請輸入數學成績:'))
math[1][i]=ms
cs=int(input('請輸入國文成績:'))
chinese[1][i]=cs
ns+=1
#輸出結果
print(chinese)
print(math)
print(english)
#成績登記系統
刪除#把list[0]改成座號1~num號的排序
def n(f):
for a in range(1,num+1):
f[0][a-1]=a
num=int(input('請輸入要從1號登記到幾號:'))
#創立各科目的二維list,list[0]代表座號,list[1]代表成績
chinese=[[0]*(num),[0]*(num)]
math=[[0]*(num),[0]*(num)]
english=[[0]*(num),[0]*(num)]
n(chinese)
n(math)
n(english)
ns=1#提示使用者該輸入的座號成績之變數
#使用者輸入成績
for i in range(num):
print(f'請輸入{ns}號成績')
es=int(input('請輸入英文成績:'))
english[1][i]=es
ms=int(input('請輸入數學成績:'))
math[1][i]=ms
cs=int(input('請輸入國文成績:'))
chinese[1][i]=cs
ns+=1
#輸出結果
print(f'chinese:{chinese}')
print(f'math:{math}')
print(f'english:{english}')
#成績查詢系統
def inquire():
while True:
inq_num=int(input('請輸入要查詢的座號(輸入0即可退出):'))
if inq_num==0:
print('感謝您的使用')
break
sub=input('請輸入要查詢的科目成績\n輸入math,english,chinese\n')
if sub=='math':
print(math[1][inq_num-1])
elif sub=='english':
print(english[1][inq_num-1])
elif sub=='chinese':
print(chinese[1][inq_num-1])
else:
print('輸入錯誤')
inquire()
這個程式改了輸出成績的程式,並且增加了成績搜尋的程式
/*找正因數*/
回覆刪除#include
int main(){
int n,number;
printf("N = ");
scanf("%d", &n);
for(number = 1 ; number <= n ; number++){
if (n % number == 0)
printf("%3d", number);
}
}
/*韓信點兵*/
刪除#include
int main(){
int a;
while (!(a%3 == 2 && a%5 == 3 && a%7 == 2) ){
++a;
}
printf("%d\n", a);
return 0;
}
public class test
回覆刪除{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
java 的Hello World
ytp2022初賽第一題https://www.tw-ytp.org/wp-content/uploads/2022/12/YTP2022PreliminaryContest_S1.pdf
回覆刪除打倒怪獸 - Defeat the monster
data1 = input()
data2 = input()
a = len(data1)
result=[]
for i in range(len(data2)- a + 1):
b = data2[i:i+a]
check = []
e = 0
for c in range(len(data1)):
if b[c]==data1[c]:
check.append(0)
else:
check.append(1)
for d in check:
e = e + d
if e<=1:
result.append(b)
if result ==[]:
print('Not Found')
else:
result.sort()
for i in result:
print(i)
#題目:數字比較
回覆刪除if __name__ == '__main__':
i = int(input("請輸入第一個正整數:"))
j = int(input("請輸入第二個正整數:"))
if i > j:
print ('%d 大於 %d' % (i,j))
elif i == j:
print ('%d 等於 %d' % (i,j))
elif i < j:
print ('%d 小於 %d' % (i,j))
else:
print ('未知')
#題目:學習使用按位異或 ^
回覆刪除if __name__ == '__main__':
a = 0o77
b = a ^ 3
print ('The a ^ 3 = %d' % b)
b ^= 7
print ('The a ^ b = %d' % b)
#题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
回覆刪除a=2
b=1
re=0
for i in range(1,21):
re+=a/b
x=a
a+=b
b=x
print(re)
#题目:利用递归函数调用方式,将所输入的字符,以相反顺序打印出来。
回覆刪除b=input("請輸入一串字:")
for i in range(len(b)-1,0,-1):
print(b[i])
print(b[0])
作者已經移除這則留言。
回覆刪除import pandas as pd
回覆刪除import matplotlib.pyplot as plt
import random
pd.set_option('display.max_rows', None)
def f(x, a=1, b=0):
return a*x+b
randomdata = pd.DataFrame(columns=["x","y"])
for j in range(4):
for i in range(25):
a = f(i,a=-1,b=10) + random.uniform(1,20)
randomdata.loc[len(randomdata)] = {"x":i,"y":a}
x = randomdata["x"]
y = randomdata["y"]
plt.scatter(x,y)
plt.show()
randomdata.to_csv("./randomdata.csv")
這個程式可以生成以y=ax+b的線型函數隨機偏移的資料
以pandas來儲存資料並且匯出成csv檔
再以matplotlib來顯示資料
import numpy as np
回覆刪除import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv("./randomdata.csv")
x = data["x"]
y = data["y"]
w = 1
b = 0
learning_rate = 0.0001
fig, ax = plt.subplots()
plt.ion()
def loss(x, y, w, b):
loss = 0
for i in range(len(x)):
loss += (w * x[i] + b - y[i]) ** 2
return loss
def compute_gradient(x, y, w, b):
w_gradient = 0
b_gradient = 0
for i in range(len(x)):
w_gradient += x[i] * (x[i] * w + b - y[i])
b_gradient += (x[i] * w + b - y[i])
return w_gradient, b_gradient
plt.scatter(x, y)
line, = ax.plot([-5, 30], [-5*w + b, 30 * w + b])
for i in range(2000):
print(f"w:{w:10.2e}, b:{b:10.2e}, loss:{loss(x, y, w, b):10.2e}")
w_gradient, b_gradient = compute_gradient(x, y, w, b)
w -= learning_rate * w_gradient
b -= learning_rate * b_gradient
line.set_ydata([-5*w + b, 30 * w + b])
plt.draw()
plt.pause(0.01)
plt.ioff()
plt.show()
這個程式是以剛剛以y=3x+10隨機生成的data來算出的此資料的遞迴直線
這個程式是用 梯度下降法 一種機器學習常會用到的一種方法
這個程式的核心就是要先把 loss函數 做w的偏微分 和b的偏微分
再讓程式跑個2000次來慢慢地讓電腦算出遞迴直線
最後用matplotlib把資料和遞迴值線的變化可視化
如果想看此資料的遞迴直線變化 要先把我前一個隨機生成2維資料的程式載下來並執行後
把生成出來的.csv檔放到跟此程式相同的資料夾再執行此程式
我自己測試後的結果是算出來的遞迴直線為y=3.1x+9.07跟 y=3x+10可以說是非常接近
至於那些誤差是因為我生成的資料是隨機的
作者已經移除這則留言。
回覆刪除#一元二次方程式的解
回覆刪除print('輸入格式為ax^2+bx+c=0')
a,b,c=map(int,input('請輸入a,b,c的值(請依照上面格式做輸入)\n').split())
D=b**2-4*a*c #判別式計算
if D==0:
ans=-b/2*a
print(f'解為{ans}(重根)')
elif D>0:
ans1=-b+D**0.5/2*a
ans2=-b-D**0.5/2*a
print(f'解為{ans1} or {ans2}')
else:
print('此方程式無解')
建議可以改成 "此方程式無實數解"
刪除對欸
刪除謝謝你
#题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
回覆刪除a=10
for i in range(4):
a+=2
print(a)
#题目:给一个不多于5位的正整数,要求:一、逆序打印出各位数字,二、求它是几位数。
回覆刪除n=a=int(input("請輸入一個不多於五位數的數:"))
data=[]
for i in range(4):
if n // 10 > 1 :
data.append(n%10)
print(n % 10)
n //= 10
for j in range(len(data)):
a //= 10
data.append(a)
print(a)
print("共有",len(data),"位數")
#猜數字遊戲
回覆刪除import random#導入隨機取數的套件
m=int(input('請輸入猜的數字範圍的最大值:'))
#創立空列表
l=[0]*m
#隨機取數
for i in range(1,m+1):
l[i-1]=i
r=l[random.randint(0,m-1)]
#猜的次數
times=1
#建立範圍變數:最小值、最大值
min=0
max=0
#比較猜值和輸入值
while True:
n=int(input('請輸入您猜的數字:'))
if n>m or n<1:#輸入的數字不在範圍內
print('輸入錯誤請重新輸入')
continue
elif r==n:#輸入值跟猜值一樣
print(f'恭喜您猜對了!\n您花了{times}次猜到正解(輸入錯誤的次數不算)')
break
elif times==1:#若為第一次輸入
if n>r:#第一次輸入值比猜值大
max=n
min=1
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
times+=1
else:#第一次輸入值比猜值小
min=n
max=m
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
times+=1
elif n>r:#若輸入值比猜值大(防止使用者輸入錯誤)
if n>max:#輸入值大於範圍
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
else:#輸入值在範圍內
max=n#把輸入值調至為最大值
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
times+=1
else:
if n<min:#若輸入值比範圍小(防止使用者輸入錯誤)
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
else:
min=n#把輸入值調至為最小值
print(f'請輸入猜的數字\n提示:{min}~{max}之間')
times+=1
不用random.randint()直接當成變數做使用是因為若使用者亂輸入的話,沒辦法用判別式判斷使用者亂輸入(因為數值沒辦法跟函式的值做比較)
//判斷質數
回覆刪除#include
int main(){
int n;
printf("N = ");
scanf("%d", &n);
int aOfDivisor = 0;
int a;
for (a = 2; a < n; ++a){
if(n % a == 0){
++aOfDivisor;
}
}
if (aOfDivisor == 0){
printf("Yes!\n");
} else {
printf("No!\n");
}
return 0;
}
// 韓信點兵最大值練習
刪除#include
int main(){
int n;
printf("N = ");
scanf("%d", &n);
int a;
for (a = n; a >= 0; --a){
if (a % 3 == 2 && a % 5 ==3 && a % 7 ==2){
printf("%d", a);
return 0;
}
}
return 0;
}
作者已經移除這則留言。
刪除7-9
回覆刪除#題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位
if __name__ == '__main__':
nmax = 50
n = int(raw_input('請輸入總人數:'))
num = []
for i in range(n):
num.append(i + 1)
i = 0
k = 0
m = 0
while m < n - 1:
if num[i] != 0 : k += 1
if k == 3:
num[i] = 0
k = 0
m += 1
i += 1
if i == n : i = 0
i = 0
while num[i] == 0: i += 1
print num[i]
7-9
回覆刪除#題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,並輸出其長度
f __name__ == '__main__':
s = raw_input('please input a string:\n')
print 'the string has %d characters.' % len(s)
import tensorflow as tf
回覆刪除from tensorflow import keras
from keras import datasets, layers, optimizers
import numpy as np
(xs_train, ys_train), (xs_test, ys_test) = datasets.mnist.load_data()
xs_train = tf.convert_to_tensor(xs_train,dtype=tf.float32)/255
ys_train = tf.convert_to_tensor(ys_train,dtype=tf.int32)
ys_train = tf.one_hot(ys_train,depth=10)
db = tf.data.Dataset.from_tensor_slices((xs_train,ys_train)).batch(255)
model = keras.Sequential([
layers.Dense(512,activation='relu'),
layers.Dense(256,activation='relu'),
layers.Dense(10)
])
optimizer = optimizers.SGD(learning_rate=0.001)
def train_epoch(epoch):
for step, (x,y) in enumerate(db):
with tf.GradientTape() as tape:
x = tf.reshape(x,(-1,28*28))
out = model(x)
loss = tf.reduce_sum(tf.square(out-y))/x.shape[0]
grads = tape.gradient(loss,model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
if step %100 == 0:
print(epoch,step,"loss:",loss.numpy())
def train():
for epoch in range(30):
train_epoch(epoch)
train()
這是一個用mnist的手寫數字資料來訓練的圖片辨識AI
不過我還沒研究好該怎麼使用訓練好的模型
他用了keras.Sequential創造了一個隱藏層為兩層的模型
並在之後使用梯度下降的方式來更新權重(W)跟偏置(B)
import tensorflow as tf
回覆刪除from tensorflow import keras
from keras import datasets
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
(x, y), _ = datasets.mnist.load_data()
x:tf.Tensor = tf.convert_to_tensor(x,dtype=tf.float32)/255
y:tf.Tensor = tf.convert_to_tensor(y,dtype=tf.int32)
train_db = tf.data.Dataset.from_tensor_slices((x, y )).batch(128)
train_iter = iter(train_db)
sample = next(train_iter)
lr = 0.001
w1 = tf.Variable(tf.random.truncated_normal([784,256],stddev=0.1))
b1 = tf.Variable(tf.zeros([256]))
w2 = tf.Variable(tf.random.truncated_normal([256,128],stddev=0.1))
b2 = tf.Variable(tf.zeros([128]))
w3 = tf.Variable(tf.random.truncated_normal([128,10],stddev=0.1))
b3 = tf.Variable(tf.zeros([10]))
for epoch in range(10): #for db 10time
for step, (x,y) in enumerate(train_db): #for every batch
x = tf.reshape(x, [-1, 28*28])
with tf.GradientTape() as tape:
# [b,784]@[784,256]+[256] => [b,256]+[256] => [b,256] + [b,256] => [b,256]
h1 = x@w1 + tf.broadcast_to(b1, [x.shape[0],256])
h1 = tf.nn.relu(h1)
h2 = h1@w2 + b2
h2 = tf.nn.relu(h2)
out = h2@w3 + b3
y_onehot = tf.one_hot(y,depth=10)
loss = tf.square(y_onehot-out)
loss = tf.reduce_mean(loss)
#compute gradient
gradients = tape.gradient(loss,[w1,b1,w2,b2,w3,b3])
#w = w - lr * w_gradient
# w1 = w1 - lr*gradients[0]
# b1 = b1 - lr*gradients[1]
# w2 = w2 - lr*gradients[2]
# b2 = b2 - lr*gradients[3]
# w3 = w3 - lr*gradients[4]
# b3 = b3 - lr*gradients[5]
w1.assign_sub(lr*gradients[0])
b1.assign_sub(lr*gradients[1])
w2.assign_sub(lr*gradients[2])
b2.assign_sub(lr*gradients[3])
w3.assign_sub(lr*gradients[4])
b3.assign_sub(lr*gradients[5])
if step %100 == 0:
print(epoch, step, "loss: ",float(loss))
這也是一個用mnist的手寫數字資料來訓練的圖片辨識AI
不過跟前一個的差別是 這個不是用tensorflow裡現成的方法來創造模型
簡單來說這個程式把前一個程式的東西都拆開來寫 可以讓人比較了解Deep Learning的流程
# 台中女中程式解題系統 校內初賽 3.HAPPY
回覆刪除A = input()
d = {}
for i in A:
if i not in d:
d[i] = 1
else:
d[i] += 1
#利用get()來獲得"H" "A" "P" "P" "Y" 若不是就返回0(從網路上找來的方法
gifts = min( d.get("H", 0), d.get("A", 0), d.get("P", 0)//2, d.get("Y", 0))
print(gifts)
# 台中女中程式解題系統 初級題庫 6.Hello, XXX!
回覆刪除name = input()
print("Hallo, {}!".format(name))
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除題目:判斷兩個字串是否為同構字串
回覆刪除def isomorphic_strings(str1, str2):
if len(str1) != len(str2):
return False
mapping = {}
used_chars = set()
for i in range(len(str1)):
char1 = str1[i]
char2 = str2[i]
if char1 in mapping:
if mapping[char1] != char2:
return False
else:
if char2 in used_chars:
return False
mapping[char1] = char2
used_chars.add(char2)
return True
string1 = input("請輸入第一個字串:")
string2 = input("請輸入第二個字串:")
if isomorphic_strings(string1, string2):
print("Yes")
else:
print("No")
題目:計算字串中的大寫字母數量
回覆刪除def count_uppercase_letters(string):
count = 0
for char in string:
if char.isupper():
count += 1
return count
string = input("請輸入一個字串:")
uppercase_count = count_uppercase_letters(string)
print("大寫字母的數量為:", uppercase_count)
// 韓信點兵求前三小的數
回覆刪除#include
int main(){
int count, a = 0;
for (count = 0; count > -1; ++count){
if (count % 3 == 2 && count % 5 == 3 && count % 7 == 2){
a++;
printf("%d ", count);
}
if ( a >= 3){
break;
}
}
return 0;
}
//印出九九乘法表
刪除#include
int main(){
int a = 2, b, c = 1;
for (b = 1; a <= 9; ++b){
printf("%d * %d = %d\n", a, b, a*b);
if (b == 9){
++a;
b = 0;
}
}
return 0;
}
#題目:https://zerojudge.tw/ShowProblem?problemid=a053
回覆刪除#計分系統
m=int(input('請輸入答對的題數:'))
if m<=10:
result=m*6
print(f'得分為{result}分')
elif m<=20:
result=(m-10)*2+10*6
print(f'得分為{result}分')
elif m<40:
result=(m-20)*1+10*2+10*6
print(f'得分為{result}分')
else:
print('得分為100分')
#把十進制轉為2、8或16進制
回覆刪除cl = [] #存放要轉變進制的十進制數字
def p(nsl, result=''): #定義輸出結果的函式
for t in range(len(nsl)): #重複已反向的列表長度之次數
nsl = list(map(str, nsl)) #把列表內的型態轉為字串型態
result = ''.join(nsl) #連結列表中所有字串 join用法:.join(iterable可迭代物)
return result #回傳結果
while True: #讓使用者做連續輸入
try:
i_n = list(map(int, input('請輸入要轉換的十進位數字:\n').split('\n')))
cl += i_n #輸入內容存放至cl列表中等等做處理
except:
break
for i in cl:
system = int(input('請輸入要轉換的進制(2 or 8 or 16):'))
d=i #建立計算結果列表函數的變數
long=0 #結果列表記錄長度的變數
while d!=0:
d//=system #判別轉換進制中所需要用到的列表長度
long+=1
sl = [0] * (long) #建立轉變進制的結果列表
l = 0 #取列表中項目所使用的變數
if system == 16:
while True:
if i == 0: #沒得除了
nsl = list(reversed(sl)) #反向結果列表,並存入nsl列表中
print(p(nsl))
break
else:
change = i % system #取除以進制的餘數
#判斷10~15間的餘數改為英文
if change == 10:
change = 'A'
elif change == 11:
change = 'B'
elif change == 12:
change = 'C'
elif change == 13:
change = 'D'
elif change == 14:
change = 'E'
elif change == 15:
change = 'F'
sl[l] = change #把餘數值放到結果列表中
l += 1 #取下一項所以變數加一
i //= system
elif system == 2 or system == 8:
while True:
if i == 0:
nsl = list(reversed(sl))
print(p(nsl))
break
else:
change = i % system
sl[l] = change
l += 1
i //= system
else:
print('輸入錯誤')
#题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
回覆刪除n=int(input("請輸入一個五位數:"))
if n % 10 ==n // 10000 and n % 100 //10 == n // 1000 % 10:
print(n,"是回文")
else:
print("此數不是回文")
#题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
回覆刪除a=str(input("請輸入第一個字母:"))
if a == "s":
b=input("請輸入第二個字母:")
if b == "u":
print("星期日")
elif b == "a":
print("星期六")
else:
print("輸入錯誤")
elif a == "m":
print("星期一")
elif a == "t":
b=input("請輸入第二個字母:")
if b == "u":
print("星期二")
elif b == "h":
print("星期四")
else:
print("輸入錯誤")
elif a == "w":
print("星期三")
elif a == "f":
print("星期五")
else:
print("輸入錯誤")
# 台中女中程式解題系統 基礎題庫 a050: 九九乘法表
回覆刪除N = int(input())
for i in range(1,N+1):
for j in range(1,N+1):
print("%d * %d ="%(i,j),i*j,end=" ")
print()
# 台中女中程式解題系統 初級題庫 b005: 熱門點播
回覆刪除A = list(map(int, input("請輸入明信片上的點播歌曲編號:").split()))
count = {}
for i in A:
if i in count:
count[i] += 1
else:
count[i] = 1
number = 0
total = 0
for Z, X in count.items():
if X > total:
total = X
number = Z
print(number, total)
#題目:https://zerojudge.tw/ShowProblem?problemid=b558
回覆刪除#求列表中的第n項
nl=[]
while True:
try:
l=list(map(int,input('請輸入要求列表中的第幾項(按q即可退出):').split()))
nl+=l
except:
break
for i in nl:
D=1
n=1
a=1
while D<i:
n+=a
a+=1
D+=1
print(f'第{i}項是{n}')
#題目網址:https://zerojudge.tw/ShowProblem?problemid=a020
回覆刪除#身份證檢驗
def city():
ascii=[]#建立空列表存放身份證英文列表
for a in range(65,91):#建立身分證英文列表
ascii+=chr(a)#利用ASCII編碼建立連續的英文列表
cn=[n for n in range(10,36)]#建立對應身分證的數字列表
cn[8]=34
change=9
while change<14:
cn[change]=cn[change]-1
change+=1
cn[14]=35
change=15
while change<22:
cn[change]=cn[change]-2
change+=1
cn[23]=30
cn[24]=31
cn[25]=33
return ascii,cn#回傳兩個列表
ID_card=input('請輸入要檢驗的身分證字號:\n')#使用者輸入
s=ID_card[0]#取出開頭英文字母
el,nl=city()#建立兩個列表存放函式所回傳的列表
for num in el:#尋找開頭字母存在列表中第幾項
if s==num:#判斷字母是否相同
d=el.index(s)#把尋找到的字母為第幾項用變數存取
ecn=nl[d]#取數字列表中所對應的英文字母之數字
tens=ecn//10#取字母對應之數字的十位數
ones=ecn%10#取字母對應之數字的個位數
sum=ones*9+tens
m=8#要乘的倍數
for i in range(1,9):
sum+=int(ID_card[i])*m
m-=1
sum+=int(ID_card[9])
result=sum%10
if result==0:#判斷結果
print('real')
else:
print('fake')
// 用文字繪製空心長方形
回覆刪除#include
int main(){
int n;
printf("N = ");
scanf("%d", &n);
int a, i;
for (a = 1; a <= n; ++a){
printf("*");
}
printf("\n");
for (i = 1; i <= n - 2; ++i){
printf("*");
for (a = 1; a <= n - 2; ++a){
printf(" ");
}
printf("*\n");
}
for (a = 1; a <= n; ++a){
printf("*");
}
printf("\n");
return 0;
}
// 用文字繪製空心長方形
刪除#include
int main(){
int n;
printf("N = ");
scanf("%d", &n);
int a, i;
for (a = 1; a <= n; ++a){
for (i = 1; i <= n; ++i){
if(a == 1 || a == n || i == 1 || i ==n){
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
#题目:对10个数进行排序。
回覆刪除data=[]
for i in range(10):
a=int(input("請輸入一個數字:"))
data.append(a)
data.sort()
print(data)
#题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
回覆刪除a = [1,4,6,9,13,16,19,28,40,100]
b=int(input("請輸入一個數字:"))
a.append(b)
a.sort() #原來的規律是由小到大排序
print(a)
#題目:計算元組元素的總和
回覆刪除def compute_tuple_sum(tuple_nums):
sum = 0
for num in tuple_nums:
sum += num
return sum
tuple_nums = list(map(int,input("請輸入數字").split()))
total_sum = compute_tuple_sum(tuple_nums)
print("元組元素的總和為:", total_sum)
#題目:合併元組
回覆刪除def merge_tuples(tuple1, tuple2):
merged_tuple = tuple1 + tuple2
return merged_tuple
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
merged = merge_tuples(tuple1, tuple2)
print("合併後的元組:", merged)
import tensorflow as tf
回覆刪除from tensorflow import keras
from keras import datasets
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
(x, y), (x_test, y_test) = datasets.mnist.load_data()
x = tf.convert_to_tensor(x,dtype=tf.float32)/255
y = tf.convert_to_tensor(y,dtype=tf.int32)
x_test = tf.convert_to_tensor(x_test,dtype=tf.float32)/255
y_test = tf.convert_to_tensor(y_test,dtype=tf.int32)
train_db = tf.data.Dataset.from_tensor_slices((x, y )).batch(128)
test_db = tf.data.Dataset.from_tensor_slices((x_test,y_test)).batch(128)
lr = 0.01
w1 = tf.Variable(tf.random.truncated_normal([784,256],stddev=0.1))
b1 = tf.Variable(tf.zeros([256]))
w2 = tf.Variable(tf.random.truncated_normal([256,128],stddev=0.1))
b2 = tf.Variable(tf.zeros([128]))
w3 = tf.Variable(tf.random.truncated_normal([128,10],stddev=0.1))
b3 = tf.Variable(tf.zeros([10]))
for epoch in range(19): #for db 10time
train_db.shuffle(600000)
for step, (x,y) in enumerate(train_db): #for every batch
x = tf.reshape(x, [-1, 28*28])
with tf.GradientTape() as tape:
# [b,784]@[784,256]+[256] => [b,256]+[256] => [b,256] + [b,256] => [b,256]
h1 = x@w1 + b1
h1 = tf.nn.relu(h1)
h2 = h1@w2 + b2
h2 = tf.nn.relu(h2)
out = h2@w3 + b3
y_onehot = tf.one_hot(y,depth=10)
loss = tf.square(y_onehot-out)
loss = tf.reduce_mean(loss)
#compute gradient
gradients = tape.gradient(loss,[w1,b1,w2,b2,w3,b3])
#w = w - lr * w_gradient
w1.assign_sub(lr*gradients[0])
b1.assign_sub(lr*gradients[1])
w2.assign_sub(lr*gradients[2])
b2.assign_sub(lr*gradients[3])
w3.assign_sub(lr*gradients[4])
b3.assign_sub(lr*gradients[5])
if step %100 == 0:
print(epoch, step, "loss: ",float(loss))
#test
total_correct, total_num = 0,0
for step ,(x,y) in enumerate(test_db):
x = tf.reshape(x, [-1, 28*28])
h1 = x@w1 + b1
h1 = tf.nn.relu(h1)
h2 = h1@w2 + b2
h2 = tf.nn.relu(h2)
out = h2@w3 + b3
prob = tf.nn.softmax(out, axis=1)
pred = tf.argmax(out,axis=1,output_type=tf.int32)
correct = tf.reduce_sum(tf.cast(tf.equal(pred, y),dtype=tf.int32))
total_correct+= correct.numpy()
total_num+=x.shape[0]
acc = total_correct/ total_num
print("acc: ",acc)
增加了測試的部分 精準度可以到80幾%
#題目:https://zerojudge.tw/ShowProblem?problemid=a038
回覆刪除#數字翻轉
num=input('請輸入要反向的數字:')#使用者輸入
l=[0]*len(num)#建立要分別存放字串的列表
n=0#為項數的變數
for i in num:#把使用者輸入的字串拆開並一個個加到列表中
l[n]=int(i)#轉換成數字加到列表中
n+=1
times=0#次數的判斷
pl=list(reversed(l))#反向列表
#從開頭判斷是否為0,是0要刪除那一項,若開頭不為0則直接輸出
for t in range(len(pl)):#重複pl的長度次
while pl[t]==0:#判斷第t項是否等於0
if times==0:
del pl[times]#刪除為0的那一項
times+=1
else:
del pl[times-1]
times+=1
else:
pl=list(map(str,pl))#把列表再轉回字串型態
print(''.join(pl))#連結列表中字串並輸出結果
break#跳出迴圈
作者已經移除這則留言。
回覆刪除#題目:https://zerojudge.tw/ShowProblem?problemid=a065
回覆刪除#提款機密碼
I=input('請輸入字母:')#使用者輸入
l=[]#建立存放使用者輸入的列表
for i in I:
l+=i#依序放入列表中
ascii=[0]*len(l)#建立轉換ASCII的列表
for n in range(len(l)):#重複列表的長度次
r=int(ord(l[n]))#轉換ASCII碼
ascii[n]=r#放入存放ASCII的列表中
result=''#建立存放結果的字串
for t in range(len(ascii)):
if t==6:#最後一項沒有得比直接跳出迴圈
break
elif ascii[t]>ascii[t+1]:#若前項大於後項
reduce=ascii[t]-ascii[t+1]#前項減後項
result+=str(reduce)#轉變成字串存到結果中
elif ascii[t]<ascii[t+1]:#若前項小於後項
reduce=ascii[t+1]-ascii[t]#後項減前項
result+=str(reduce)##轉變成字串存到結果中
else:#若前項與後項相同
result+='0'
print(result)#輸出結果
這題若依題意做輸入的話,使用者必須完全輸入正確才可得到正確答案。
但這個程式要輸入小寫也是能正確執行的
若使用者輸入的字母只有全大寫跟全小寫的區別的話,結果還是相同的;但若混合輸入大小寫字母的話,答案就會跟全大寫不同
# 台中女中程式解題系統 初級題庫 b018: 1000
回覆刪除N = int(input())
num1 = 1
for i in range(1,N+1):
num1 *= i
if N >= 1 and N <= 1000:
count = num1
print(count)
#两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
回覆刪除X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
data=[]
for i in range(0,3):
for j in range(0,3):
result=X[i][j]+Y[i][j]
data.append(result)
print(data)
data.clear()
#题目:数字比较。
回覆刪除a=int(input("請輸入第一個數:"))
b=int(input("請輸入第二個數:"))
if a > b:
print(a,">",b)
elif a < b:
print(a,"<",b)
elif a == b:
print(a,"=",b)
#题目:求输入数字的平方,如果平方运算后小于 50 则退出。
for i in range(100):
n=int(input("請輸入一個數:"))
if n**2 < 50:
break
else:
print(n**2)
# 台中女中程式解題系統 初級題庫 b033: 兩隻猴子
回覆刪除S1 = input()
S2 = input()
A = len(S1)
B = len(S2)
max_num = 0
dp = [[0] * (B + 1) for _ in range(A + 1)]# 建立動態表格 初始化為0 dp[i-1][j] = 上 dp[i][j-1] = 左
for i in range(1,A+1):# 從第一個字元開始查詢兩段文字的每個字元
for j in range(1,B+1):
if S1[i-1] == S2[j-1]:# 兩個字相同
dp[i][j] = dp[i-1][j-1] +1 # 左上格子值加1
max_num = max(max_num,dp[i][j]) # 更新最長相同內容的長度
else:
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) # 選擇左方格子和上方格子的較大值
print(max_num)
# 台中女中程式解題系統 初級題庫 迴文 (**)
回覆刪除A = input()
C = A ==A[::-1]
if C:
print("是回文")
else:
print("不是回文")
import requests
回覆刪除from bs4 import BeautifulSoup
# 發送GET請求獲取網頁內容
url = "https://zh.wikipedia.org/zh-tw/Wiki" # 要爬取的網頁URL
response = requests.get(url)
html_content = response.text
# 解析網頁內容
soup = BeautifulSoup(html_content, "html.parser")
# 使用beautifulsoup4提供的方法進行資料擷取
# 這裡只是舉例,根據網頁的結構和需要擷取的資料,方法可能有所不同
title = soup.title.text
paragraphs = soup.find_all("p")
# 輸出獲取的資料
print("網頁標題:", title)
print("段落數量:", len(paragraphs))
for i, p in enumerate(paragraphs):
print(f"段落 {i+1}:{p.text}")
#巢狀while迴圈
回覆刪除i = 0
while i < 3: # 外層迴圈
j = 0
while j < 3: # 內層迴圈
print(f"外層迴圈變數:{i},內層迴圈變數:{j}")
j += 1
i += 1
#題目:https://zerojudge.tw/ShowProblem?problemid=a147
回覆刪除#Print it all
l=[]#建立一個存放使用者輸入的列表
while True:
n=list(map(int,input('請輸入一個整數').split()))#讓使用者做輸入
if n==[0]:#判斷是否輸入0
break#是0跳出迴圈
else:#不是0
l+=n#把使用者輸入加入至列表中
for times in l:#從列表中的資料分別取出存到times中
rl=['']*(times+1)#建立存放結果的列表(型態是字串)
for n in range(times+1):#重複範圍0~times+1
if n%7!=0:#判斷不等於0
rl[n]=str(n)#把整數型態轉換字串型態再加到列表中
else:#迴圈結束前執行
while '' in rl:#當有空白的字串存在列表中
rl.remove('')#刪除空白字串
result=' '.join(rl)#連結列表中所有的字串
print(result)#輸出結果
#題目:https://zerojudge.tw/ShowProblem?problemid=b971
回覆刪除#等差數列
a1,an,d=map(int,input('請輸入首項、末項及公差\n(用空白隔開):').split())#讓使用者做輸入
pl=[]#建立空列表
time=int((an-a1)/d+1)#計算迴圈長度
for i in range(time):
pl+=[a1+d*i]#把等差數列加入空列表
pl=list(map(str,pl))#把列表中數字型態轉為字串型態
result=' '.join(pl)#連結字串,sep=空白
print(result)#輸出結果
//繪製直角三角形
回覆刪除#include
int main(){
int n, i;
printf("N = ");
scanf("%d", &n);
int j;
printf("*\n");
for (i = 0; i <= n-3; ++i){
printf("*");
for(j = 1; j <= i; ++j){
printf(" ");
}
printf("*\n");
}
for (j = 1; j <= n; ++j){
printf("*");
}
printf("\n");
return 0;
}
//座標法繪製直角三角形
刪除#include
int main(){
int n, i;
printf("N = ");
scanf("%d", &n);
int j;
for(i = 1; i <= n; ++i){
for (j = 1; j <= n; ++j){
if (j == 1 || i == n || i == j){
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
#题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
回覆刪除data=[]
a=3
for i in range(1,51):
data.append(i)
for i in range(50):
while len(data)//3>0:
data.remove(data[a-1])
a*=2
if len(data)<3:
break
print(data)
我怎麼感覺這題目有點瑕疵...最後一定都會剩下前兩個吧
刪除使用Queue 處理Josephus 問題
刪除Josephus 問題是古老而著名的數學問題,有 n 個人站成一個圓圈,從第一個人開始報數,報到 m 的人出圈,剩下的人繼續報數,重複此過程,直到所有人都出圈為止。問最後一個出圈的人在原先圓圈中的位置是多少?
範例:Josephus 問題
from queue import Queue # 引入 Queue 類別
def josephus(n, m):
q = Queue() # 建立一個 Queue 物件
for i in range(1, n+1): # 將編號 1 ~ n 的人加入 Queue
q.put(i)
while q.qsize() > 1: # 只要還有超過一個人在 Queue 中
for i in range(m-1): # 將 Queue 的前 m-1 個人放到 Queue 的末尾
q.put(q.get())
q.get() # 第 m 個人出列
return q.get() # 傳回最後一個出列的人的編號
n = 15 # 總人數
m = 4 # 每次報數的數字
print("n =", n, ", m =", m)
# 呼叫 josephus 函式求解並印出答案
print("最後出圈的, 原先位置:", josephus(n, m))
# 程式執行結果:
# n = 15 , m = 4
# 最後出圈的, 原先位置: 13
用 Queue 來儲存每個人的編號,每次從 Queue 中取出第 m 個人出列,並將前 m-1 個人放到 Queue 的末尾。最後只剩下一個人時,該人即為最後一個出列的人。
#题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
回覆刪除n=int(input("請輸入一個數字:"))
b=0
if n % 2 == 0:
for i in range(2,n+1,2):
b += 1/i
if n % 2 != 0:
for i in range(1,n+1,2):
b += 1/i
print(b)
import requests
回覆刪除from bs4 import BeautifulSoup
res = requests.get("https://lt945935.blogspot.com/2023/06/2023.html?sc=1689092511168#c2621278853765450208")
res.encoding = 'utf-8'
bs = BeautifulSoup(res.text,'html.parser')
data = []
for i in bs.select(".comment-header cite"):
data.append(i.string)
for i in set(data):
print(i,data.count(i))
這是一個爬蟲 用了requests來訪問網站 並用beautifulsoup4來解析html
第9行是一個css select來尋找 class = comment-header 底下標籤為cite 的elements
這個程式在統計 2023-暑假,每日程式上傳區每個人上傳的數量
output:
刪除jack 8
j5 1
kadzuki0314 23
minyu 30
Rex_Chen 27
chia 2
matthew0118 26
sih yu 34
掄 25
#題目:兩個字符串連接程序
回覆刪除if __name__ == '__main__':
a = "connection"
b = "string"
# 連接字符串
i= a + b
print (i)
#題目:計算字符串中子串出現的次數。
回覆刪除if __name__ == '__main__':
str1 = raw_input('請輸入一個字符串:\n')
str2 = raw_input('請輸入一個子字符串:\n')
ncount = str1.count(str2)
print (ncount)
# 台中女中程式解題系統 基礎題庫 a025: 數字倒轉
回覆刪除N = int(input())
A = 0
while N > 0:
B = N % 10
A = A * 10 + B
N = N // 10
print(A)
#題目:https://zerojudge.tw/ShowProblem?problemid=c276
回覆刪除#xAxB
n=input('請輸入要給對方猜的數字:')#使用者輸入
dl=n.split(',')#把使用者輸入一個一個字存到列表中
#判斷使用者輸入的數字是否重複做輸入
l=['']*10#建立一個長度為10的空列表
for lt in range(10):#重複10次(lt從0~9一個個取出)
l[lt]=lt#把該項轉換成該項的數字
nl=list(map(str,l))#把列表的資料型態轉換成字串型態
for d in nl:#從列表中一個個取出字串0~9做判斷
if nl.count(d)==2:#搜尋d出現的次數,若次數為2會跟遊戲規則不符合
exit()#直接結束程式
times=int(input('請輸入要給對方猜的次數:'))
for t in range(times):#重複要猜的次數
pn=input('請輸入對方猜的數字:')
if len(pn)!=len(n):#若輸入的位數不相同
print('輸入位數錯誤')
continue#執行下個迴圈
at=0#建立正確位置的變數
bt=0#建立位置不正確的變數
for i in range(len(pn)):#重複對方輸入的該數長度
if pn[i]==n[i]:#若猜的數字那一位跟原本設的數該值相同
at+=1#正確的變數+1
else:#若不是
bt+=1#錯誤的變數+1
else:#在小迴圈結束前做處理
print(f'{at}A{bt}B')#輸出提示
if at==len(pn):#若正確的數量跟該數長度相同就是答對了
print(f'恭喜答對\n花了{t+1}次猜到正解')
exit()#結束程式
這個程式不只可以判斷四位數的數字,若要其他位數也可以進行判斷
# 台中女中程式解題系統 基礎題庫 a029: 連續整數相加(一)
回覆刪除A, B = map(int, input("輸入兩個數用空格隔開\n").split())
C = 0
D = ""
for i in range(A, B+1):
D += str(i)
C += i
if i != B:
D += "+" # 添加加號
print(D + "=" + str(C))
# 台中女中程式解題系統 基礎題庫 a030: 連續整數相加(二)
回覆刪除A, B = map(int, input("輸入兩個數用空格隔開\n").split())
C = 0
D = ""
if A <= B:
for i in range(A, B+1):
D += str(i)
C += i
if i != B:
D += "+" # 添加加號
else:
for i in range (A,B-1,-1):
D += str(i)
C += i
if i != B:
D += "+"
print(D + "=" + str(C))
#題目:https://zerojudge.tw/ShowProblem?problemid=c418
回覆刪除#繪製三角形
s=int(input('請輸入三角形的大小:'))
for i in range(1,s+1):
result='*'*i
print(result)
//已知兩個整數相加是30,相乘是221,求兩個整數
回覆刪除#include
int main(){
int n,a;
for (a = 0; a <= 30; ++a){
for (n = 0; n <= a; ++n){
if (a * n == 221 && a + n == 30){
printf("a = %d\nn = %d", a, n);
return 0;
}
}
}
return 0;
}
//已知兩個整數相加是30,相乘是221,求兩個整數
刪除#include
int main(){
int n,a;
for (n = 15; n <= 30; ++n){
a = 30 - n;
if (n * a ==221){
printf("%d&%d", a, n);
}
}
return 0;
}
#题目:找到年龄最大的人,并输出。
回覆刪除person = {"li":18,"wang":50,"zhang":20,"sun":22}
n="li" #先預設從第一個人開始
for i in person.keys():
if person[i] > person[n]:
n = i
print("%s,%d"%(n,person[n]))
#题目:字符串排序。
回覆刪除#英文竟然也有大小之分!!
a=input("輸入一串英文:")
b=input("輸入一串英文:")
c=input("輸入一串英文:")
if a > b:
a,b=b,a
if a > c:
a,c=c,a
if b > c:
b,c=c,b
print(a,b,c)
#英文的大小之分好像是從a~z,由小到大
import tensorflow as tf
回覆刪除from tensorflow import keras
from keras import datasets, layers, optimizers, Sequential, metrics
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
(x_train,y_train), (x_test,y_test) = datasets.fashion_mnist.load_data()
def preprossing(x, y):
x = tf.cast(x,dtype=tf.float32)/255
y = tf.cast(y,dtype=tf.int32)
return x, y
db_train = tf.data.Dataset.from_tensor_slices((x_train,y_train))
db_train = db_train.map(preprossing).batch(128)
db_test = tf.data.Dataset.from_tensor_slices((x_test,y_test))
db_test = db_test.map(preprossing).batch(128)
model = Sequential([
layers.Dense(256,activation=tf.nn.relu),
layers.Dense(128,activation=tf.nn.relu),
layers.Dense(64,activation=tf.nn.relu),
layers.Dense(32,activation=tf.nn.relu),
layers.Dense(10,activation=tf.nn.relu),
])
model.build([None,28*28])
optimizer = optimizers.Adam(0.001)
def main():
for epoch in range(20):
for step, (x, y) in enumerate(db_train):
x = tf.reshape(x, [-1,28*28])
y_onehot = tf.one_hot(y,depth=10)
with tf.GradientTape() as tape:
logits = model(x)
loss = tf.reduce_mean(tf.losses.MSE(y_onehot,logits))
grads = tape.gradient(loss,model.trainable_variables)
optimizer.apply_gradients(zip(grads,model.trainable_variables))
if step % 100 == 0:
print(epoch, step,"loss:", loss)
correct_sum = 0
data_count = 0
for step, (x, y) in enumerate(db_test):
x = tf.reshape(x, [-1,28*28])
logits = model(x)
prob = tf.nn.softmax(logits, axis=1)
pred = tf.argmax(prob, axis=1,output_type=tf.int32)
correct = tf.reduce_sum(tf.cast(tf.equal(y,pred),dtype=tf.int32))
correct_sum +=int(correct)
data_count += x.shape[0]
acc = correct_sum/data_count
print(epoch, 'acc: ',acc)
main()
這是一個使用tensorflow 來寫的一個圖片辨識AI
這次用到的是fashion mnist的數據集
這個模型用到的是一個5層的model
這是訓練20次的精準度
acc: 0.8878
作者已經移除這則留言。
回覆刪除#題目:計算列表中的偶數和
回覆刪除def compute_even_sum(numbers):
even_sum = 0
for num in numbers:
if num % 2 == 0:
even_sum += num
return even_sum
numbers = list(map(int,input("請輸入數字").split()))
even_sum = compute_even_sum(numbers)
print("列表中的偶數和為:", even_sum)
#題目:尋找列表中的連續子數列
回覆刪除def find_continuous_subsequences(lst):
subsequences = []
for i in range(len(lst)):
for j in range(i+1, len(lst)+1):
subsequence = lst[i:j]
subsequences.append(subsequence)
return subsequences
# 使用者輸入整數列表
nums = input("請輸入整數列表(以逗號分隔):").split(',')
nums = [int(num) for num in nums]
# 尋找連續子數列
result = find_continuous_subsequences(nums)
# 輸出結果
print("連續子數列:")
for subseq in result:
print(subseq)
import tensorflow as tf , datetime
回覆刪除from tensorflow import keras
from keras import datasets, layers, optimizers, Sequential, metrics, Input
import numpy as np
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
(x_train,y_train), (x_test,y_test) = datasets.mnist.load_data()
def preprossing(x, y):
x = tf.reshape(tf.cast(x,dtype=tf.float32)/255,[-1,28*28])
y = tf.cast(y,dtype=tf.int32)
return x, y
db_train = tf.data.Dataset.from_tensor_slices((x_train,y_train))
db_train = db_train.map(preprossing).batch(128)
db_test = tf.data.Dataset.from_tensor_slices((x_test,y_test))
db_test = db_test.map(preprossing).batch(128)
model = Sequential([
Input(shape=(784,)),
layers.Dense(512, activation=tf.nn.relu),
layers.Dense(256, activation=tf.nn.relu),
layers.Dense(128, activation=tf.nn.relu),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(32, activation=tf.nn.relu),
layers.Dense(10, activation=tf.nn.softmax),
])
model.build([None,28*28])
optimizer = optimizers.Adam(0.001)
model.compile(optimizer=optimizers.Adam(learning_rate=0.0001),
loss=tf.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
log_dir = "4logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
model.fit(x=tf.reshape(x_train,[-1,28*28]),
y=tf.one_hot(y_train,depth=10),
epochs=50,
validation_data=(tf.reshape(x_test,[-1,28*28]), tf.one_hot(y_test,depth=10)),
callbacks=[tensorboard_callback])
用了更簡單的方式訓練模型 並生成圖表
這是用mnist手寫數字來訓練的
用了6層隱藏層
這次訓練準度就可以到非常高了
訓練50次
在訓練資料acc:99.84%
在測試資料acc:97.80%
作者已經移除這則留言。
回覆刪除#題目:https://zerojudge.tw/ShowProblem?problemid=c382
回覆刪除#加減乘除
a,m,b=input('請輸入想要計算的式子(用空白隔開)\n').split()
a=int(a)
b=int(b)
if m=='+':
print(a+b)
elif m=='-':
print(a-b)
elif m=='*':
print(a*b)
elif m=='/':
print(a/b)
else:
print('不支援的運算')
#題目:https://zerojudge.tw/ShowProblem?problemid=c381
回覆刪除n,m=map(int,input('請輸入要輸入的字串數量跟提供的數字數量\n(用空白隔開兩者):\n').split())
if m>n:
print('提供的數字數量大於字串數量')
exit()
sl=['']*n
for t in range(n):
s=input('請輸入字串:')
sl[t]=s#把使用者輸入之字串放到列表中儲存
num=list(map(int,input('請輸入提供的數字:').split()))
string=''.join(sl)#把使用者輸入字串相連
result=[]#建立存放結果的列表
for n in num:#從提供的數字列表中一個個取出在列表中做搜尋
if n-1>len(string):
print('數字大於字串長度')
exit()
else:
result+=list(string[n-1])#先把結果取出加到列表中
else:
print(''.join(result))#把列表中字串連結起來
解釋n-1的緣故:
因為python第一位是從0開始編,而我們習慣從1開始編,若要找第n項,則是python中的第n-1項,假設使用者要找第33項(為在python中的第32項)
//猜數字(do-while述句)
回覆刪除#include
int main(){
int answer = 4;
int guess;
do {
printf("Please enter your guesss: ");
scanf("%d", &guess);
if (answer > guess){
printf("Too small\n");
} else if(answer < guess){
printf("Too large!\n");
} else {
printf("correct!\n");
}
} while(guess != answer);
return 0;
}
//消費金額計算
回覆刪除#include
int main(){
int total = 0;
int id;
do {
scanf("%d", &id);
switch (id) {
case 1:total += 90; break;
case 2:total += 75; break;
case 3:total += 83; break;
case 4:total += 89; break;
case 5:total += 71; break;
}
} while (id != 0);//輸入零結算金額
printf("Total: %d\n", total);
return 0;
}
for num in range(1, 11):
回覆刪除if num == 7:
break
if num % 2 != 0:
print(num)
print("迴圈結束")
for letter in 'Python': # 第一個實例
回覆刪除if letter == 'h':
break
print '當前字母 :', letter
var = 10 # 第二個實例
while var > 0:
print '當前變量值 :', var
var = var -1
if var == 5: # 當變量 var 等於 5 時退出循環
break
print "Good bye!"
#题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
回覆刪除#使用倒推的方法:
x=1
x*=5
x+=1
#y=0
for i in range(4):
x=x*5+1
print(x)