Python 基礎 - 用戶交互程序
現在就來寫一個簡單的 用戶輸入
的程式,這是一個互動模式,需要使用者自已輸入
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
username = input("username:")
password = input("password:")
print(username, password)
---------------執行結果---------------
username:ironman
password:tonystark
ironman tonystark
這個就是一個很簡單的互動輸入的小程式,透過 input()
就可以做出來的小功能
接下來再深入一點點,寫個顯示用戶的個人資訊
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
name = input("username:")
age = input("age:")
job = input("job:")
salary = input("salary:")
# 開始做字符串格式化
info = '''
---------- info of ''' + name + ''' ----------
Name: ''' + name + '''
Age: ''' + age + '''
Job: ''' + job + '''
Salary: ''' + salary + '''
'''
print(info)
---------------執行結果---------------
username:TonyStark
age:38
job:ironman
salary:99999999999
---------- info of TonyStark ----------
Name: TonyStark
Age: 38
Job: ironman
Salary: 99999999999
上面的代碼就是一種字符串格式化的一種寫法,雖然寫起來有點醜,但還是可以使用的,可是有沒有漂亮一點點的寫法?
答案是有的,接下來就來依據之前的代碼來做修正
name = input("username:")
age = input("age:")
job = input("job:")
salary = input("salary:")
# 開始做字符串格式化
info1 = '''
---------- info1 of %s' ----------
Name: %s
Age: %s
Job: %s
Salary: %s
''' %(name, name, age, job, salary)
print(info1)
---------------執行結果---------------
username:Bruce
age:35
job:Hulk
salary:0
---------- info1 of Bruce' ----------
Name: Bruce
Age: 35
Job: Hulk
Salary: 0
上面程式碼裡的 Name, AGE, JOB Salary 都是字符串跟 name, name, age, job, salary是沒有關係的
name, name, age, job, salary 所對應到的則都是 %s,這就是字符串格式化。
接下來再深入一點點,再修改上面的程式
name = input("username:")
age = input("age:")
job = input("job:")
salary = input("salary:")
# 開始做字符串格式化
info2 = '''
---------- info2 of %s ----------
Name: %s
Age: %d (這次修改成 %d, 來觀察一下有什麼差別?)
Job: %s
Salary: %s
''' %(name, name, age, job, salary)
print(info2)
---------------執行結果---------------
username:Bruce
age:35
job:Hulk
salary:0
Traceback (most recent call last):
File "error/path/python/project/test.py", line 24, in <module>
''' %(name, name, age, job, salary)
TypeError: %d format: a number is required, not str
這次輸入後,發現錯誤了 TypeError: %d format: a number is required, not str
,
這句話告訴我們輸入的一定要是數字,而不是字符串,(咦~奇怪,怎麼輸入的不是數字嗎?怎麼會是字串…?
好吧,我們來打印一下數據類型,確認到底是不是數字,在 age
下面新增一行代碼,
print(type(age)) # 顯示變量的數據類型
name = input("username:")
age = input("age:")
print(type(age)) # 顯示變量的數據類型
job = input("job:")
salary = input("salary:")
# 開始做字符串格式化
info2 = '''
---------- info2 of %s ----------
Name: %s
Age: %d
Job: %s
Salary: %s
''' %(name, name, age, job, salary)
print(info2)
---------------執行結果---------------
username:Bruce
age:35
<class 'str'> → (真的是字符串,不是數字)
job:Hulk
salary:0
Traceback (most recent call last):
File "error/path/python/project/test.py", line 24, in <module>
''' %(name, name, age, job, salary)
TypeError: %d format: a number is required, not str
好啦,確認上面的數字的確是 str
也就是 字符串
了,那我們要怎麼修正咧?
我們只好強制把 age
轉換成數字,那要如何修正?
請在 age
等號的右邊改寫成 int(input("age:"))
name = input("username:")
age = int(input("age:")) # 在input前,加入int()強制轉換
print(type(age)) # 顯示變量的數據類型
job = input("job:")
salary = int(input("salary:"))
# 開始做字符串格式化
info3 = '''
---------- info3 of %s ----------
Name: %s
Age: %d
Job: %s
Salary: %i
''' %(name, name, age, job, salary)
print(info3)
---------------執行結果---------------
username:Bruce
age:35
<class 'int'>
job:Hulk
salary:0
---------- info3 of Bruce ----------
Name: Bruce
Age: 35
Job: Hulk
Salary: 0
知識點:
%
是指執行字符串格式化%s
是指字符串在執行格式化之前透過 str() 來轉換,簡單說就是『字符串』%d
是指數字,也是整數,這個跟%i
都是一樣的功能%f
是指浮點數,有小數點的數字。
在 Python2.7 版中,raw_input
等於 Python3 版中的 input
,
然而在 Python2.7版中,也有一個叫 input
, 你輸入什麼格式,它就接受什麼格式,
嗯,好像有點難懂,沒關係,來做個小實驗吧
下面這張圖有直接打印出 print(name, type(name))
直接驗証,上圖解釋是否正確
好,接下來再繼續介紹常見的字符串格式化
name = input("username:")
age = int(input("age:"))
job = input("job:")
salary = int(input("salary:"))
# 開始做字符串格式化
info4 = '''
---------- info4 of {_name} ----------
Name: {_name}
Age: {_age}
Job: {_job}
Salary: {_salary}
'''.format(_name=name,
_age=age,
_job=job,
_salary=salary)
print(info4)
---------------執行結果---------------
username:Potts
age:28
job:ceo
salary:99999
---------- info4 of Potts ----------
Name: Potts
Age: 28
Job: ceo
Salary: 99999
官方建議可以用這一個寫法 ↑↑
name = input("username:")
age = int(input("age:"))
job = input("job:")
salary = int(input("salary:"))
# 開始做字符串格式化
info5 = '''
---------- info4 of {0} ----------
Name: {0}
Age: {1}
Job: {2}
Salary: {3}
'''.format(name,age,job,salary)
print(info5)
---------------執行結果---------------
username:Potts
age:28
job:CEO
salary:99999
---------- info4 of Potts ----------
Name: Potts
Age: 28
Job: CEO
Salary: 99999
知識點:
- 千萬不要使用
---------- info of ''' + name + ''' ----------
做字符串格式化,會大量占據內存的空間,導致效能很差 - 官方建議可以使用
---------- info4 of {_name} ----------
做字符串格式化
參考資料:
python_strings
Python 基礎 - 用戶交互程序的更多相关文章
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- Python 基礎 - for流程判斷
今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...
- Python 基礎 - 字符編碼
Python 解釋器在加載 .py 文件中的代碼時,會對內容進行編碼 (默認 ascill) ASCII (American Standard Code for Information Interch ...
- 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 基礎 - 淺copy補充說明
在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...
- Python 基礎 - 數據類型
標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...
- Python 基礎 - 認識模塊
什麼是模塊?簡單說就是別人寫好了一堆功能,封裝在一起. 模塊有分二種,一個是之前有提到的 標準庫,就是不需要透過額外的安裝就有的模塊 ,另一個叫 第三方庫,需要另外安裝才能使用的模塊 #!/usr/b ...
随机推荐
- [问题2014A07] 复旦高等代数 I(14级)每周一题(第九教学周)
[问题2014A07] 设 \(A\) 是有理数域 \(\mathbb{Q}\) 上的 4 阶方阵, \(\alpha_1,\alpha_2,\alpha_3,\alpha_4\) 是 \(\mat ...
- Python3基础 not in列表名 判断一个元素是否不在列表中列表中
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 【leetcode❤python】 414. Third Maximum Number
#-*- coding: UTF-8 -*- #l1 = ['1','3','2','3','2','1','1']#l2 = sorted(sorted(set(l1),key=l1.index,r ...
- JMeter进行简单的数据库(mysql)压力测试
1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于: \java\jre\lib\ext 文件为:mysql-connect ...
- JAVA 列表排序
以前都通过Comparator进行排序,今天看到个例子,通过apache-common工具包进行排序,实现例子参考下面界面 http://blog.csdn.net/lizeyang/article/ ...
- 笔记本_thinkpad_e440
ZC: 这是我现在手上 公司工作的笔记本 1.进入 BIOS --> Enter键 2.背面信息 笔记本序列号(用于查找 驱动等) (ZC: 这个是 ThinkPad E440 的信息) 序号为 ...
- redis 库相关命令
切换数据库: select 1 查看数据库大小:dbsize 清空数据库: flushdb
- MUMmer 3使用方法
DNA和核苷酸的快速比对软件包,基于suffix tree 数据结构,快速.图形化.模块可用于其他软件.可进行大基因组比对.多对多基因组比对. The MUMmer Home Page The MUM ...
- Java过滤器,SpringMVC拦截器之间的一顺序点关系
由于最近做的项目中有一部分是接口远程调用,用到了接入权限和业务权限的鉴定,需要采用SpringMVC的拦截器,以前用Struts2的时候用过拦截器,而SpringMVC的拦截器功能之前没研究过,所以这 ...
- Ajax全解
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 我们先来看一些简单的方法,这些方法都是对jQuery.ajax( ...