1. 程式人生 > >實戰演練(三)

實戰演練(三)

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('請輸入正確的操作程式碼')