Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了
這次先從最簡單的判斷式開始,if else 開始… Go
首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎?沒關係!!!
請回去看Python 基礎 - 用戶交互程序 的第一個代碼,這次會針對這個代碼做一個小小的優化,是什麼呢?
各位有沒有覺得在輸入密碼時,是用 明碼 表示的,看起來是不是覺得很怪怪的,那要怎麼樣讓它變成不是明碼呢?
在 Python 裡有 標準庫,這個是不用透過安裝就有的,現在要先認識第一個模塊,叫 getpass,可以透過 import 就可以直接調用,而在Shell Script中要調用另一個腳本就用 source,現在就來動手作個小實驗吧…
(這裡請使用Terminal去執行,因為 getpass 在 Pycharm 中,是無法使用的)
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import getpass
username = input("username:")
password = getpass.getpass("password:")
print(username, password)
---------------執行結果---------------
username:ironman
password:
ironman tonystark
現在確認看到已經不是明碼輸出了,很好,接著我們在來多加個功能,要如何判斷使用者輸入的是否正確?
import getpass
_username = 'ironman'
_password = 'tonystark'
username = input("username:")
password = getpass.getpass("password:")
if _username == username and _password == password:
print("Weclome {name} Login ".format(name=username))
else:
print("invalid username or password")
print(username, password)
---------------執行結果---------------
username:ironman
password:
Weclome ironman Login
ironman tonystark
以上就是簡單的『用戶認証』,接下來大家有發現有什麼地方不一樣嗎?
hmm…各位有覺得為什麼 Python 的判斷式看起來有點怪怪的?
是因為 Python 中沒有所謂的結束符號來表示,而是使用 縮排,不像 C, C++, Java 等語言用 { } 大括號定義程式區塊,而這樣做的好處是可以讓 Python 整個結構看起來較為清晰
來小小實驗一下,如果沒有按照 Pythone 的規範來做縮排,看看會發生什麼事…?
import getpass
_username = 'ironman'
_password = 'tonystark'
username = input("username:")
password = getpass.getpass("password:")
if _username == username and _password == password:
print("Weclome {name} Login ".format(name=username))
else:
print("invalid username or password")
print(username, password)
---------------執行結果---------------
File "passwd.py", line 18
print(username, password)
^
IndentationError: unindent does not match any outer indentation level
IndentationError 很明顯的出現縮排錯誤,所以還是要注意縮排唷
簡單的會做了,那我們就來稍稍提升一下難度,來試做一個猜年紀的小遊戲
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
age_of_ironman = 35
guess_age = input("guess age:")
if guess_age == age_of_ironman:
print("Bingo, You got it!!!")
elif guess_age > age_of_ironman:
print("You may think smaller...")
else:
print("You may think bigger...")
---------------執行結果---------------
guess age:2
Traceback (most recent call last):
File "/paht/to/python/project/guess.py", line 11, in <module>
elif guess_age > age_of_ironman:
TypeError: unorderable types: str() > int()
噢哦,出錯了,知道為什麼嗎?
不知道的可以參考Python 基礎 - 用戶交互程序 的第四、五個代碼,再複習一下
TypeError: unorderable types: str() > int() 是因為 input() 默認都是當字符串,即使你輸入的是數字,也是會被轉成字符串
所以就再修改一下代碼
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
age_of_ironman = 35
guess_age = int(input("guess age:"))
if guess_age == age_of_ironman:
print("Bingo, You got it!!!")
elif guess_age > age_of_ironman:
print("You may think smaller...")
else:
print("You may think bigger...")
---------------執行結果---------------
guess age:21
You may think bigger...
OK,目前這代碼看起來大致已經完成了
知識點:
- Python 中,為什麼要縮排?是因為 Python 程式語言,並沒有使用
{ } 來表示區塊 block的觀念,主要都是透過縮排來表示
不管你是使用 if、elif、else、for、while 等會使用到區塊概念的關鍵字,當在:之後的下一行的就必須縮排 - 縮排時,標準的 tab stop 是 8,但個人的習慣大都會把 tab stop 換成 4個空白字符 (業界好像也是這樣用吧?)
參考來源:
Python 基礎 - if else流程判斷的更多相关文章
- Python 基礎 - for流程判斷
今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...
- Python 基礎 - while流程判斷
接續上次的代碼,是不是只有執行一次才就結束,想要再繼續猜,就要在執行一次,是不是有點挺麻煩的? 所以這次我們就來再多做一點點功能進去,讓代碼可以多次循環地執行代碼,Go.... 首先,我們先來了解一下 ...
- Python 基礎 - pyc 是什麼
Python2.7 版中,只要執行 .py 的檔案後,即會馬上產生一個 .pyc 的檔案,而在 Python3 版中,執行 .py 的檔案後,即會產生一個叫 __pycache__ 的目錄,裡面也會有 ...
- Python 基礎 - 文件操作_v2
嗯,那如何要把游標的位置給打印來? #!/usr/bin/env python3 # -*- coding:utf-8 -*- f = open('test', 'r') print(f.tell() ...
- Python 基礎 - 字典的操作使用
接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...
- Python 基礎 - 字符串常用操作
字符串常用操作 今天就介紹一下常用的字符串操作,都是以 Python3撰寫的 首字母變大寫 #!/usr/bin/env python3 # -*- coding:utf-8 -*- name = & ...
- Python 基礎 - 集合的使用
集合是一個無序的,不重複的數據組合,主要的作用如下 去重,把一個列表變成集合,就會自動去重了. 關係測試,測試二組數據之前的交集.差集.聯集等關係. 接下來我們來實作看看什麼是去重 #!/usr/bi ...
- python基礎學習第二天
字符编码 # 需知:## 1.在python2默认编码是ASCII, python3里默认是unicode## 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf ...
- Python 基礎 - 字符轉編碼操作
回顧字符編碼的前世今生 ASCII 只能儲英文或特殊字符,只占一個字節,一個字節8bit,不能儲中文,所以才出現Unicode Unicode 不管是中文或英文,都是占二個字節,一個字節8bit UT ...
随机推荐
- Log4Net 配置SQL2008数据库 并传入自定义业务对象
最近根据业务需要,俺们老大要求我们了解一个c#的组件——Log4Net 这玩意儿从来没弄过,感觉挺深奥的,结果经过2天的研究,还算小有所成吧,基本思路已经清晰明了了,不过过程中遇到一些很奇葩的问题,和 ...
- 20个Linux服务器安全强化建议(三)
#11.配置iptables和TCPWrappers. iptables 是一个Linux内核提供的,运行在用户空间的程序,它允许用户配置自己的防火墙策略.我们可以使用防火墙将不必要的流量过滤出去 ...
- 里面的div怎么撑开外面的div让高度自适应
参考网址:http://www.jb51.net/css/140685.html 随着微软新操作系统的上市,ie6现在用的人越来越少了,但是XP系统看来是太过经典,仍然有相当多的用户在使用,且这部分人 ...
- Beginning Windows Azure Development Guide
目 录 一 初始化Windows Azure 二 云应用程序的编写. 2.1云应用程序的创建. 2.2一个简单的云应用程序. 2.3 托管云程序. 三 云程序的数据库操作. 3.1通过Cloud平台 ...
- [Oracle] SQL*Loader 详细使用教程(1)- 总览
SQL*Loader原理 SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高. ...
- 《K&R》中引用的几个排序算法(shellsort、)以及一个自己乱写的排序
留待期末考后更新... void shellsort(int v[], int n) { int gap, i, j, temp; ; gap > ; gap /= ) for(i = gap; ...
- Apache—DBUtils框架
1.所需要jar包 commons-collections-2.1.1.jarmchange-commons-java-0.2.11.jarmysql-connector-java-5.1.18-bi ...
- js中对radio和checkbox是否选中的判断
一.js判断checkbox 例如:<div class="checkbox" style="width: 150px;"> <label&g ...
- USACO2007Monthly Expense月度开销
Description Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的.他已经计算了他以后N(1<=N<=100 ...
- AlwaysOn与数据库镜像端点问题
今天在搭建一个测试环境的时候发现一个问题,我将AlwaysOn环境中某节点上的某个非可用性组里的数据库想实时备份到另外一台服务器上,因此我找了一个没有加域的工作组的服务器,与AlwaysOn主节点去搭 ...