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流程判斷的更多相关文章

  1. Python 基礎 - for流程判斷

    今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...

  2. Python 基礎 - while流程判斷

    接續上次的代碼,是不是只有執行一次才就結束,想要再繼續猜,就要在執行一次,是不是有點挺麻煩的? 所以這次我們就來再多做一點點功能進去,讓代碼可以多次循環地執行代碼,Go.... 首先,我們先來了解一下 ...

  3. Python 基礎 - pyc 是什麼

    Python2.7 版中,只要執行 .py 的檔案後,即會馬上產生一個 .pyc 的檔案,而在 Python3 版中,執行 .py 的檔案後,即會產生一個叫 __pycache__ 的目錄,裡面也會有 ...

  4. Python 基礎 - 文件操作_v2

    嗯,那如何要把游標的位置給打印來? #!/usr/bin/env python3 # -*- coding:utf-8 -*- f = open('test', 'r') print(f.tell() ...

  5. Python 基礎 - 字典的操作使用

    接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...

  6. Python 基礎 - 字符串常用操作

    字符串常用操作 今天就介紹一下常用的字符串操作,都是以 Python3撰寫的 首字母變大寫 #!/usr/bin/env python3 # -*- coding:utf-8 -*- name = & ...

  7. Python 基礎 - 集合的使用

    集合是一個無序的,不重複的數據組合,主要的作用如下 去重,把一個列表變成集合,就會自動去重了. 關係測試,測試二組數據之前的交集.差集.聯集等關係. 接下來我們來實作看看什麼是去重 #!/usr/bi ...

  8. python基礎學習第二天

    字符编码 # 需知:## 1.在python2默认编码是ASCII, python3里默认是unicode## 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf ...

  9. Python 基礎 - 字符轉編碼操作

    回顧字符編碼的前世今生 ASCII 只能儲英文或特殊字符,只占一個字節,一個字節8bit,不能儲中文,所以才出現Unicode Unicode 不管是中文或英文,都是占二個字節,一個字節8bit UT ...

随机推荐

  1. R----stringr包介绍学习

    1. stringr介绍 stringr包被定义为一致的.简单易用的字符串工具集.所有的函数和参数定义都具有一致性,比如,用相同的方法进行NA处理和0长度的向量处理. 字符串处理虽然不是R语言中最主要 ...

  2. 让下拉框中同时显示Key与Value

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. linux mysql5.5安装与配置(转帖,在网上收集,自用)

    MySQL是一个关系型数据库管理系统 ,由瑞典MySQL AB公司开发,目前属于Oracle 公司.MySQL分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码 这一特点,一般中 ...

  4. Python之No module named setuptools 安装pip

    早上运行程序的时候发现没有引入相应的module,然后使用pip去安装的时候发现自己没有在安装pip,于是在自己的软件群里边找见了pip安装包,在pip的解压目录下运行python setup.py ...

  5. Integer

    import static java.lang.System.*; public class IntegerTestOne{ public static void main(String []args ...

  6. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    原文:http://blog.csdn.net/mingxunzh/article/details/4627185 在JSP中的如果使用 "相对路径"  则有可能会出现问题. 因为 ...

  7. mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...

  8. Security » Authorization » 基于角色的授权

    Role based Authorization¶ 基于角色的授权 133 of 153 people found this helpful When an identity is created i ...

  9. 如何有效使用Project(1)——编制进度计划、保存基准

    1.前言: 软件产品的研发.升级.定制等,一般都是以项目的形式进行,此时项目进度计划以及资源使用情况就变成了项目经理关注的重点.如何让项目计划有效可控,及时暴露问题?如何查看资源的负荷情况,看资源分配 ...

  10. iOS开发UI篇—APP主流UI框架结构

    iOS开发UI篇—APP主流UI框架结构 一.简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果:                                二.搭建过程和 ...