Python流程控制

2018-06-08 17:16 更新

if

if就是一個(gè)條件判斷的,當(dāng)滿足不同樣的條件的時(shí)候執(zhí)行不同的操作,如法如下:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">if <條件一>:    <條件一代碼塊>elif <條件二>:    <條件二代碼塊>else:    <上面兩個(gè)或者多個(gè)條件都不滿足則只需這里的代碼塊><br></span>

來(lái)一個(gè)小栗子:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/use/bin/env python# _*_ coding:utf-8 _*_# 只需腳本是讓用戶輸入一個(gè)數(shù)字,并把值賦值給變量nn = int(input("Pless Numbers: "))# 如果n大于10if n > 10:    # 輸出n > 10    print("n > 10")# 如果n等于10elif n == 10:    # 輸出n == 10    print("n == 10")# 否則else:    # 輸出n < 10    print("n < 10")<br></span>

三元運(yùn)算

如果條件成立,那么就把值1賦值給var,如果條件不成立,就把值2賦值給var

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">var = 值1 if 條件 else 值2<br></span>

例子

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> var = "True" if 1==1 else "False">>> var'True'<br></span>

for循環(huán)

for語(yǔ)句是python中的循環(huán)控制語(yǔ)句,可用來(lái)遍歷某一對(duì)象,還具有一個(gè)附帶的可選的else塊,主要用于處理for語(yǔ)句中包含的break語(yǔ)句。

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> li = ['ansheng','eirc']>>> for n in  range(len(li)):...  print(li[n])...anshengeirc<br></span>

enumrate

enumerate函數(shù)用于遍歷序列中的元素以及它們的下標(biāo)

例如定義一個(gè)列表,內(nèi)容有電腦,筆記本,手機(jī),組裝機(jī),執(zhí)行腳本的時(shí)候讓用戶選擇商品,并且給商品加上序列:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> li = ["電腦","筆記本","手機(jī)","組裝機(jī)"]>>> for key,value in enumerate(li):...  print(key,value)...0 電腦1 筆記本2 手機(jī)3 組裝機(jī)<br></span>

為了給用戶良好的體驗(yàn),需要要從1開(kāi)始,然后用戶如果輸出相對(duì)應(yīng)的序列那么就打印出序列對(duì)應(yīng)的值:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_# 定義一個(gè)列表li = ["電腦","筆記本","手機(jī)","組裝機(jī)"]# enumerate默認(rèn)從0開(kāi)始自增,我們可以改為從1開(kāi)始自增for key,value in enumerate(li,1):     print(key,value)# 讓用戶選擇商品的序列l(wèi)i_num = input("請(qǐng)選擇商品:")# print輸出的時(shí)候讓序列減1print(li[int(li_num)-1])<br></span>

執(zhí)行結(jié)果如下

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">1 電腦2 筆記本3 手機(jī)4 組裝機(jī)請(qǐng)選擇商品:1電腦<br></span>

range和xrange

range()函數(shù)返回在特定區(qū)間的數(shù)字序列,range()函數(shù)的用法類似切片:range(start,stop,setup),start的默認(rèn)值為0,即從0開(kāi)始,stop的參數(shù)是必須輸入的,輸出的最后一個(gè)數(shù)值是stop的前一個(gè),step的默認(rèn)值是1,setup是步長(zhǎng)

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> for n in range(5):...  print(n)...01234<br></span>

反向輸出

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> for n in range(5,-1,-1):...  print(n)...543210<br></span>

range在Python2.7與3.5的差別

python 2.7.11

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> range(0,100)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]<br></span>

range在Python2.7中,會(huì)把所有的序列都輸出出來(lái),沒(méi)一個(gè)序列都在內(nèi)存中占用一點(diǎn)空間

xrange

xrang不會(huì)一次性把序列全部都存放在內(nèi)存中,而是用到for循環(huán)進(jìn)行迭代的時(shí)候才會(huì)一個(gè)一個(gè)的存到內(nèi)存中,相當(dāng)于Python3.5中的range。

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> for i in xrange(1,10):...  print(i)...123456789<br></span>

python 3.5.1

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">>>> range(1,100)range(1, 100)<br></span>

range在python3.5中就不會(huì)一次性的占用那么多空間,他會(huì)我需要用到這個(gè)序列的時(shí)候然后再內(nèi)存中開(kāi)辟一塊空間給這個(gè)序列,不是一次性分完,相當(dāng)于Python2.7.11中的xrange.

while循環(huán)

while循環(huán)不同于for循環(huán),while循環(huán)是只要條件滿足,那么就會(huì)一直運(yùn)行代碼塊,否則就運(yùn)行else代碼塊,語(yǔ)法如下:

while <條件>:    <代碼塊>else:    <如果條件不成立執(zhí)行這里的代碼塊>

小栗子

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/use/bin/env python# _*_ coding:utf-8 _*_flag = Truewhile flag:   print(flag)   flag = Falseelse:   print('else', flag)<br></span>

練習(xí)題

元素分類

有如下值集合 [11,22,33,44,55,66,77,88,99,90],將所有大于 66 的值保存至字典的第一個(gè)key中,將小于 66 的值保存至第二個(gè)key的值中。
即: {‘k1’: 大于66的所有值, ‘k2’: 小于66的所有值}

圖解流程:

解答:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#_*_coding:utf-8_*_num = [11,22,33,44,55,66,77,88,99,90]dict = {    'k1':[],    'k2':[]}for n in range(len(num)):    if num[n] <= 66:        dict['k1'].append(num[n])    else:        dict['k2'].append(num[n])print(dict.get("k1"))print(dict.get("k2"))<br></span>
  • 輸出結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">[11, 22, 33, 44, 55, 66][77, 88, 99, 90]<br></span>

查找

查找列表中元素,移動(dòng)空格,并查找以 a或A開(kāi)頭 并且以c結(jié)尾的所有元素。

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">li = ["alec", " aric", "Alex", "Tony", "rain"]tu = ("alec", " aric", "Alex", "Tony", "rain") dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}<br></span>
  • 列表的方式

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_li = ["alec", " aric", "Alex", "Tony", "rain"]for n in range(len(li)):    # 去掉左右兩邊的空格然后輸出內(nèi)容并且把首字母換成大寫    # string = str(li[n]).strip().capitalize()    # 把字符串中的空格替換掉,然后首字母轉(zhuǎn)換成大寫    string = str(li[n]).replace(" ","").capitalize()    # 判斷如果字符串的開(kāi)頭是大寫字母"A"并且小寫字母是"c"就print輸出    if string.find("A") == 0 and string.rfind("c") == len(string) - 1:        print(li[n],"--->",string)<br></span>

輸出的結(jié)果:

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">alec ---> Alec aric ---> Aric<br></span>
  • 元組的方式

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_tu = ("alec", " aric", "Alex", "Tony", "rain")for n in range(len(tu)):    # 去掉左右兩邊的空格然后輸出內(nèi)容并且把首字母換成大寫    # string = str(li[n]).strip().capitalize()    # 把字符串中的空格替換掉,然后首字母轉(zhuǎn)換成大寫    string = str(tu[n]).replace(" ","").capitalize()    # 判斷如果字符串的開(kāi)頭是大寫字母"A"并且小寫字母是"c"就print輸出    if string.find("A") == 0 and string.rfind("c") == len(string) - 1:        print(tu[n],"--->",string)<br></span>

輸出的結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">alec ---> Alec aric ---> Aric<br></span>
  • 字典的方式

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_dic = {    'k1': "alex",    'k2': ' aric',    "k3": "Alex",    "k4": "Tony"}for key,val in dic.items():    string = str(val).replace(" ","").capitalize()    if string.find("A") == 0 and string.rfind("c") == len(string) - 1:        print(key,val,"---",string)<br></span>

輸出的結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">k2  aric --- Aric<br></span>

輸出商品列表

用戶輸入序號(hào),顯示用戶選中的商品

商品

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">li = ["手機(jī)", "電腦", '鼠標(biāo)墊', '游艇']<br></span>
1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_li = ["手機(jī)", "電腦", '鼠標(biāo)墊', '游艇']for key,value in enumerate(li,1):    print(key,".",value)li_num = input("請(qǐng)選擇商品:")print(li[int(li_num)-1])<br></span>

執(zhí)行結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">1 . 手機(jī)2 . 電腦3 . 鼠標(biāo)墊4 . 游艇請(qǐng)選擇商品:1手機(jī)<br></span>

購(gòu)物車

功能要求:
要求用戶輸入總資產(chǎn),例如:2000
顯示商品列表,讓用戶根據(jù)序號(hào)選擇商品,加入購(gòu)物車
購(gòu)買,如果商品總額大于總資產(chǎn),提示賬戶余額不足,否則,購(gòu)買成功。
附加:可充值、某商品移除購(gòu)物車

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">goods = [    {"name": "電腦", "price": 1999},    {"name": "鼠標(biāo)", "price": 10},    {"name": "游艇", "price": 20},    {"name": "美女", "price": 998},]<br></span>
  • 邏輯圖

  • 代碼部分

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">#!/usr/bin/env python# _*_ coding:utf-8 _*_<br># 擁有的商品及價(jià)格<br>goods = [    {"name": "電腦", "price": 1999},    {"name": "鼠標(biāo)", "price": 10},    {"name": "游艇", "price": 20},    {"name": "美女", "price": 998},]<br># 控制while循環(huán)開(kāi)關(guān)switch = "on"<br># 購(gòu)物車存放的商品及單價(jià)gouwuche = {    # 商品列表    "wuping":[],    <br># 單價(jià)列表    "jiage":[]}<br># 用戶輸入會(huì)員卡內(nèi)余額while True:    try:        <br># 讓用戶輸入會(huì)員卡內(nèi)擁有的余額        money = int(input("請(qǐng)輸入你會(huì)員卡內(nèi)的余額:"))    # 異常判斷,如果類型不是整型則執(zhí)行except內(nèi)的代碼    except ValueError:        <br># 提示用戶輸入的格式錯(cuò)誤,讓其重新輸入        print("error,余額格式輸入錯(cuò)誤,請(qǐng)重新輸入!\n例如:5000")        <br># 終端當(dāng)前循環(huán)讓循環(huán)重新執(zhí)行        continue    break# 進(jìn)入購(gòu)買商品的流程while switch == "on":    <br># 打印出所有的商品    print("\n","序列","商品","單價(jià)")    <br># 以序列的方式輸出現(xiàn)擁有的商品及商品單價(jià)    for num,val in enumerate(goods,1):        for n in range(len(goods)):            if num-1 == n:                print("  ",num,goods[n]["name"],goods[n]["price"])    <br># 判斷用戶輸入的序列是否規(guī)范    while True:        try:            <br># 輸入產(chǎn)品序列,類型轉(zhuǎn)換為整型            x = int(input("請(qǐng)選擇商品序列:"))        <br># 如果用戶輸入的非整型,提示用戶重新輸入        except ValueError:            print("error,請(qǐng)選擇商品的序列")            continue        <br># 如果用戶輸入的序列不再產(chǎn)品序列當(dāng)中讓用戶重新輸入        if x > num:            print("error,請(qǐng)選擇商品的序列")            continue        break    # 輸出購(gòu)買物品的信息    print("你已經(jīng)把商品",goods[x-1]["name"],"加入購(gòu)物車","物品單價(jià)是:",goods[x-1]["price"],"\n")    <br># 把物品名稱放入gouwuche的wuping列表中    gouwuche["wuping"].append(goods[x-1]["name"])    <br># 把物品單價(jià)放入gouwuche的jiage列表中    gouwuche["jiage"].append(goods[x-1]["price"])    <br># 用戶輸入選項(xiàng)    while switch == "on":        <br># 輸出現(xiàn)有選項(xiàng)        print("查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q")        <br># 把用戶輸入的選項(xiàng)轉(zhuǎn)換為字符串        xx = str(input("請(qǐng)輸入你的選擇:"))       <br># 如果用戶輸入的是p則列出當(dāng)前購(gòu)物車內(nèi)的商品名稱        if xx == "p":           <br># 以序列的方式輸出字典gouwuche內(nèi)的wuping列表            for wp_num,val in enumerate(gouwuche["wuping"], 1):                print(wp_num, val)        <br># 如果用戶輸入的是w則結(jié)算        elif xx == "w":            <br># 定義一個(gè)默認(rèn)的變量為用戶商品的總金額            zje = 0            <br># 把gouwuche中的jiage列表內(nèi)的整數(shù)進(jìn)行相加并復(fù)制給zje            for n in range(len(gouwuche["jiage"])):                zje = zje + gouwuche["jiage"][n]            <br># 如果商品的總金額大于用戶會(huì)員卡內(nèi)的余額,則提示用戶錢不夠            if zje > money:                print("sorry, 錢不夠哦~~\n")            <br># 否則就退出程序,并且輸出用戶本次消費(fèi)的情況            else:                switch = "off"                print("購(gòu)物愉快,您本次消費(fèi)",zje,"RMB","還剩余",money-zje,"RMB")        <br># 如果用戶輸入的是d則進(jìn)入刪除購(gòu)物車內(nèi)的商品界面        elif xx == "d":            <br># 首先輸出用戶購(gòu)物車內(nèi)的商品列表            for wp_num, val in enumerate(gouwuche["wuping"], 1):                print(wp_num, val)            <br># 選擇所刪除商品的序列            while True:                try:                    deltet = int(input("請(qǐng)選擇要?jiǎng)h除的商品序列:"))                except ValueError:                    print("error,請(qǐng)輸出正確的序列!")                    continue                if deltet > wp_num:                    print("error,請(qǐng)選擇商品的序列")                    continue                <br># 提示用戶購(gòu)物車內(nèi)被刪除的商品信息                print("你已經(jīng)刪除產(chǎn)品", gouwuche["wuping"][deltet - 1], "單價(jià)為;", gouwuche["jiage"][deltet - 1])                <br># 刪除商品                gouwuche["wuping"].pop(deltet - 1)                <br># 刪除金額                gouwuche["jiage"].pop(deltet - 1)                break        <br># 如果用戶輸入的是i則進(jìn)入用戶會(huì)員卡充值頁(yè)面        elif xx == "i":            <br># 判斷用戶輸入的銀行卡號(hào)格式是否正確            while True:                try:                    user = int(input("請(qǐng)輸入你的銀行卡賬號(hào):"))                except ValueError:                    print("error,卡號(hào)格式輸入錯(cuò)誤,請(qǐng)重新輸入..")                    continue                break            # 判斷用戶輸入的銀行卡密碼格式是否正確            while True:                try:                    pwd = int(input("請(qǐng)輸入銀行卡的密碼:"))                except ValueError:                    print("error,密碼格式輸入錯(cuò)誤,請(qǐng)重新輸入..")                    continue                break            # 判斷用戶輸入的賬號(hào)和密碼是否正確,默認(rèn)的賬號(hào)和密碼都是123            if user == 123 and pwd == 123:               <br># 如果正確就讓用戶輸入要充值的金額                while True:                    try:                        newmoney = int(input("請(qǐng)輸入充值的金額:"))                    except ValueError:                        print("error,金額格式輸入錯(cuò)誤,請(qǐng)重新輸入..")                        continue                    break                <br># 余額加上充值的金額                money = money + newmoney                <br># 輸出本次充值的信息                print("你已成功充值",newmoney,"RMB,現(xiàn)在賬戶余額為:",money,"RMB\n")            <br># 如果用戶銀行卡賬號(hào)或密碼錯(cuò)誤,就提示用戶輸入錯(cuò)誤,讓后讓用戶重新選擇            else:                print("銀行卡賬號(hào)或密碼錯(cuò)誤.\n")        <br># 如果用戶輸入的是m則顯示用戶會(huì)員卡內(nèi)的余額        elif xx == "m":            print("賬戶余額:",money,"\n")        <br># 如果用戶輸入的是q則退出程序        elif xx == "q":            <br># 把變量switch的值改為off            switch = "off"        # 如果用戶輸入的是n則繼續(xù)購(gòu)買商品        elif xx == "n":            break        <br># 如果用戶沒(méi)有輸入以上的任意一個(gè)選項(xiàng)則讓用戶重新輸入        else:            print("請(qǐng)輸出正確的選項(xiàng)!")<br></span>
  • 執(zhí)行結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">請(qǐng)輸入你會(huì)員卡內(nèi)的余額:1000 <br>序列 商品 單價(jià)   <br>1 電腦 1999   2 鼠標(biāo) 10   3 游艇 20   4 美女 998<br>請(qǐng)選擇商品序列:1<br>你已經(jīng)把商品 電腦 加入購(gòu)物車 物品單價(jià)是: 1999 <br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q請(qǐng)輸入你的選擇:i<br>請(qǐng)輸入你的銀行卡賬號(hào):123<br>請(qǐng)輸入銀行卡的密碼:123<br>請(qǐng)輸入充值的金額:2000你已成功充值 2000 RMB,現(xiàn)在賬戶余額為: 3000 RMB<br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q<br>請(qǐng)輸入你的選擇:m<br>賬戶余額: 3000 <br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q<br>請(qǐng)輸入你的選擇:p<br>1 電腦<br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q請(qǐng)輸入你的選擇:d<br>1 電腦<br>請(qǐng)選擇要?jiǎng)h除的商品序列:1你已經(jīng)刪除產(chǎn)品 電腦 單價(jià)為; 1999<br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q請(qǐng)輸入你的選擇:p<br>查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q<br>請(qǐng)輸入你的選擇:n<br> 序列 商品 單價(jià)   <br> 1 電腦 1999   2 鼠標(biāo) 10   3 游艇 20   4 美女 998<br> 請(qǐng)選擇商品序列:4<br> 你已經(jīng)把商品 美女 加入購(gòu)物車 物品單價(jià)是: 998 查看購(gòu)物車:p 結(jié)算:w 刪除商品:d 繼續(xù)購(gòu)買:n 充值:i 顯示余額:m 退出:q<br> 請(qǐng)輸入你的選擇:w<br> 購(gòu)物愉快,您本次消費(fèi) 998 RMB 還剩余 2002 RMB<br></span>

三級(jí)聯(lián)動(dòng)

用戶交互,顯示省市縣的選擇

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">dic = {    "河北": {        "石家莊": ["鹿泉", "藁城", "元氏"],        "邯鄲": ["永年", "涉縣", "磁縣"],    },    "河南": {        ...    },    "山西": {        ...    }}<br></span>
  • 流程圖解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
代碼如下
#!/usr/bin/env python# _*_ coding:utf-8 _*_
# 定義一個(gè)擁有省市縣的字典dic = {    "河北": {        "石家莊": ["鹿泉", "藁城", "元氏"],        "邯鄲": ["永年", "涉縣", "磁縣"],    },    "河南": {        "鄭州市":["中原區(qū)","二七區(qū)","金水區(qū)"],        "洛陽(yáng)市":["澗西區(qū)","西工區(qū)","老城區(qū)"]    },    "山西": {        "太原市":["迎澤區(qū)","杏花嶺區(qū)","萬(wàn)柏林區(qū)"],        "大同市":["大同縣","天鎮(zhèn)縣","渾源縣"]    }}
# 控制while循環(huán)的開(kāi)關(guān)switch = "on"# 執(zhí)行腳本就顯示已經(jīng)進(jìn)入中國(guó)print("\n你已進(jìn)入中國(guó)\n")
# 開(kāi)始執(zhí)行while循環(huán)while switch == "on":    
# 省得列表    sheng = []    
# 市的列表    shi = []    
# 鎮(zhèn)的列表    zhen = []    # 讓用戶選擇進(jìn)入的生    while switch == "on":       
 # 輸出省得列表        for sheng_n, sheng_v in enumerate(dic, 1):            print(sheng_n, sheng_v)            sheng.append(sheng_v)        
 # 用戶輸出選擇進(jìn)入的省        try:            
  # 用戶輸入的必須為整數(shù)            sheng_inp = int(input("請(qǐng)選擇你要進(jìn)入的城市序列:"))        except ValueError:           
 # 如果不是整數(shù)就報(bào)錯(cuò)然后讓用戶重新輸入            print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")            continue        # 如果用戶輸入的證書是0或者大于列表的序列就讓用戶重新輸入        if sheng_inp > sheng_n or sheng_inp == 0:            print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")            continue        
 # 輸入正確之后輸出用戶當(dāng)前在哪里        print("\n你已進(jìn)入中國(guó)--->", sheng[sheng_inp - 1], "\n")       
 # 選項(xiàng)        while True:            
 # 輸出選項(xiàng)            ify = input("b 返回上一級(jí)\nn 繼續(xù)\nq 退出\n請(qǐng)輸入你的選擇:")            # 如果用戶輸入的是指定的字母就退出當(dāng)前循環(huán)            if ify == "q" or ify == "b" or ify == "n":                break            # 如果不是指定字母就讓用戶重新輸入            else:                print("輸入錯(cuò)誤,請(qǐng)重新輸入!")                continue        
 # 如果用戶輸入的是b就返回上一級(jí)        if ify == "b":            continue        
 # 如果用戶輸入的是q那么就把變量switch值改為off        elif ify == "q":            switch = "off"            continue        # 如果用戶輸入的是n就繼續(xù)讓用戶選擇市,注釋就寫到這兒把,下面的代碼就相當(dāng)于讓用戶重新選擇省,只不過(guò)省改為市了        while switch == "on":            for shi_n, shi_v in enumerate(dic[sheng[sheng_inp - 1]], 1):                print(shi_n, shi_v)                shi.append(shi_v)            try:                shi_inp = int(input("請(qǐng)選擇你要進(jìn)入的城市序列:"))            except ValueError:                print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")                continue            if shi_n < shi_inp or shi_inp == 0:                print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")                continue            print("\n你已進(jìn)入中國(guó)--->", sheng[sheng_inp - 1], "--->",shi[shi_inp - 1])            while True:                ify = input("b 返回上一級(jí)\nn 繼續(xù)\nq 退出\n請(qǐng)輸入你的選擇:")                if ify == "q" or ify == "b" or ify == "n":                    break                else:                    print("輸入錯(cuò)誤,請(qǐng)重新輸入!")                    continue            if ify == "b":                continue            elif ify == "q":                switch = "off"                continue            while switch == "on":                for zhen_n, zhen_v in enumerate(dic[sheng[sheng_inp - 1]][shi[shi_inp - 1]], 1):                    print(zhen_n, zhen_v)                    zhen.append(zhen_v)                try:                    zhen_inp = int(input("請(qǐng)選擇你要進(jìn)入的城市序列:"))                except ValueError:                    print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")                    continue                if zhen_n < zhen_inp or zhen_inp == 0:                    print("序列輸入錯(cuò)誤,請(qǐng)重新輸入")                    continue                print("\n你已進(jìn)入中國(guó)--->", sheng[sheng_inp - 1], "--->", shi[shi_inp - 1],"--->",zhen[zhen_inp - 1])                while True:                    ify = input("b 返回上一級(jí)\nn 繼續(xù)\nq 退出\n請(qǐng)輸入你的選擇:")                    if ify == "q" or ify == "b" or ify == "n":                        break                    else:                        print("輸入錯(cuò)誤,請(qǐng)重新輸入!")                        continue                if ify == "b":                    continue                elif ify == "q":                    switch = "off"                    continue

哎,代碼寫的low又沒(méi)注釋,笨人笨方法吧,誰(shuí)讓咱是新人,將就著看吧,注意這是在Python3.5.x系列執(zhí)行的哦

  • 執(zhí)行結(jié)果

1
<span style="font-family:arial, helvetica, sans-serif;font-size:18px;">你已進(jìn)入中國(guó)<br>1 山西2 河南3 河北<br>請(qǐng)選擇你要進(jìn)入的城市序列:2<br>你已進(jìn)入中國(guó)---> 河南<br> b 返回上一級(jí)<br> n繼續(xù)<br> q 退出<br> 請(qǐng)輸入你的選擇:n<br> 1 鄭州市<br> 2 洛陽(yáng)市<br> 請(qǐng)選擇你要進(jìn)入的城市序列:1<br> 你已進(jìn)入中國(guó)---> 河南 ---> 鄭州市<br> b 返回上一級(jí)<br> n 繼續(xù)<br> q 退出<br> 請(qǐng)輸入你的選擇:b<br> 1 鄭州市<br> 2 洛陽(yáng)市<br> 請(qǐng)選擇你要進(jìn)入的城市序列:2<br> 你已進(jìn)入中國(guó)---> 河南 ---> 洛陽(yáng)市<br> b 返回上一級(jí)<br> n 繼續(xù)<br> q 退出<br> 請(qǐng)輸入你的選擇:n<br> 1 澗西區(qū)<br> 2 西工區(qū)<br> 3 老城區(qū)<br> 請(qǐng)選擇你要進(jìn)入的城市序列:1<br> 你已進(jìn)入中國(guó)---> 河南 ---> 洛陽(yáng)市 ---> 澗西區(qū)<br> b 返回上一級(jí)<br> n 繼續(xù)<br> q 退出請(qǐng)輸入你的選擇:q<br></span>


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)