2022年4月20日 星期三

list + for

 python list + for 串列與for綜合運用

#a生8科成績,計算總和及平均
a=[45,67,89,56,34,56,77,88]
print(a)

#印出每一科成績
for i in rangelen(a)):   #range(10)=0~9 ,  0~n-1
   print("科目" , i , "=" , a[i] )

print("----------------------")
#列印每一科成績跟60分的差距
# 科目0= -15
# 科目1= 7 
for i in rangelen(a)):
  print("科目" , i , "跟60分的差距=" , a[i]-60 )


#列印每一科成績是不是及格
print("----------------------")
for i in rangelen(a)):
  print("科目" , i , "=" , a[i] ,end="")
  if(a[i]>=60) : 
    print("及格")  
  else:
    print("不及格")

sum=0
for i in rangelen(a)):
   sum = sum + a[i]
print("總和=",sum)
print("平均=",sum/8)

------------------------------------------------------

#用亂數產生a生8科成績,計算總和及平均
import random
a=[]
for i in range(8): 
  a.append(random.randint(1,100))

sum=0
for i in rangelen(a)):
   sum = sum + a[i]
print(a)
print("總和=",sum)
print("平均=",sum/8)

------------------------------------

#用亂數產生10個學生8科成績,計算總和及平均
import random
tmp=[];
a=[]
for j in range(10):
 tmp=[] 
 for i in range(8): 
   tmp.append( random.randint(1,100))  # tmp=[82, 11, 80, 11, 86, 98, 2, 7]--->8筆成績
 a.append( tmp )   
print(a)

for i in range(10):
   sum=0
   for j in range(8):
    sum = sum + a[i][j];
   print("總和=",sum)
   print("平均=",sum/8)

------------------------------------

#用亂數產生a,b,c三個學生每個人8科成績,計算各科總和(subject_sum[])及個人總和(sum_a,sum_b,sum_c)
import random
a=[]; b=[] ; c=[]
for i in range(8): 
  a.append(random.randint(1,100))
  b.append(random.randint(1,100))
  c.append(random.randint(1,100))

sum_a=0 ; sum_b=0 ; sum_c=0
for i in range(8):
  sum_a += a[i]
  sum_b += b[i]
  sum_c += c[i]
print(a,sum_a) ; print(b,sum_b) ; print(c,sum_c)

#各科總和
subject_sum=[]
for i in range(8): subject_sum.append(0)  # sum起始值
for i in range(8):
  subject_sum[i]=a[i]+b[i]+c[i]
print(subject_sum)

--------------------------------

# for迴圈與字串操作----大數運算
a="88888888888888888999"   #20位數
b="22222222222222222456"
c=[]
for i in range(21): c.append(0)  #21位數

# 加法
carry=0   #進位
for i in range(19,-1,-1):
  x=int(a[i])+ int(b[i])+ carry
  if( x>=10 ):
    c[i+1]=x-10   # c 多一位數
    carry=1
  else:
    c[i+1]=x
    carry=0 
c[i]=carry   # 第0位=進位
print(c)



for loop

 # 印出1-10, 兩種印法

for i in range(10):   # 0~9
  print(i+1 ,  ","  , end="")

for i in range(10):
  print(i+1)

-------------------------------

# 請印出 1~100 3 的倍數,不斷行
for i in range(100):
  if( i%3 ==0) : 
    print(i,",",end="")

# 請印出 1~100 3and5 的倍數,不斷行
# A and B ---> A,B同時成立 , A or B --> A或B 其中一個成立  ,not A --> A不成立
print()
print("印出 1~100 3and5 的倍數--->",end="")
for i in range(100):
 if( i%3==0 and i%5==0): 
   print(i,",",end="")

-------------------------------

# 印出 100 個星星,不斷行
for i in range(100): print("*",end="")
print()

# 印出 10x10 的星星方塊
for i in range(10):
  print(i,end="")
  for j in range(10):
    print("* ",end="")
  print()  

for i in range(10):
  print(i,end="")
  for j in range(10):
    print(j," ",end="")
  print() 

----------------------------

# 巢狀迴圈
for i in range(1,6):
  for j in range(1,6):
    print(i,",",j)

---------------------------

# 印出三角形
for i  in range(10):
  for j in range(i): print("*",end="")
  print()

for i  in range(10,0,-1):
  for j in range(i): print("*",end="")
  print()

# python特有的寫法
for i  in range(10): print(" "*(12-i) + "*"*i )

-----------------------------------

# 印聖誕樹

2022年4月6日 星期三

Python list +for

 Python list 串列 

#-----------------------------------------------程式--------
#串列list宣告, 陣列array 
list1=[11,22,33,44,55,66,77
# index 索引 = 0,1,2,3,4,5,6
# len( list1 )= 7 

#引用元素
print( list1[0], list1[1], list1[2])

#呼叫全部
print(list1)
for i in range(7):   # range(7)=0,1,2,3,4,5,6
   print( list1[i],end=",")
print()   #空行
for s in list1:
   print(s,end=",")

#-----------------------------------------------程式--------
#字串型內容
apple=["香蕉","芭樂","蘋果","流連","葡萄"]
for s in apple: 
  print(s,end=",")


#-----------------------------------------------程式--------
#求總和 1
score=[11,22,33,44,55,66,77]
sum=0
for i in rangelen(score) ) :  #length
   # len(score)=7, range(len(score))=range(7)=0~6
   #print(score[i],end="'")
   print(sum,"=",sum,"+",score[i],end="")
   sum=sum+score[i]    # <-----縮排,跑了7次
   print"---> sum=",sum )
print()
print("sum=" , sum )

#------------------------------------文字==結果----
0 = 0 + 11---> sum= 11 11 = 11 + 22---> sum= 33 33 = 33 + 33---> sum= 66 66 = 66 + 44---> sum= 110 110 = 110 + 55---> sum= 165 165 = 165 + 66---> sum= 231 231 = 231 + 77---> sum= 308 sum= 308

#-----------------------------------------------程式--------
#求總和 2  <----注意, sum的位置不一樣
score=[11,22,33,44,55,66,77]
sum=0
for i in rangelen(score)) :
  print(i,end=",")
print()
print("i=",i)
sum=sum+score[i] # <----注意, sum的位置不一樣
          ## <-----沒有縮排,不在for裡面,跑了1次
print("sum=" , sum )
print("why? sum=77 ")
print(".......自已填............")

#-----------------------------------------------程式--------
#自動產生100個數字, 排序
import random   #外掛,亂數
list2=[]
for i in range(100):
  list2.append( random.randint(1,100) )
print( list2 )

list2.sort()
print( list2 )

list2.reverse()
print( list2 )

#-----------------------------------------------程式--------
# 搜尋, 計算找到幾個元素
import random
list2=[]
for i in range(100):
  list2.append(random.randint(1,100))
print( list2 )

x=int(input("請輸入一個數字做search.."))  # input-->字串
for i in range(100):   # i=0~99
  if(x==list2[i]):    # list2[0] ~ list2[99] , 
    # a=5 assign ,  a==5 compare,傳回直=True/False
    print(i,list2[i])  # i=index , list[i]=直
   
#計算找到幾個元素--自己算
cnt=0
for i in range(100):
  if(x==list2[i]): 
    cnt+=1   # cnt=cnt+1
print("There are", cnt ,"elements in List2 (自己算)" )

#計算找到幾個元素--用現有的函式
print("There are", list2.count(x),"elements in List2 (count)" )


#-----------------------------------------------程式--------
## Home Work 1
# 產生100個元素的陣列list3, 再產生一個空的陣列odd(奇數),even(偶數)
# 將list3的奇數copy到odd,將list3的=偶數copy到even,排序後印出
import random
list3=[]
for i in range(100):
  list3.append(random.randint(1,100))
print( list3 )
list3.sort()

odd=[]
even=[]
for i in range(100):
  if( list3[i] %2 ==1 ):  # % 取餘數 , ==比較(是不是等於),結果=True/false
    odd.append( list3[i] )
  else:
    even.append( list3[i] )
print( odd )
print( even )

# HomeWork 請計算奇數數字和,偶數數字的和


#-----------------------------------------------程式--------
# Home work 2
# 產生一個list,如下 [1,2,3,,,,,,100]
# 計算總和sum跟平均值average
import random
list3=[]
for i in range(100):
  list3.append(random.randint(1,100))
print( list3 )

sum=0
for i in range100 ) :
   sum=sum+list3[i] 
print("sum=" , sum )
print("averge=" , sum/100 )

----------------------------------

#統計list內每一個元素的數量
import random
list4=[]
for i in range(300): list4.append(random.randint(1,50))
print( list4 )

#count
list4.sort()
print(list4)
x=list4[0]
cnt=0
for i in range(300):
  if(x != list4[i]):
    print(x," 有 ", list4.count(x),",",cnt,"個")
    x=list4[i]
    cnt=0
  cnt+=1