實戰演練(三)
1.羅馬數字與整數之間的轉換
羅馬數字包含以下七種字元:I,V,X,L,C,D和M
字元 數值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如,羅馬數字2寫做 II,即為兩個並排放置的的1、12寫做XII,即為 X + II,27寫做XXVII,即為XX+V+II
在羅馬數字中,小的數字在大的數字的右邊。但 4 不寫作 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等於大數減小數得到的數值 4 。同樣地,數字 9 表示為 IX。這個規則只適用於以下六種情況:
I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900
給定一個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 範圍內。
示例:
示例 1:
輸入: “III”
輸出:3
示例 2:
輸入:“IV”
輸出:4
示例 3:
輸入:“IX”
輸出:9
示例 4:
輸入:“LVIII”
輸出:58
解釋:C = 100,L = 50,XXX = 30 and III = 3。
示例 5:
輸入:“MCMXCIV”
輸出:1994
解釋:M = 1000,CM = 900,XC = 90 and IV = 4。
def exchange(innum): I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000 # print(len(innum)) if innum == 'IV': print('res = 4') elif innum == 'IX': print('res = 9') elif innum == 'XL': print('res = 40') elif innum == 'XC': print('res = 90') elif innum == 'CD': print('res = 400') elif innum == 'CM': print('res = 900') else: res = 0 for i in innum: if i == 'I': res += 1 elif i == 'V': res += 5 elif i == 'X': res += 10 elif i == 'L': res += 50 elif i == 'C': res += 100 elif i == 'D': res += 500 else: res += 1000 print('res = %d' %(res)) innum = input('請輸入一個大於1小於3999的羅馬數字:') exchange(innum)
2.編寫一個函式來查詢字串陣列中的最長公共字首
如果不存在最長公共字首,返回空字串
示例 1:
輸入:[“flower”,”flow”,”flight”]
輸出:“fl”
示例 2:
輸入:[“dog”,”racecar”,”car”]
輸出:“”
解釋:輸入不存在最長公共字首
說明:所有輸入只包含小寫字母 a-z
def forward_count(forward): li = forward.split(' ') # print(li) a,b,k = li # print(a,b,k,type(a)) count = 0 for i in a: for j in b: for m in k: if m == j and m == i: count += 1 if count == 0: print('""') else: print(count) forward = input('請輸入三個單詞以空格間隔開來:') forward_count(forward)
3.學生管理系統,分為管理員登陸和學生登陸(未完)
管理員登陸,可以操作:
# 管理員密碼修改;
# 新增學生的資訊;
# 刪除學生的資訊;
# 修改學生的資訊;
# 查詢學生的資訊(根據學號);
# 檢視所有學生的資訊;
# 退出系統;
學生登入:
# 查詢個人資訊;
# 修改資訊;
# 修改年齡;
# 修改密碼;
學生資訊包括:
# 學號,姓名,性別,班級,出生年月,使用者名稱,密碼
# 學生使用者名稱和學號保持一致;
管理員資訊包括:
# 使用者名稱,密碼
# 管理員登陸
name = 'admin'
passwd = 'admin'
i = 0
while i < 3:
inname = input('請管理員輸入使用者名稱:')
inpasswd = input('請管理員輸入密碼:')
if inname == name and inpasswd == passwd:
print('管理員登陸成功')
break
else:
print('管理員登陸失敗')
i += 1
else:
print('登陸次數超過三次,請等待100s再試')
# 學生資訊
StuInfo = {'學號':'03146024','姓名':'安安','性別':'女','班級':'14班','出生年月':'9612','使用者名稱':'03146024','密碼':'123456'}
# 學生登陸
j = 0
while j < 3:
Stuname = input('請輸入使用者名稱(學號):')
Stupasswd = input('請輸入密碼:')
if Stuname == '03146024' and Stupasswd == '123456':
print('學生登陸成功')
break
else:
print('學生登陸失敗')
j += 1
else:
print('登陸次數超過三次,請等待100s再試')
# 學生查詢個人資訊
while True:
print('''
學生可進行的操作和操作程式碼:
1,檢視個人資訊
2,修改個人資訊——年齡
3,修改個人資訊——密碼)
''')
Stuchoice = input('學生輸入自己想要進行的操作程式碼:')
if Stuchoice == '1':
print('檢視個人資訊')
print(StuInfo)
elif Stuchoice == '2':
print('修改個人資訊——年齡')
nowage = input('請輸入正確的年齡:')
elif Stuchoice == '3':
nowpasswd1 = input('請輸入改正後的密碼:')
nowpasswd2 = input('請再次輸入改正後的密碼:')
if nowpasswd1 == nowpasswd2:
print('修改密碼成功')
elif Stuchoice == 'exit':
print('學生退出登陸')
break
else:
print('請輸入正確的操作程式碼')