1. 程式人生 > >魚C工作室《零基礎入門學習Python》學習過程筆記記錄第一天 001-010

魚C工作室《零基礎入門學習Python》學習過程筆記記錄第一天 001-010

魚C工作室練習題從第四節開始就要收費..
習題在百度文庫的連結如下:https://wenku.baidu.com/view/e6b8c88ecc175527072208d7.html?re=view
在IDLE中Alt+p返回上一行



001
>>> print("I love yzw \n"*8)
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw




>>> print("I love yzw \n"+8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
為什麼用*是對的,用+是錯的? 
原因是python不允許完全不同的東西相加...它認為這種相加是無意義的。這和c++,java的可以轉換形式再相加不同
>>> print("你好"+"少年")  #字串連結
你好少年








關於在命令列中直接輸入和用print列印的區別
>>> 5+8
13
>>> print(5+8)
13




>>> "I love yzw"
'I love yzw'
>>> print("I love yzw")
I love yzw
直接輸入會顯示型別和字串
print只顯示字串




002.;
003.


命名規則:字母,數字,下劃線,但是不能以數字開頭(和C++命名規則相同)
python區分大小寫(和C++相同)




>>> str='d:\Python\003'
>>> print(str)
d:\Python #必須在\前加轉義字元\才行
>>> str=r'd:\Python\003'  #這個r會自動為\新增轉義字元,這在檔案路徑特別長的時候非常有效
>>> print(str)
d:\Python\003


竟然有這樣的寫法
str=("我愛魚C"
"正如我愛小於"
"他那聲音"
"久久不肯散去")  #括號裡面的字串會自動連線成為一個字串
print(str)


這樣寫相當於三引號
str=("我愛魚C \n"
"正如我愛小於\n"
"他那聲音\n"
"久久不肯散去\n")
print(str)


004.
邏輯運算子: 
and   相當於C++的&&

 or   相當於C++的||

not 相當於C++的!(非)



while 'c':
    print("我愛yzw")
#這會列印無數次...因為‘c’的值為True
>>> not'c'
False


>>> not 0 #0表示False
True


總的來說,在Python中
0
‘’  #表示空字元
None
都表示False,其他為True


005.
3.14e10  #e相當於乘10
>>> 3.14e10
31400000000.0


True用於計算時,相當於1
False用於計算時,相當於0
>>> True+True
2
>>> True+False
1
>>> True*True
1
>>> True*False
0
>>> True/False
報錯因為0不能做分母
>>> False/True
0.0


Python中的型別:整型(int),浮點型(float),字串(str),布林型(bool)


型別轉換:
>>> a='123'
>>> b=int(a)
>>> b
123  #注意這裡沒有''說明它是一個整型
>>> b=int('yzw')
#報錯,因為python裡只能把只包含數字的字串轉化為整型,包含字母之類亂七八糟的通通不行


>>> a=int(3.14)
>>> a
3
#這裡和C++一樣,會捨去小數部分


關於float()型別轉換
>>> a='3.14'
>>> b=float(a)
>>> b
3.14
>>> a='3'
>>> b=float(a)
>>> b
3.0
>>> a=3
>>> b=float(a)
>>> b
3.0


關於str()  #注意str是關鍵字
>>> a=3.14
>>> b=str(a)
>>> b
'3.14'


type()函式 #用於判斷型別
>>> a=3
>>> type(a)
<class 'int'>
>>> b=3.14
>>> type(b)
<class 'float'>
>>> c='haha'
>>> type(c)
<class 'str'>
>>> d='i'
>>> type(d)
<class 'str'>
>>> e=True
>>> type(e)
<class 'bool'>


instance()  #判斷前面的元素和後面的型別關鍵字是匹配,即判斷型別是否相同,但是第二個引數一定是型別關鍵字
instance
n要求


>>> isinstance('3.14',str)
True
>>> isinstance(3,int)
True
>>> isinstance(3,float)
False
>>> isinstance(True,bool)
True


一些函式

為字串   

s.isalnum()  所有字元都是數字或者字母,為真返回 Ture,否則返回 False。   

s.isalpha()   所有字元都是字母,為真返回 Ture,否則返回 False。  

s.isdigit()     所有字元都是數字,為真返回 Ture,否則返回 False。

s.islower()    所有字元都是小寫,為真返回 Ture,否則返回 False。   

s.isupper()   所有字元都是大寫,為真返回 Ture,否則返回 False。   

s.istitle()      所有單詞都是首字母大寫,為真返回 Ture,否則返回 False。  

s.isspace()   所有字元都是空白字元,為真返回 Ture,否則返回 False。

006. 

// (結果為整數的除法,即舍掉小數)

>>> 5/3

1.6666666666666667    #注意這和C++不同

關於結果為整數的除法:#用//

>>> 5//3     
1

>>> 5.0//3
1.0

**(冪運算子)

>>> 2**2
4
>>> 2**3
8
>>> 2**4
16

-3表示負3 

>>> 1<10<100    !!竟有這種操作   相當於 10>1 and 10<100
True
>>> 1<0<10
False

愛因斯坦曾出過這樣一道有趣的數學題:

有一個長階梯,若每步上2階,最後剩1階;

若每步上3階,最後剩2階;

若每步上5階,最後剩4階;

若每步上6階,最後剩5階;

只有每步上7階,最後剛好一階也不剩。 

原始碼:

i=7
haha=0
while haha==0:
    if(i%2==1 and i%3==2 and i%5==4 and i%6==5):
        haha=1
    else:
        i=i+7
print(i)

007.

008.

a=input("請輸入分數")
a=int(a)
grade=''
if(a>=90):
    grade='A'
#elif(a>=80 and a<90):
elif(80<=a<90):    !!!!和數學的寫法相同,可用小於號連線
    grade='B'
elif(80>a>=60):    !!!!和數學的寫法相同,也可以用大於號連線
    grade='C'    
else:
    grade='D'
    
print(grade)

D:\Python>py 008.py
請輸入分數62
C

D:\Python>py 008.py
請輸入分數82
B

>>> x,y=1,2
>>> x
1
>>> y
2

三元操作符(這裡是對C++中?: 的改寫,但意思一樣) 

>>> a=1
>>> b=2
>>> small= a if a<b else b  #if後面的語句成立表示式的值為a的值,否則為b的值
>>> small
1
>>> b=4
>>> a=5
>>> small=a if a<b else b
>>> small
4

assert()

如果assert(為False)

程式會崩潰

如果assert(為True)則會自動把這句忽略過去

>>> assert(4<4)
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    assert(4<4)
AssertionError

>>> assert(4<5)

>>> (即:程式會跳過這裡繼續進行)

x=1 y=2 z=3如何快速交換x,y,z?

>>> x,y,z=1,2,3
>>> x
1
>>> y
2
>>> z
3
>>> x,y,z=y,z,x
>>> x
2
>>> y
3
>>> z
1

有了這個思路也可以交換兩個數的值

>>> a,b=1,2
>>> a,b=b,a
>>> a
2
>>> b
1

成員資格運算子:in

用於檢查一個元素是否在集合中,如果在返回True,如果不在返回False

>>> a="我是蒟蒻"
>>> b="蒟蒻"
>>> b in a
True
>>> b="我"
>>> b in a
True

009.

for迴圈

j="abcdefg"
for i in j:
    print(i,end=" ")  #我終於知道怎麼能不換行的有間隔的輸出多個元素了

D:\Python>py 009.py
a b c d e f g

j="abcdefg"
for i in j:
    print(i,end="    ")#第二個引數控制了間隔

D:\Python>py 009.py
a    b    c    d    e    f    g  

len(引數) 計算引數的長度

a=["你是誰?","我是:","蒟蒻"]  #這裡a是一個列表,注意[]
for i in a :
    print(i,len(i))

D:\Python>py 009.py
你是誰? 4
我是: 3
蒟蒻 2

range生成一個列表

a=range(1,5)
print(a)

D:\Python>py 009.py
range(1, 5)   #可見這樣是沒辦法輸出整個列表的

a=list(range(1,5))  #型別轉換
print(a)

D:\Python>py 009.py
[1, 2, 3, 4]

for i in range(1,5):
    print(i)

D:\Python>py 009.py
1
2
3
4

for i in range(5): #只有一個引數時,從零開始
    print(i) 

D:\Python>py 009.py
0
1
2
3
4

break,continue的用法和c++相同

010.

列表:打了激素的陣列

python沒有陣列,但有列表,它可以放進任何型別的資料(和C++必須放相同型別的資料不同,因為python變數沒有型別)

>>> jr=[1,'a',"hahaha"]
>>> jr
[1, 'a', 'hahaha']

甚至列表中的元素也可以是列表

>>> jr=[['hi','juruo'],'你好蒟蒻',1]
>>> jr
[['hi', 'juruo'], '你好蒟蒻', 1]

可以建立一個空列表

>>> jr=[]
>>> jr
[]

append()向列表中新增元素

>>> jr=[]
>>> jr
[]
>>> jr.append("SB")
>>> jr
['SB']

>>> len(jr)
1
>>> jr.append("蒟蒻")
>>> jr
['SB', '蒟蒻']
>>> len(jr)
2

extend:向列表中加入另列表的所有元素

>>> jr
['SB', '蒟蒻']

>>> jr.extend([1,2,3])
>>> jr
['SB', '蒟蒻', 1, 2, 3]

列表和陣列一樣,序號是從0開始的

insert()在制定位置插入元素

>>> jr.insert(0,'sb') #第一個引數是位置,第二個引數是元素的值
>>> jr
['sb', 'SB', '蒟蒻', 1, 2, 3]