while迴圈補充

睡不醒的小斌發表於2024-04-01

1 while迴圈補充

1.1 for迴圈

for 迴圈 : 遍歷可迭代型別_(能索引取值的也輸入可迭代型別)

for 變數名 in 字串:

​ 迴圈程式碼

#for 主要用於遍歷,字串中有幾個字元,for就會迴圈幾次
name = "dream"
for a in name:   #a是自定義的一個變數
    print(a)
#這個for迴圈了5次,因為name這個字串中有五個字元
#第一次迴圈的時候a的值是d
#第二次迴圈的時候a的值是r
#第三次迴圈的時候a的值是e
#第四次迴圈的時候a的值是a
#第五次迴圈的時候a的值是m
name = [1,2,3,4]
for a in name:   #a是自定義的一個變數
    print(a)
# 1 2 3 4   依次豎著向下
同理
# name = (4, 1, 2)
# name = {4, 5, 6}也一樣
# name = {"username": "dream"}
#字典遍歷只會出來字典裡的key:wusename
#若是想取出字典key裡面的
name = {"username": "dream"}
for a in name:
    print(a)
    print(name[a])       #dream

1.2死迴圈(while True)

# 無法退出當前迴圈
# 不要在程式碼中出現死迴圈;會造成當前CPU飆升
 while True:
     print(1)
# 【二】可以在while緩緩重定義一個標誌位
 tag = True
 while tag:
     username = input(":>>>")
     if username == "dream":
         tag = False

1.3 range

幫我們生成指定區間內的整數列表

# 在 2.7 版本及之前range(1, 5) 會給你返回一個 [1,2,3,4]
# 3.6 之後 最佳化掉了
 print(range(1, 5), type(range(1, 5)))
 range(1, 5) <class 'range'>   # ----》 生成器物件

我們用幾個取幾個,range生成位置預設是從數字0開始到指定位置-1,也可理解為骨頭不顧尾。

for i in range(5)
  print(i)    # 0 1 2 3 4

2 while迴圈練習

# 登入認證練習
# 用列表套字典儲存使用者資料
# 有一個輸入框輸入使用者名稱和密碼 ,增加重試次數 讓他一直重試直到正確為止
# 正確的話就斷掉了
# 登入認證練習
# 【一】定義一個列表 + 字典儲存使用者資訊
 user_data_list = [
     {"username": "dream", "password": "521"},
     {"username": "hope", "password": "369"},
     {"username": "opp", "password": "963"},
 ]
 【二】迴圈開始校驗使用者名稱和密碼
 tag_true = True
 while tag_true:
     username_input = input("username :>>>> ")
     password_input = input('password :>>>> ')
     # 【三】校驗當前使用者名稱是否存在於上述列表中
     for user_data_dict in user_data_list:
         # user_data_dict : {'username': 'dream', 'password': '521'}
         username_exist = user_data_dict.get("username")
         # dream
         password_exist = user_data_dict.get("password")
         # 521

         if username_input == username_exist:
             # 再校驗密碼
             if password_exist != password_input:
                 print(f"當前使用者 {username_exist} 密碼錯誤!")
             else:
                 print(f"當前使用者 {username_exist} 登入成功!")
                 tag_true = False
user_data_list = [
    {"dream": "521"},
    {"hope": "369"},
    {"opp": "963"},
]
# 【二】迴圈開始校驗使用者名稱和密碼
tag_true = True
while tag_true:
    username_input = input("username :>>>> ")
    password_input = input('password :>>>> ')

    # 【三】校驗當前使用者名稱是否存在於上述列表中
    for user_data_dict in user_data_list:
        # user_data_dict : {"dream": "521"}
        password = user_data_dict.get(username_input)
        # 有值 521
        if password and password == password_input:
            print("登陸成功")
            tag_true = False
            break
        elif password and password != password_input:
            print(f"密碼錯誤")

個人示例

user_list = [{"name":"aaa","password":1}
             ,{"name":"bbb","password":2}
             ,{"name":"ccc","password":3}
             ,{"name":"ddd","password":4}
             ]

tag_true = True
while tag_true:
    user_input = input("請輸入賬號")
    password_input = int(input("請輸入密碼"))

    for user in user_list:
        if user_input == user["name"]:
            if password_input == user["password"]:
                print(f"登陸成功")
                tag_true = False
                break
            else:
                print("密碼錯誤")
                break
    else:
      print("賬號不存在")

3 整數型別的內建方法

3.1資料型別的內建方法

八大基本資料型別,為了更加方便操作每一個資料型別,於是開發者就將可以透過繁瑣操作達到目的的程式碼封裝成一個方法,幫我們快速寫程式碼

3.2 數字型別

3.2.1 整數型別

print(1 + 1)
 num = 1  # 2
 print(num.__add__(2)) #3

(1)型別強制轉換

可將符合整數格式的字串轉換成整數型別
 num = '1'
 print(int(num)) # 1
# 只能轉換符合整數型別格式的字串
# print(int('a'))

(2)進位制轉換

1.十進位制轉八進位制 0o

print(oct(999))  # 0o 1747

2.十進位制轉十六進位制 0x

print(hex(999))  # 0x 3e7

3.十進位制轉二進位制 0b

print(bin(999))  # 0b 111110011

4.其他進位制數轉換為十進位制數 , int也支援轉換進位制

 num = '0b1111100111'
 print(int(num, 2))  #999
 num = '0o1747'
 print(int(num, 8))  #999
 num = '0x3e7'
 print(int(num, 16))  #999

3.2.3 浮點數的內建方法

 salary = 100.01
# 強制型別轉換 轉換符合浮點數的字串 可以將整數轉換為 浮點數
num = 100
print(float(num))  # 100.0
num = '100.111'
print(float(num))  # 100.111

3.2.4 判斷當前型別是否是整數或者浮點數

num1 = b'4'  # <class 'bytes'>
print(type(num1))
num2 = '4'  # unicode,Python 3 中不需要在字串前加 'u'

num3 = '四'  # 中文數字

num4 = 'Ⅳ'  # 羅馬數字

# 判斷當前字串型別是否是指定的資料格式

 (1)判斷當前是否為數字型別 isdigit
 print(num1.isdigit()) #	True
 print(num2.isdigit()) #	True
 print(num3.isdigit()) # False
 print(num4.isdigit()) # False

  (2)判斷是否是小數點型別 isdecimal (用於字串)
 print(num1.isdecimal())
 num = 100.01
 print(num.isdecimal())
 print(num2.isdecimal())

 age = input("請輸入年齡 :>>>> ")
 if age.isdigit():
     age = int(age)
     print(type(age))
 else:
     print(f"語法不規範")

4 字串內建方法(必會)

4.1字串的語法格式

name = "dream"

4.2 內建方法 --- 優先記住和學習

4.2.1 字串拼接

(1)直接字串 + 法
 name = "dream"
 name_one = "hope"
 print(name + name_one) # dreamhope

 (2).join字串拼接
  print(','.join(name_one)) # h,o,p,e

4.2.2 索引取值

正索引 從 0開始取值
 負索引從 -1 開始取值
 索引取值可以但是不能修改

4.2.3 切片

給定一個起始位置和結束位置 擷取這之間的元素, 切片也是顧頭不顧尾
 name = "dream"
 正常語法:[起始索引位置:截止索引位置]
 print(name[2:4])  # ea
 不正常語法: [起始索引位置:截止索引位置:步長]
 步長;隔幾個去一個
 print(name[0:4:2]) #de

 print(name[0:-1:-2]) #de

 負索引切片 遵循座標軸的規範 左小右大
 print(name[-4:-1]) #rea

4.2.4 計算長度

name = "dream"
print(len(name)) #5

4.2.5 成員運算

name = "dream"
print("d" in name) #True

4.2.6 去除空格

username = input(">>>>")
 #去除手抖產生的空格
 username = username.strip()
 if username == "dream":
     print(username) # 輸入dream+五個空格   輸出dream 沒空格
 預設是去除兩側的空格
 去除兩邊的特殊字元
 name = " dream "
 print(name.strip(' '))
 name = "$dream$"
 print(name.strip("$")) #dream
 
 去除指定一側的特殊字元
 right :右側
 print(name.rstrip("$")) #$dream
  left 左側
 print(name.lstrip("$")) #dream$

4.2.7 切分字串

 username_password = "dream|521"
# 引數是按照什麼去切 切完以後這個編制就沒了
print(username_password.split("|"))  #['dream','521']

 username, password = username_password.split("|")
 print(username, password) #dream 521

 name = "dream 521"
 print(name.split()) #['dream', '521']

4.2.8 遍歷

# 就是將裡面的每一個元素看一遍
 name = 'dream'
 for i in name:
     print(i)       
#d
#r
#e
#a
#m


   range : 顧頭不顧尾
 for i in range(len(name)):
     print(name[i])  #由於len(name)是5 然後range取值是從0開始 0-4正好是dream
#d
#r
#e
#a
#m        

4.2.9 重複當前元素

print("*" * 10)  #**********

4.2.10 大小寫轉換

 name = 'Dream'
 print(name.upper()) #	DREAM
 print(name.lower()) #dream

 name = "dream"
 print(name.islower()) #False
 print(name.isupper()) #False   (因為Drean是大小寫混用)

4.2.11 判斷當前字串以 .. 開頭或者結尾

 name = "dream"

# 判斷開頭
 print(name.startswith("d")) #True
# 判斷結尾
 print(name.endswith("m")) #True

4.2.12 格式化輸出語法

#  %s %d佔位
name = "dream"
age = 18

print("my name is %s " % name) #my name is dream
print("my name is %s ,my age is %s" % (name, age))
#my name is dream,my age is 18

# format
# 按位置傳引數
print('my name is {} ,my age is {}'.format(name, age))
#my name is dream,my age is 18
# 按關鍵字傳引數
print('my name is {name_location} ,my age is {age_location}'.format(name_location=name, age_location=age))
#my name is dream,my age is 18
# f+ {}
print(f"my name is {name} . my age is {age}")
#my name is dream,my age is 18

4.2.13 join拼接

print(','.join("drema")) #d,r,e,a,m
print('.'.join(["drema","521"])) #dream.521
print('|'.join(("drema","521"))) #dream|521

相關文章