溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python編寫判斷成績的程序

發(fā)布時間:2020-08-05 17:48:36 來源:網(wǎng)絡(luò) 閱讀:920 作者:兩條小魚 欄目:編程語言
案例1:程序輸入輸出
案例2:判斷合法用戶
安全3:編寫判斷成績的程序

1 案例1:程序輸入輸出
1.1 問題

編寫login.py腳本,實現(xiàn)以下目標(biāo):

提示用戶輸入用戶名
將用戶名保存在變量中
在屏幕上顯示歡迎用戶的信息

1.2 方案

編寫程序時,很多情況下都需要程序與用戶交互。在python中,主要通過raw_input()獲取用戶輸入信息,使用print打印信息。

通常當(dāng)想看變量內(nèi)容時,會在代碼中使用print語句輸出。不過在交互式解釋器中,可以用print語句顯示變量的字符串表示,或者僅使用變量名查看該變量的原始值。

從用戶那里得到數(shù)據(jù)輸入的最容易的方法是使用raw_input()內(nèi)建函數(shù)。它讀取標(biāo)準(zhǔn)輸入,并將讀取到的數(shù)據(jù)賦值給指定的變量。需要注意的是,raw_input()函數(shù)讀入的數(shù)據(jù)全部是以字符串的方式存儲的。如果用戶輸?shù)氖菙?shù)字,那么python也將其保存為字符串,當(dāng)將字符串與數(shù)字做數(shù)學(xué)運算是將會出現(xiàn)TypeError的錯誤。

初學(xué)者在需要顯示信息或得到用戶輸入時,很容易想到使用print語句和raw_input()內(nèi)建函數(shù)。不過在此建議函數(shù)應(yīng)該保持其清晰性,也就是它只應(yīng)該接受參數(shù),返回結(jié)果。從用戶那里得到需要的數(shù)據(jù), 然后調(diào)用函數(shù)處理, 從函數(shù)得到返回值,然后顯示結(jié)果給用戶。這樣你就能夠在其它地方也可以使用你的函數(shù)而不必?fù)?dān)心自定義輸出的問題。這個規(guī)則的一個例外是,如果函數(shù)的基本功能就是為了得到用戶輸出,或者就是為了輸出信息,這時在函數(shù)體使用print語句或raw_input()也未嘗不可。更重要的,將函數(shù)分為兩大類,一類只做事,不需要返回值(比如與用戶交互或設(shè)置變量的值), 另一類則執(zhí)行一些運算,最后返回結(jié)果。如果輸出就是函數(shù)的目的,那么在函數(shù)體內(nèi)使用 print 語句也是可以接受的選擇。
1.3 步驟

實現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:編寫腳本

本次練習(xí)的腳本文件是/root/bin/login.py。

[root@py01 bin]# vim login.py
#!/usr/bin/env python
username = raw_input('username: ')       #使用變量username接收用戶輸入的字符
print 'Welcome', username                 #輸出歡迎信息,字符串和變量名之間用逗號
                                            #隔開,兩者之間自動會加上空格

步驟二:測試腳本執(zhí)行

[root@py01 bin]# chmod +x login.py       #給腳本添加執(zhí)行權(quán)限
[root@py01 bin]# login.py 
username: bob                              #輸入用戶名
Welcome bob

2 案例2:判斷合法用戶
2.1 問題

編寫login.py2腳本,實現(xiàn)以下目標(biāo):

提示用戶輸入用戶名和密碼
將用戶名和密碼分別保存在變量中
如果用戶名為bob并且密碼為123456,則輸出Login successful,否則輸出Login inorrect

2.2 方案

本題主要是復(fù)合的判斷語句,寫法有如下兩種:

使用兩個判斷語句,先判斷用戶名,如果用戶名正確再判斷密碼是否正確
在一個判斷語句中,同時判斷兩個條件是否全部成立

2.3 步驟

實現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:編寫腳本

在很多語言中,if后面的判斷條件需要使用圓括號或方括號,但是python并不強(qiáng)制,可以直接將判斷條件寫在if后面,并不會產(chǎn)生錯誤。

有些時候,判斷條件可能有多個(使用and或or連接),為了更好的可讀性,建議在這種環(huán)境下,將多個條件分別用圓括號括起來。

[root@py01 bin]# vim login2.py
#!/usr/bin/env python
username = raw_input('username: ')
password = raw_input('password: ')
if username == 'bob':
    if password == '123456':
        print 'Login successful'
    else:
        print 'Login incorrect'
else:
    print 'Login incorrect'

或?qū)⑸厦娴拇a改為以下寫法:

[root@py01 bin]# vim login2.py
#!/usr/bin/env python
username = raw_input('username: ')
password = raw_input('password: ')
if username == 'bob' and password == '123456':
    print 'Login successful'
else:
    print 'Login incorrect'

步驟二:測試腳本執(zhí)行

[root@py01 bin]# ./login2.py
username: bob
password: 123456
Login successful
[root@py01 bin]# ./login2.py
username: bob
password: abcd
Login incorrect
[root@py01 bin]# ./login2.py
username: tom
password: 123456
Login incorrect

步驟三:改進(jìn)腳本

腳本程序在運行時,應(yīng)該將敏感的密碼隱藏,不要顯示在屏幕上。為了實現(xiàn)這個功能,可以使用getpass模塊中的getpass方法。

getpass可以像Linux處理密碼一樣,屏幕上不出現(xiàn)任何字符,但是用戶的輸入可以保存到相應(yīng)的變量中。

上面的代碼可以改寫為:

[root@py01 bin]# vim login2.py
#!/usr/bin/env python
import getpass
username = raw_input('username: ')
password = getpass.getpass('password: ')
if username == 'bob' and password == '123456':
    print 'Login successful'
else:
    print 'Login incorrect'

測試腳本執(zhí)行:

[root@py01 bin]# ./login2.py
username: bob
password: 123456               #此處所填寫的密碼將不在屏幕上顯示
Login successful

3 安全3:編寫判斷成績的程序
3.1 問題

編寫score.py腳本,根據(jù)用戶輸入的成績分檔,要求如下:

如果成績大分60分,輸出“及格”
如果成績大于70分,輸出“良”
如果成績大于80分,輸出“好”
如果成績大于90分,輸出“優(yōu)秀”
否則輸出“你要努力了”

3.2 方案

本題需要注意的是邏輯順序。在多分支的if語句中,自頂向下逐步匹配,一旦匹配則執(zhí)行相應(yīng)的子語句,其他語句將不再執(zhí)行。

因此,在編寫代碼時要注意邏輯,成績是100分也大于60分,如果把判斷較小分?jǐn)?shù)的語句寫在前面,那么是凡大于60分的成績都是輸出“及格”,那么只有第一個判斷語句會執(zhí)行,所以應(yīng)該把分值更高的判斷寫在上面。
3.3 步驟

實現(xiàn)此案例需要按照如下步驟進(jìn)行。

步驟一:編寫腳本

[root@py01 bin]# vim score.py
#!/usr/bin/env python
#coding: utf8                               #為了程序可以支持中文,指定UTF8編碼
score = int(raw_input('enter score: '))
if score > 90:
    print '優(yōu)秀'
elif score > 80:
    print '好'
elif score > 70:
    print '良'
elif score > 60:
    print '及格'
else:
    print '你要努力了!'

步驟二:測試腳本執(zhí)行

[root@py01 bin]# ./score.py
enter score: 59
你要努力了!
[root@py01 bin]# ./score.py
enter score: 88
好
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI