Wall for 彭英茜

請參考政府開放資料平台( https://data.gov.tw/ )中的初任人員平均經常性薪資103年、104年以及105年的資料

以你將來預計從事的職業的起薪作為y軸,年度作為x軸繪製線性圖

import matplotlib.pyplot as p
x=[103,104,105]
y=[26498,27135,28485]
p.plot(x,y)
p.xlabel("year")
p.ylabel("Starting salary")
p.show()
Jun 25, 2018 by 彭英茜
請寫一隻程式,要求使用者輸入一個檔案的完整路徑包含檔名,然後程式會讀取檔案中的內容,將檔案中的內容視為字串,並對每一個字元的ASCII值減去1後輸出在螢幕上

text=str(input('請輸入一個檔案的完整路徑包含檔名:'))

#C:\Users\佳柔\Desktop\hi.txt

f = open(text,'r')

file = f.read()

for i in file:

    if i == '\n':

        print('')

    else:

        i = chr(ord(i)-1)

        print(i,end='')

f.close()
Jun 25, 2018 by 彭英茜
請寫一隻程式,要求使用者輸入一段文字,然後程式會將這段文字的每一個字元的ascii值加上1

然後輸出成純文字檔案

path = r'C:\Users\佳柔\Desktop\hi.txt'

#在字符串前加個r是為了告訴編譯器這個string是個raw string,不要轉譯

f = open(path,'w')

w = str(input('請輸入一段文字:'))

new_w=''

for i in w:

    i = chr(ord(i)+1)

    new_w+=i

f.write(new_w)

f.close()
Jun 25, 2018 by 彭英茜
import tkinter as tk

def run():

    global c

    c+=1

    content.set(c)

    

win=tk.Tk()

btn=tk.Button(win,text="click me",command=run)

btn.pack()

content=tk.IntVar()

lb=tk.Label(win,textvariable=content)

c=0

content.set(c)

lb.pack()

win.mainloop()

請寫一個視窗程式

視窗中包含一個按鈕跟一個標籤

標籤一開始顯示0

之後每按一次按鈕標籤的顯示就會加1
Jun 25, 2018 by 彭英茜
計算機視窗程式
import tkinter as a
s=''

def c(n):
    global s
    s+=str(n)
    mes.set(s)
    
def Ans():
    mes.set(eval(mes.get()))

def clear():
    global s
    mes.set('0')
    s=''
    
calculate=a.Tk()
b1=a.Button(calculate,text=" 1 ",command=lambda:c(1))
b1.grid(row=1,column=0)
b2=a.Button(calculate,text=" 2 ",command=lambda:c(2))
b2.grid(row=1,column=1)
b3=a.Button(calculate,text=" 3 ",command=lambda:c(3))
b3.grid(row=1,column=2)
plus=a.Button(calculate,text=" + ",command=lambda:c('+'))
plus.grid(row=1,column=3)
b4=a.Button(calculate,text=" 4 ",command=lambda:c(4))
b4.grid(row=2,column=0)
b5=a.Button(calculate,text=" 5 ",command=lambda:c(5))
b5.grid(row=2,column=1)
b6=a.Button(calculate,text=" 6 ",command=lambda:c(6))
b6.grid(row=2,column=2)
minus=a.Button(calculate,text=" - ",command=lambda:c('-'))
minus.grid(row=2,column=3)
b7=a.Button(calculate,text=" 7 ",command=lambda:c(7))
b7.grid(row=3,column=0)
b8=a.Button(calculate,text=" 8 ",command=lambda:c(8))
b8.grid(row=3,column=1)
b9=a.Button(calculate,text=" 9 ",command=lambda:c(9))
b9.grid(row=3,column=2)
multi=a.Button(calculate,text=" * ",command=lambda:c('*'))
multi.grid(row=3,column=3)
dot=a.Button(calculate,text=" . ",command=lambda:c('.'))
dot.grid(row=4,column=0)
b0=a.Button(calculate,text=" 0 ",command=lambda:c(0))
b0.grid(row=4,column=1)
equal=a.Button(calculate,text=" = ",command=Ans)
equal.grid(row=4,column=2)
devide=a.Button(calculate,text=" / ",command=lambda:c('/'))
devide.grid(row=4,column=3)
cl=a.Button(calculate,text="          Clear          ",command=clear)
cl.grid(row=5,columnspan=4)

mes=a.StringVar()
mes.set(0)
b=a.Label(calculate,textvariable=mes)
b.grid(row=0,columnspan=4)

calculate.mainloop()
Jun 25, 2018 by 彭英茜
American Dollar (USD) 29.255

Hong Kong Dollar (HKD) 3.626

British Pound (GBP) 39.65

Australian Dollar (AUD) 22.06

Canadian Dollar (CAD) 22.66

Singapore Dollar (SGD) 21.85

Swiss Franc (CHF) 29.26

Japanese Yen (JPY) 0.2626

Swedish Krona (SEK) 3.03

New Zealand Dollar (NZD) 20.58

Thai Baht (THB) 0.8354

Philippine Peso (PHP) 0.4985

Indonesian Rupiah (IDR) 0.00178

Euro (EUR) 35.18

Korean Won (KRW) 0.02598

Vietnam Dong (VND) 0.00093

Malaysian Ringgit (MYR) 6.459

China Yen (CNY) 4.589

上面顯示的是新台幣與各國貨幣的匯率

Singapore Dollar (SGD) 21.85

表示的是如果你要換1元的SGD,你要花21.85元的新台幣

請寫一個程式,要求使用著輸入外幣的數量,程式會輸出等值的新台幣

st={'USD':'29.255','HKD':'3.626','GBP':'39.65','AUD':'22.06','CAD':'22.66','SGD':'21.85','CHF':'29.26','JPY':'0.2626','SEK':'3.03',
'NZD':'20.58','THB':'0.8354','PHP':'0.4985','IDR':'0.00178', 'EUR':'35.18','KRW':'0.02598','VND':'0.00093','MYR':'6.459','CNY':'4.589'}
b=str()
num=k=0

a=input("請輸入外幣數量: ")
for i in a:
    if i.isalpha()==True:
        num=int(a[0:k])
        b=str(a[k:])
        break
    k+=1
    
print('{}NTD'.format(eval((lst[b]))*num))
May 14, 2018 by 彭英茜
請寫一個程式,用串列來模擬撲克牌的發牌,請用一個串列存放52張牌的資訊,並模擬洗牌的動作,然後將52張牌平均的分給4位玩家,最後顯示4位玩家手上的牌

import random
lst=['♠A','♥A','♦A','♣A','♠2','♥2','♦2','♣2','♠3','♥3','♦3','♣3','♠4','♥4','♦4','♣4','♠5','♥5','♦5','♣5','♠6','♥6','♦6','♣6',
'♠7','♥7','♦7','♣7','♠8','♥8','♦8','♣8','♠9','♥9','♦9','♣9','♠10','♥10','♦10','♣10','♠J','♥J','♦J','♣J','♠Q','♥Q','♦Q','♣Q','♠K','♥K','♦K','♣K']
random.shuffle(lst)
print('第一位玩家手牌為',lst[0:13])
print('第二位玩家手牌為',lst[13:26])
print('第三位玩家手牌為',lst[26:39])
print('第四位玩家手牌為',lst[39:52])
May 14, 2018 by 彭英茜
請寫一個程式,要求使用者輸入兩個24小時制的時間包含時分秒,程式會輸出兩個時間共相差了多少秒。

相差了多少秒定義為從比較早的時間到比較晚的時間需要經過多少秒

h1=eval(input("請輸入時: "))
m1=eval(input("請輸入分: "))
s1=eval(input("請輸入秒: "))
h2=eval(input("請輸入時: "))
m2=eval(input("請輸入分: "))
s2=eval(input("請輸入秒: "))
if h1>=h2:
    print('會經過{}秒!'.format((h1-h2)*3600+(m1-m2)*60+s1-s2))
else:
    print('會經過{}秒!'.format((h2-h1)*3600+(m2-m1)*60+s2-s1))
May 14, 2018 by 彭英茜
有隻蝸牛在爬10公尺高的牆,他白天能往上爬3公尺,
晚上休息時候會往下滑2公尺,請問他多久能爬到頂端?

每天白天往上爬3公尺、晚上滑2公尺,代表一天爬1公尺?
所以需要10天?

這樣就中陷阱了!

實際上7天後,他就爬到7公尺高的地方,第8天早上,
他再往上爬3公尺就能到達頂端.....

正確答案應該是8天
 

請寫一個程式,讓使用者輸入牆有多高,白天時蝸牛可以往上爬多少公尺,晚上會下滑多少公尺,程式會輸出蝸牛在第幾天會爬到牆頂


h=eval(input("請輸入牆的高度: "))
a=eval(input("請輸入白天可以爬的距離:"))
b=eval(input("請輸入晚上會下滑的距離:"))
s=day=0

while s<h:
    s+=a
    day+=1
    if s>=h:
        break;
    else:
        s-=b
print('在第{}天會爬到牆頂!'.format(day))
May 14, 2018 by 彭英茜
請寫一個函數,這個函數會有一個串列 intList 當作參數,這個串列中的所有元素都是正整數,呼叫這個串列後他會回傳一個新的串列,新的串列中的元素是 intList 中所有是質數的數

def replace(intList):
    s=k=0
    newList=[]
    for i in range(len(intList)):
        for j in range(1,intList[i]+1):
            if intList[i]%j==0:
                s+=1
            if s==2 and j==intList[i]:
                newList.append(intList[i])
                k+=1
        s=0
    return newList
May 14, 2018 by 彭英茜
12,783 questions
183,443 answers
172,219 comments
4,824 users