Python基礎第二天——if判斷、while循環、for循環、Pycharm的使用、python字符串


Python程序的流程控制:

python程序是從上至下逐行執行的

一、if條件的判斷

python的if語句的語法:

if    條件1:

    條件1成立的情況下執行

elif  條件2:

    條件2成立的情況下執行  

elif  條件3:

    條件3成立的情況下執行

... 

else:

    之前的所有條件均不成立的情況下執行

定義:if判斷在程序中是用於邏輯判斷的。

用以下幾個例子來說明if判斷的作用。

例1:Python簡單的猜年齡

# 猜年齡
xiaobai_age = 18    # 先定義好一個初始值的變量
user_input = int(input("Please guess xiaobai's age:")) # 再定義一個變量,由於是要與上一個變量進行比較,所以要強制改為整型
if user_input > xiaobai_age:      # 以下的邏輯判斷則是在對以上的兩個變量進行對比,然后作出相應的結果
    print("Try smaller")
elif user_input < xiaobai_age:
    print("Try bigger")
else:
    print("You got it")

 

 例2:Python簡單的用戶登陸

# 用戶登陸
user = "xiaobai"
pwd = "123456"   # 先定義好用戶名和密碼的變量
user_input = input("Please input your username:") # 再定義好用戶輸入的用戶名和密碼的變量
password = input("Please input your password:")
if user_input == user and password == pwd:  # 將這兩組變量進行對比判斷
    print("login successfully")
else:
    print("Sorry,your username or password is wrong,please Try again!")

 

 例3:查看成績

# 查看成績
user = int(input("Please input your scores:"))
# 先定義一個用戶輸入的變量,因為是要用於作比較,所以必須強制改為整型
# 以下是作判斷
if user > 90:
    print("You got an 'A'")
elif user < 90 and user > 70:
    print("You got a 'B'")
elif user < 70 and user > 60:
    print("You got a 'C'")
else:
    print("You got a 'D'")

 

二、while循環

Python的while語句的語法:

while 條件:

  循環體

  如果條件為真,循環體則執行

  如果條件為假,循環體則不執行

1、while循環

定義:while循環在程序中是用來重復干一件事情的。常見的應用場景有:比如登陸QQ時要輸入賬號密碼

用以下幾個簡單的實例來說明while循環

例1:while 1:

# while循環的簡單實例
while 1:  
# while 1:表示條件為1時打印“OK”,
# 每打印完“OK”后又返回到起始位置再來判斷條件,反復執行,這是一個死循環
    print("OK")
print("1111111111")
# 所以在循環外的字符“1111111111”不會被打印

 例2:while 3>2:

# while循環的簡單實例
while 3>2:
# while 3>2:表示條件3>2時打印“OK”,
# 每打印完“OK”后又返回到起始位置再來判斷條件,因為3永遠大於2,反復執行,這又是一個死循環
    print("OK")
print("1111111111")
# 所以在循環外的字符“1111111111”不會被打印

 例3:while True:

# while循環的簡單實例
while True:
# while True:表示條件永遠為真時打印“OK”,
# 每打印完“OK”后又返回到起始位置再來判斷條件,因為永遠為真,反復執行,這又是一個死循環
    print("OK")
print("1111111111")
# 所以在循環外的字符“1111111111”不會被打印

 例4:while False:

# while循環的簡單實例
while False:
# while False:表示條件不成立,則不會打印循環體內的“OK”字符,
    print("OK")
print("1111111111")
# 所以在循環外的字符“1111111111”會被打印

 例5:只打印9次"OK"

先來個容易讓人迷惑的例子

# while循環的簡單實例
count = 1
while count<10:
    print("OK")
print("111111111")
# 並不是打印10次“OK”,而是一個死循環,
# 因為變量count每次循環都沒有變化,都是等於1,每進入循環時都是拿1<10作比較,所以這是一個死循環
# 循環外的字符“11111111”不會被打印  

 若要打印9次“OK”,則將程序改為:

# while循環的簡單實例
count = 1             # 先定義變量count,並賦值1
while count<10:       # 設定條件,把count
    print("OK",count) # 打印字符“OK”,並打印count變量每次循環的次數變化
    count += 1        # 最關鍵的一步:將conunt自增1操作,這樣每次循環的變量count的數字都會變化,直到小於10后停止循環。

print("111111111") # 以上循環停止后程序將繼續執行,將會打印字符"11111111"

 輸出結果:

OK 1
OK 2
OK 3
OK 4
OK 5
OK 6
OK 7
OK 8
OK 9
111111111
View Code

2、break與continue的作用

1、break

終止當前循環,跳出循環體

2、continue

終止本次循環並開始下一輪循環

打個非常通俗易懂的比方來理解breakcontinue的區別:

        一個比較叛逆的學生在學校上課,某天因為犯了錯挨了老師的罵,叛逆的他便打了老師一頓,違反了校規,被學校責令停課一天反省,第二天又繼續讓其上課。這就類似於循環體中的continue

        又某一天該學生又犯了錯被校長訓斥了,於是叛逆的他便打了校長一頓,這次嚴重違反了校規,直接被學校開除了,以后就不能來學校上課了。這就類似於循環體中的break

例1:簡單的用戶輸入命令程序

# 簡單的用戶輸入命令的程序
user = "xiaobai"
pwd = "123456"
while True:
    user_input = input("Please input your username:")
    password = input("Please input your password:")
    if user_input == user and password == pwd:
        print("Login succefully")  # 用戶名密碼驗證成功后則進入下一個循環
        while True:
            res = input("Please input command:")
            if res == "q":
                break  # 這個break表示當res變量等於q時,則退出當前循環
            print("user input command is %s"%res)
        break  
        # 這個break的意思表示當以上循環退出時,再退出當前的循環,這里可以在之前加上else:也可以不加

 

 由於出現2個break,雖然程序沒有錯,但是很容易讓程序員誤解,這時就要用到標識位來解決這個問題,具體操作如下:

# 簡單的用戶輸入命令的程序
user = "xiaobai"
pwd = "123456"
tag = True   # 標識位,相當於生活中的紅綠燈,紅燈停,綠燈行,讓一個變量把True存儲起來
while tag:   # 相當於while True,只不過是用tag變量代替了。
    user_input = input("Please input your username:")
    password = input("Please input your password:")
    if user_input == user and password == pwd:
        print("Login succefully")
        while tag:  # 相當於while True,只不過是用tag變量代替了。
            res = input("Please input command:")
            if res == "q":  # 當變量res等於字符“q”時,下面是最重要的一步來了
                tag = False # tag改為False,那么本次的循環就是while False了,while False的特性就是不會運行循環內的代碼。
                            # 相當於break,直接跳出了當前循環
                continue   # 這里加上continue是為了不打印"q"這個命令,因為退出了程序就不需要打印了。表示跳出本次循環。
            print("user input command is %s"%res)
        break    # 這個break表示上面的命令都執行完了則退出當前的主體循環

 

三、for循環

Python中for語句的語法:

for 變量名 in range(范圍)

  循環體

定義:和while循環一樣,也是用於程序重復做某一件事

range()是內建函數,表示范圍

例1:for語句的簡單示例

# for 語句的簡單示例
for i in range(5): # 默認從0開始,打印5次字符“OK”
    print("OK",i)

 輸出結果:

OK 0
OK 1
OK 2
OK 3
OK 4
View Code

 例2:for語句的簡單示例2

# for 語句的簡單示例2
for i in range(1,5): # 表示取從1到4的范圍,顧首不顧尾
    print("OK",i)

 輸出結果:

OK 1
OK 2
OK 3
OK 4
View Code

例3:for語句的簡單示例3

# for 語句的簡單示例3
for i in range(1,5,2):
    # 表示取從1到4的范圍,顧首不顧尾,且隔一個值取。括號中第三個數表示步長
    print("OK",i)

 輸出結果:

OK 1
OK 3
View Code

例4:九九乘法表

# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print("%s*%s=%s" %(i,j,i*j),end=' ') # end是用來避免print自帶的換行功能。
    print() # print自帶換行功能

四、小練習

1、使用while循環輸出1、2、3、4、5、6、8、9、10

誤區:以下是新手會常犯的錯誤,用最笨拙的方法:依次將count的值代入至循環體內進行反復運算,直到count的值等於7時,此時count不再作自增1的操作了,而是把count等於7的值再回到上面再繼續代入至循環體內,碰到if count==7:時又跳出本次循環繼續將7代入,反復如此便是死循環了。

輸出結果:
1
2
3
4
5
6
View Code
 
        

從輸出的結果看好像只是輸出了1-6的數字,實際上這是一個死循環,只需要在if count == 7:下面加上一行打印的代碼就能看到效果。

 

解決方法:

(1)方法一:在以上代碼中在if count ==7:下面插入一條count  += 1即可

# 1、使用while循環輸出1、2、3、4、5、6、8、9、10
count = 1
while count<11:
    if count == 7:
        count += 1 # 作用:當count等於7時,跳出本次循環,再自增1
        continue
    print(count)
    count += 1

 輸出結果:

1
2
3
4
5
6
8
9
10
View Code

(2)方法二:優化方法一的代碼

# 1、使用while循環輸出1、2、3、4、5、6、8、9、10
count = 1
while count<11:
    if count != 7:
        print(count)
    count += 1

 輸出結果:

1
2
3
4
5
6
8
9
10
View Code

2、求1-100的所有數的和

(1)方法一:用while循環實現1-100所有數的和

# 2、求1-100的所有數的和
count = 1 # 設定一個初始值
sum = 0   # 設定一個總數的初始值,用於存儲總數的計算結果
while count < 101: # 設定循環1-100的范圍
    sum = sum + count # 讓每次循環的結果相加並賦給sum
    count += 1  # count自增1操作
print(sum)

 輸出結果:

5050
View Code

(2)方法二:用for循環實現1-100所有數的和

sum = 0 # 設定一個總數的初始值,用於存儲總數的計算結果
for i in range(1,101): # 設定循環1-100的范圍
    sum = sum + i  # 讓每次循環的結果相加並賦給sum
print(sum)

 輸出結果:

5050
View Code

3、輸出1-100內的所有的偶數

(1)方法一:用while循環實現1-100所有偶數的和

# 3、輸出1-100內的所有的偶數
count = 1
while count<101:
    if count % 2 == 0:  # 取余運算,表示能被2整除
        print(count)
    count += 1

 輸出結果:

2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
View Code

(2)方法二:用for循環實現1-100所有偶數的和

# 3、輸出1-100內的所有的偶數
for i in range(1,101):
    if i % 2 == 0:
        print(i)

 輸出結果:

2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
View Code

以上的方法中還可以將取余等於0改成取余不等於0

4、求1-2+3-4+5-6...99的所有數的和

(1)方法一:用while循環求1-2+3-4+5-6...99的所有數的和

# 4、求1-2+3-4+5-6...99的所有數的和
count = 1
sum = 0
while count < 100:
    if count % 2 == 0:
        sum = sum - count # 所有負偶數的和
    else:
        sum = sum + count # 所有奇數的和
    count += 1
print(sum)

 輸出結果:

50
View Code

(1)方法二:用for循環求1-2+3-4+5-6...99的所有數的和

# 4、求1-2+3-4+5-6...99的所有數的和
sum = 0
for i in range(1,100):
    if i % 2 == 0:
        sum = sum - i # 所有負偶數的和
    else:
        sum = sum + i # 所有奇數的和
print(sum)

 

5、簡單的用戶登陸(三次機會重試)

 

關於這一題,有很多種方法,下面我就以我的思路來解題。

(1)方法一:

# 三次登陸
user = "xiaobai"
pwd = "123456"  # 這里一定要加上引號,否則程序會出錯
count = 1
while True:
    username = input("Please input your username:")
    password = input("Please input your password:")
    if username == user and password == pwd:
        print("Login successfully!")
        break
    else:
        if count >= 3:
            print("Login fail,Please try again")
            break
    count += 1

 (2)方法二:

user = "xiaobai"
pwd = "123456"  # 這里一定要加上引號,否則程序會出錯
count = 0
while True:
    if count == 3:
        print("Too many times!")
        break
    username = input("Please input your username:")
    password = input("Please input your password:")
    if username == user and password == pwd:
        print("Login successfully!")
        break
    count += 1

 

五、Pycharm軟件的使用

就例舉pycharm中最常用的一些功能的快捷鍵:

1、shift + 回車鍵跳轉至下一行

2、鼠標滾輪按住拖動不放,表示選中的軌跡同時進行編輯

3、ctrl + /  選中行注釋

4、將選中的行按Tab鍵,相當於所選的行行首都增加了一個tab鍵

5、將選中的行按shift鍵和Tab鍵,相當於所選的行行首都減少一個tab鍵

 暫時寫到這里,以后有補充再加上去

六、數字和字符串類型

數據類型指的是變量的值的不同的類型,用來表示不同的狀態

查看python數據類型的命令是:type()函數

查看python數據的內存地址的命令是:id()函數

1、數字類型:整型、長整型、復數、浮點型。

在Python3中已沒有長整型的概念,我們要用到的最常用的就是整型和浮點型。

數字類型的特性:

<1> 只能存放一個值

<2> 一旦定義,不可更改

<3> 直接訪問

數字類型的常用操作就是用來加減乘除等計算用的。

(1)整型

int()可以強制轉換為數字類型,前提條件是字符串必須是數字,否則報錯

直接定義,例如:

n = 1   # 這就定義了一個整型

      # 用type(n)就可以查看到這是一個整型的數據類型

(2)浮點型

<1>直接定義,例如:

n = 1.85   # 這就定義了一個浮點型

      # 用type(n)就可以查看到這是一個浮點型的數據類型

<2>補充1:

Python的科學記數法

e表示的:

例如:

print(1.8e-3)    # 表示1800.0

print(1,8e3)     # 表示0.0018

 

<3>補充2:

Python實現十進制轉二進制

十進制轉換二進制的命令是bin()的函數

例如:

print(bin(10))  # 得到的結果是:“0b1010”,“0b”代表二進制

 

<4>補充3:

Python實現十進制轉八進制

十進制轉換八進制的命令是oct()的函數

例如:

print(oct(10))  # 得到的結果是:“0o12”,“0o”代表八進制

 

<5>補充4:

Python實現十進制轉十六進制

十進制轉換十六進制的命令是hex()的函數

例如:

print(hex(10))  # 得到的結果是:“0xa”,“0x”代表十六進制

 

2 、字符串類型

(1)定義:

Python中定義在引號里面的就叫做字符串類型,字符串是由一個個的字符組成的。

用  str( )可以強制轉換字符類型

字符串類型的特性:

<1> 只能存放一個值

<2> 不可變

<3> 按照從左至右的順序定義字符集合,下標從0開始順序訪問,有序

例:

s1 = 'hello world'

s2 ="hello world"

s3 = '''hello world'''

s4 = """hello world"""

(2)字符串常用的操作:

字符串的方法是在字符后加上“.”來進行操作的。

字符串常用的操作有:

  移除空白  strip()

  分割 s.split("|")

  長度   例:len(s)

  索引   例:s[3]、s[-1]

  切片   例:s[0:5:2]

具體參照  http://www.cnblogs.com/xiaoxiaobai/p/7612042.html

(3)字符串的索引與切片操作:

<1>索引

[ ]來對字符串進行索引操作

  若中括號里的索引數為正數,則從左至右找,從0開始取

  若中括號里的索引數為負數,則從右至左找,從-1開始取

  若中括號里的索引數超出要取的字符串的長度,程序則會報錯:IndexError: string index out of range

 

例:取出字母”o“

s = "xiaobai"     # 數字符串“xiaobai”中的字母“o”所在的索引位置,從左至右,從0開始

print(s[3])

<2>切片

[:]來對字符串進行切片操作

  [:],表示取出字符串中的所有字符

   [1:]表示從索位置1開始一直取到字符串最后一個字符

   [:2],表示從索引位置0開始一直取到索引位置1的字符,顧首不顧尾

   [2:6],表示從索引位置2開始一直取到索引位置5的字符,顧首不顧尾

   [-1:],表示從取出字符串中最后一位字符

   [:-1],表示取出除了字符串中最后一位字符的所有字符

   [3:-2],表示從取出索引3至倒數2位置之間的字符

   [1:6:2],表示取出索引1至索引5位置的字符,並且取出的字符每隔一個取一個,最后的“2”表示步長, 因為是正數,表示從左至右隔一個取

 

例:取出索引位置1和3所在的字母

s = "xiaobai"

print(s[1:3])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM