2022年2月22日 星期二

條件判斷 a003: 兩光法師占卜 a006: 一元二次方程式

 a003: 兩光法師占卜術

兩光法師時常替人占卜,由於他算得又快有便宜,因此生意源源不絕,時常大排長龍,他想算 得更快一點,因此找了你這位電腦高手幫他用電腦來加快算命的速度。

  他的占卜規則很簡單,規則是這樣的,輸入一個日期,然後依照下面的公式:

M=月
D=日
S=(M*2+D)%3

得到 S 的值,再依照 S 的值從 0 到 2 分別給與 普通、吉、大吉 等三種不同的運勢


str1 = input()
a = str1.split(" ")
m = int( a[0] ) 
d = int( a[1] )
fate = (m*2 + d) % 3
if(fate==0): print("普通")
if(fate==1): print("吉")
if(fate==2): print("大吉")


a006: 一元二次方程式
求一元二次方程式 ax2+bx+c=0 的根
每組輸入共一行,內含三個整數 a, b, c 以空白隔開。

Two different roots x1=?? , x2=??

Two same roots x=??

No real root

PS: 答案均為整數,若有兩個根則大者在前



# 求一元二次方程式 ax2+bx+c=0 的根
# 每組輸入共一行,內含三個整數 a, b, c 以空白隔開。
# Output ...
# Two different roots x1=?? , x2=??
# Two same roots x=??
# No real root
# PS: 答案均為整數,若有兩個根則大者在前

import math 
str = input().split()
a = int( str[0] )
b = int( str[1] )
c = int( str[2] )

D=b*b-4*a*c  

if(D==0):
   if( b == 0 ) :
     print("Two same roots x=0 ")
   else :
    print("Two same roots x=%d" % int(-b/a/2))
elif (D>0):
    print("Two different roots ",end="")
    print("x1=%d" % int( (-b + math.sqrt(D))/(2*a)) , end="" )
    print(" , x2=%d" % int((-b - math.sqrt(D))/(2*a))   ) 
else:
  print("No real root")
  #print("共軛複數")
  #print("x1=",-b/2/a,"+",(math.sqrt(-D)/2/a),"i")
  #print("x2=",-b/2/a,"-",(math.sqrt(-D)/2/a),"i")

Python + Zerojudge : a002: 簡易加法 : input/split

 a002: 簡易加法

請寫一個程式,讀入兩個數字,並求出它們的和。

輸入說明

每組輸入共一行,內含有兩個整數 a, b,以空白隔開,a, b絕對值皆小於 106


使用到的指令

1. str = input()    ---> 輸入字串  "10 20" ,中間空白

2. 串列=字串.split(間隔字元)

3.串列 a : 含有兩個元數 a[0] , a[1]

4. int() 字串轉成整數



str1 = input()
a = str1.split(" ")
inta0 = int( a[0] ) 
inta1 = int( a[1] )
print( inta0 + inta1 )



2022年2月16日 星期三

Colab : python 變數與列印.ipynb

https://schsmaker.blogspot.com/

#-----程式1----

 #不用宣告變數,直接給內容,依照內容定型別

num1 = 10   #int
num2 = 3.1416 #f
flag = True  #Bool
str1 = "This a book"   #str
str2 = "123"  #str



#-----程式2----
# type ---> 取得變數的資料型態
printtype(num1) )
printtype(num2) )
printtype(flag) )
printtype(str1) )


#-----程式3----
print(num1)
print(num2)
print(flag)
print(str1)
print(str2) 

print(str1 + str1)  # str + str -->
print(str2 + str2)  # str + str  -->
print(num1 + num1)  # int + int -->
print(num1 + num2)  # int + float -->
print(num1 + str2) #程式錯誤,??? why


#-----程式4----
# 強制型別轉換
print( num1 + int(num2) )  
# print( str1 + num2 )     
printint(str2) + num2 )   
print( str2 + str(num2) )   
print( str1 + str(num2) )
#------以下是錯誤的-------
#print( num(str1) + num(str2) )  # 型別轉換錯誤,說明為什麼? 列出錯誤原因
#print( num1 + str2 )   # 10 + "10" 為何不行,說明為什麼? 列出錯誤原因


#-----程式5----
# print 說明+變數
print"num1 是一個" , type(num1) , "型態的變數, num1=" , num1 )
print"num2 是一個" , type(num2) , "型態的變數, num2=" , num2 )
print"str1 是一個" , type(str1) , "型態的變數, str1=" , str1 )


----文字說明----
print(%d,%f,%s) 格式化輸出命令---對齊用
%5d 列印整數,占5個字元
%5s 列印字串,占5個字元
%8.2f 列印浮點數,共占8個字元,2位數小數點



#-----程式----
name="Steven"
score=80.1314
print("%5s的分數,用整數5d列印--->%5d" % (name, score))
print("%5s的分數,用浮點數8.2f列印---->%8.2f" % (name, score))


#-----文字----作業----
#請寫程式完成以下輸出

Steven,Peter是好朋友,他們的身高是xxxx170.30,xxxx168.5
(上面的x是空白,必須定義一個文字變數與兩個浮點數變數)

##----程式------



#-----程式----
##最重要功能---對齊
a=34
b=8987
c=344
d=1
print("沒有對齊-->")
print(a)
print(b)
print(c)
print(d)
print("有對齊-->")
print("%5d%5d"%(a,a))
print("%5d%5d"%(b,b))
print("%5d%5d"%(c,c))
print("%5d%5d"%(d,d))


#-----程式----
print("Name Chinese Math Geo")
print("%10s%5d%5d%5d%5d" % ("Steven",100,94,80,12))
print("%10s%5d%5d%5d%5d" % ("Merry",80,100,8,64))
print("%10s%5d%5d%5d%5d" % ("Peter",70,94,80,112))
print("%10s%5d%5d%5d%5d" % ("CHin",50,4,180,12))

2022年2月7日 星期一

App Inventor2 : PaintPot (Part 1)

 App Inventor2 : PaintPot (Part 1)

出處: https://appinventor.mit.edu/explore/ai2/paintpot-part1


Step1: 設置組件

您將使用這些組件來製作 PaintPot:

1.三個按鈕(Button)用於選擇紅色、藍色或綠色油漆,另一個按鈕用於清除繪圖。

2.畫布,繪圖表面。 此畫布有一個 BackgroundImage,它是 HelloPurr 教程中的這隻小貓。 您也可以在空白畫布上繪圖。 那隻是沒有背景圖像的畫布。

3.還有一個您看不到的組件:您使用 HorizontalArrangement 使三個顏色按鈕並排排列。

這總共有五個組件。 讓我們獲取它們並構建應用程序。


Step2: 顏色按鈕

將 Button 組件拖到 Viewer 上,並將 Button 的 Text 屬性更改為“Red”,並將其 BackgroundColor 設置為紅色。

單擊查看器中組件列表中的 Button1 以突出顯示它(它可能已經突出顯示)並使用重命名...按鈕將其名稱從“Button1”更改為“ButtonRed”。

同樣,再製作兩個藍色和綠色按鈕,分別命名為“ButtonBlue”和“ButtonGreen”,將它們垂直放置在紅色按鈕下方。


Step3: 將按鈕水平排列

使用 HorizontalArrangement 組件可以將多個物件水平排列



Step4 : 畫布和擦除按鈕

1.從 Palette 的繪圖和動畫抽屜中,將 Canvas 組件拖到查看器上。 將其名稱更改為“DrawingCanvas”。 將其寬度設置為“填充父級”並將其高度設置為 300 像素。

2.將背景圖像添加到畫布。 在 Canvas 的屬性面板中單擊 BackgroundImage 旁邊的包含“None...”的字段。 您可以使用 HelloPurr 教程中的相同 kitty.png 文件,也可以使用您選擇的其他圖像。

3.從 Palette 中,將最後一個 Button 拖到屏幕上,將其放在 Canvas 下方。 將此 Button 組件重命名為“ButtonWipe”並將其 Text 屬性更改為“Wipe”。


Step5 : 設定畫布-畫筆顏色及清除畫面


Step6: 畫點與畫線



Step7: 上傳