---
# System prepended metadata

title: python

---

###### tags: python
python
===

#### print
- or
It only print B if A is false or NULL
print

    - print (0 or 1) ## 1
    - print(Flase or "hey") ##'hey'
    - print('hi'or'hey) ##'hi'
    - print([ ] or False) ## 'False'
    - print(False or [ ]) ## []
    
- and
and only evalute the second argument if the first one is true

    - print(0 and 1) ## 0
    - print(1 and 0) ## 0
    - print(False and 'Hey') ##False
    - print('Hi' and 'Hey') ## 'Hey'
    - print([ ] and False) ##[ ] 
    - print(False and [ ]) ## False
    
    
- operators
    - & performs binary AND
    - | performs binary or
    - ^ Performs a binary XOR operation
    - ~ performs a binary NOT operation
    - << shift left operation
    - ">> shift right operation

- other operator 
    - is 
      
    - in

- Ternay operator
    - use to define conditional
    
    def is_adult(age)
        if age >18:
            return True
        else:
            return False
    def is_adult2(age)
        return True if age>18 else False
        
- print with different line
    - 三個"可以做成很多行的輸出(若第一行的"後面沒接東西，就會變成多一行空格)
    - print("""Beau is  
        
      39  
        
        
      years old.
      """)
      
      輸出
      Beau is 
      
      39
      
      years old.
- string modify
    上述這些都只是輸出當下改變的string。但本身的string值是不變的。
    - isalpha()
    去確定string裡面只有charactres 且不是空的
    - isalnum()
    確定string裡面只有character跟digits 且不是空的
    - isdecimal()
    確定string 裡面只有數字且不是空的
    - print("BEAU".lower())
    >beau
    - print("beau".upper())
    >BEAU
    - print('bEAu person'.title())
    it make first leeter of each string become capital letter
    >Beau Person
    - print("Beau person".islower())
      > False
    - print("person".islower())
      > True
    is lower 是用來確定整個string是否都是小寫
    - startsswith()
    to check if the string starts with a specific substring
    - endswith()
    to check if the string ends with a specific substring
    - replace()
    to replace a part of a string
    - split()
    to split a string on a specific charactr separator
    - strip()
    to trim the whitespace from a string
    - join ()
    to append new letters to a string
    - find ()
    to find the postion of a substring
    
    
- global function
    - print(len(name))
      > 4
    - name ="beau"
      print("au" in name)
      > True
    - name ="Be\"au"
      print(name)
      > BE"au
      \這個可以讓後面的"不再表示成本來的樣子，而是一般的string
    - name = 'Be"au'
      print(name)
      > Be"au
    - name ='Be"\'au'
      print(name)
      > Be"'au
    
    - name = 'Be\nau'
      print(name)
      > Be
      > au
    
    - name ='Be\au'
      print(name)
      > Beu
    
    - name = 'Be\\au'
      print(name)
      > Be\au

    - name ="Beau"
      print(name[1:2])
      從1開始回值，2之前的全部丟出來(不包含2)
      
      
    - any([A,B])
      it will return true if any value of this function is true
    - all([A,B])
      it will return true if all of the value is true
      
- complex
    - turn
    complex = 2+3j;
    num = complex(2,3)
    print(num2.real, num2.imag)
    > 2.0 3.0


- abs(絕對值) and round
    - print(abs(-5.5))
     > 5.5

- round
  - print(round(5.49, 1))
  > 5.5 
    會收斂在小數點下面第一位
  - print(round(5.4))
  > 5
  - print(round(5.5))
  > 6



### Enum
> from enum import Enum

> class State(Enum):
>   INACTIVE = 0
>   ACTIVE = 1



>   print(State.ACTIVE.value)
    output: 1 


> print(State(1))
  output: State.ACTIVE
  
 > print(State['ACTIVE'].value)
   output: 1
   
 > print(list(State))
   output <State.INACTIVE: 0>,<State.Active: 1>
   
 > print(let(State))
   2
   
   
## Basic input output

> age = input("what is your age?\n")
> print("your age is "+age)
output:
what is your age?
>55
>your age is 55


## List

dogs = ["Roger",1,"Syd",True]

print("If Roger is in the list just print True\n")
print("Roger" in dogs)

>print(dog[:3])
['Roger',1,'Sys'] 

>print(len(dogs))
4


- append & edit
    - edit 
    > dogs[2]=beau
    > print(dog[2])
    beau 
    - append
    dogs.append('Judah')
    會把Judah加到最後面的分項去
    - extend
    dogs.extend(['Judah',5])
    把兩格分項都加到後面去，可以加一整個list
        - dogs+=['Judah',5]跟上面的結果是相同的
    #### 若把Append加上list，整個list會變成最後分項，而不是多個獨立的。
    #### 但若是寫成Dogs +="Judah"整個會被拆成'J','u','d','a','h'，所以一定要記得加上[]

    - remove(移除)
    dogs.remove('Syd')
        - 這樣syd會從裡面被移除，但要小心確認他有在list裡面，沒有整個program就會error。
    - pop
    remove the last item in the list , and print it.
    And this thing will not on the list anymore.
    - insert
    items.insert(2,"test")
    這樣item的第三項(從零開始算的)就會插入test，本來的index 2位置的，就會往後排。
    #### 但你若是要插入多個的話，可以試試看這個
    items[1:1]=["test1","test2"]
    這樣就會從index 1開始插入test1跟test2，其他的項目往後遞延
    #### sort 
    - items.sort()
    會把items這個list由大寫的第一個字順序到小寫的第一個字順序來排序。
    - items.sort(key=str.lower)
    會不分大小寫，照alphabet的順序來先做排列。
    - itemscopy=items[:]
    可以先行複製item內容，讓值被變更的同時可以保留他的原本樣貌
    - print(sorted(items,key=str.lower))
    可以不變動本來item的樣子，只有輸出時來做排列改變
    
    
    ---
## Tuples
Tuple用()表示，Tuple一旦建立就不可再變更，要新增元素的話只能創新的Tuple後面再加。
you can't modify the original tuple


> names = ("Roger", "Syd")
> newTuple=names+("Tina","Quincy")


## Dictionaries
- dog={"name":"Roger", "age":8, "color":"green"}
  print(dog.get("color","brown"))
  >輸出狗的顏色，若是沒有就輸出brown
    - print(dog.pop("name"))
      print(dog)
    >此時name就會消失，因為被pop掉了
    - print(dog.popitem())
    >最後被加入的會被拿掉，是Color會消失
    - print(dog.keys())
    >輸出所有的值
    >dict_keys(['name','age,'color'])
    - print(list(dog.values()))
    >['Roger',8,'green']
    因為使用了List所以變成[] 
    - dog["favorite food"]="meat"
    這樣最後就可以輸出多一項favorite food, meat
    - del dog['color']
    這樣就可以把顏色刪除
    - copy()
    dogCopy = dog.copy()
    這樣就可以copy dictionary
    
## sets
