第一題:
題目描述:計算字元串最後一個單詞的長度,單詞以空格隔開。
輸入描述: 一行字元串,非空,長度小于5000。
輸出描述: 整數N,最後一個單詞的長度。
示例1:
輸入:hello world
輸出:5
方法一:完全使用字元串
str_input = input('輸入一個字元串:').strip() #對輸入的字元串進行左右去空格處理
len_str = 0
for char in str_input[::-1]:
if char == ' ':
break
else:
len_str +=1
print('最後一個單詞的長度:%d'%(len_str))
方法二:使用list
str_input = input('輸入一個字元串:').strip() #對輸入的字元串進行左右去空格處理
list_str = str_input.split() #使用空格将字元串分割成一個清單形式.
print(len(list_str[-1]))
第二題:
2. 計算字元個數
題目描述: 寫出一個程式,接受一個有字母和數字以及空格組成的字元串,和一個字元,然後輸出輸入
字元串中含有該字元的個數。不區分大小寫。
輸入描述: 輸入一個有字母和數字以及空格組成的字元串,和一個字元。
輸出描述:輸出輸入字元串中含有該字元的個數。
示例1:
輸入:ABCDEF A
輸出:1
str_tmp = input("輸入字元串")
list_tmp = str_tmp.split()
str1 = str()
char = str()
count = 0
for str1 in list_tmp[:-1]: #周遊清單除了,最後一個元素以外
for char in str1: #在每一個元素中尋找的字元中尋找與目标字元相符合的字元
if char == list_tmp[-1]:
count +=1
print(count)
第三題:
題目描述:
密碼是我們生活中非常重要的東東,我們的那麼一點不能說的秘密就全靠它了。哇哈哈. 接下來淵子要在密碼之上再加一套密碼,雖然簡單但也安全。
假設淵子原來一個BBS上的密碼為zvbo9441987,為了友善記憶,他通過一種算法把這個密碼變換成YUANzhi1987,這個密碼是他的名字和出生年份,怎麼忘都忘不了,而且可以明目張膽地放在顯眼的地方而不被别人知道真正的密碼。他是這麼變換的,大家都知道手機上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就這麼簡單,淵子把密碼中出現的小寫字母都變成對應的數字,數字和
其他的符号都不做變換。
聲明:密碼中沒有空格,而密碼中出現的大寫字母則變成小寫之後往後移一位,如:X,先變成小寫,再往後移一位,不就是y了嘛,簡單吧。記住,z往後移是a哦.
輸入描述:輸入包括多個測試資料。輸入是一個明文,密碼長度不超過100個字元,輸入直到檔案結尾;
輸出描述:輸出淵子真正的密文
示例1:
輸入:YUANzhi1987
輸出:zvbo9441987
Original_Password = []
dict_num = {'a':2,'b':2,'c':2,'d':3,'e':3,'f':3,'g':4,'h':4,'i':4,'j':5,'k':5,'l':5,'m':6,'n':6,'o':6,'p':7,'q':7,'r':7,'s':7,'t':8,'u':8,'v':8,'w':9,'x':9,'y':9,'z':9}
print(len(dict_num))
str_passwd = input('輸入加密後的密碼:')
if str_passwd.find(' ') == -1 and len(str_passwd) < 100:
for char in str_passwd[:]:
if char.isupper() and char != 'Z':
Original_Password.append(chr(ord(char.lower())+1))
elif char.islower():
Original_Password.append(str(dict_num[char]))
elif char == 'Z':
Original_Password.append('a')
else :
Original_Password.append(char)
Original_Password_str = ''.join(Original_Password)
print(Original_Password_str)
else:
print('密碼帶有非法字元空格!')
第四題:
給定一個正整數,編寫程式計算有多少對質數的和等于輸入的這個正整數,并輸出結果。輸
入值小于1000。
如,輸入為10, 程式應該輸出結果為2。(共有兩對質數的和為10,分别為(5,5),(3,7))
- 輸入描述:
輸入包括一個整數n,(3 ≤ n < 1000)
- 輸出描述:
輸出對數
- 示例1 :
輸入:
10
輸出:
2
count = 0
in_num = int(input('輸入一個3~1000整數:'))
if 3 <= in_num < 1000:
list_num = []
for i in range(1,in_num): #尋找在1~in_num之間的質數
for num in range(2,i): #判斷數字i是不是質數,如果是質數,則将以該數為索引值的元素變為1,如果不是則将以該數為索引值的元素置0
if i%num == 0:
list_num.append(0)
break
else:
list_num.append(1)
half_len = len(list_num)//2
for i in range(half_len+1):
if list_num[i] == 1:
for j in range(half_len,len(list_num)-i):
if list_num[j] == 1:
if i + j+2 == in_num:
count +=1
print(count)
else:
print('輸入一個3~1000整數')
第五題:
現在IPV4下用一個32位無符号整數來表示,一般用點分方式來顯示,點将IP位址分成4個部分,每個部分為8位,表示成一個無符号整數(是以不需要用正号出現),如10.137.17.1,是我們非常熟悉的IP位址,一個IP位址串中沒有空格出現(因為要表示成一個32數字)。現在需要你用程式來判斷IP是否合法。
輸入描述:輸入一個ip位址
輸出描述:傳回判斷的結果YES or NO
ip_str = input('請輸入IP位址')
if ip_str.find(' ') == -1:
ip_list = ip_str.split('.')
if len(ip_list) == 4:
for char in ip_list:
if not char.isdecimal() or int(char) > 255 or int(char) < 0:
print("NO")
break
else:
print("YES")
else:
print("NO")
else:
print("NO")
第六題:
學生管理系統, 分為管理者登陸和學生登陸;
管理者登陸, 可以操作:
管理者密碼修改;
添加學生的資訊;
删除學生的資訊;
修改學生的資訊;
查詢學生的資訊(根據學号);
檢視所有學生的資訊;
退出系統;
學生登入:
查詢個人資訊;
修改密碼;
學生資訊包括:
學号, 姓名, 性别, 班級, 出生年月, 使用者名, 密碼
學生使用者名和學号保持一緻;
管理者資訊包括: 使用者名, 密碼
administrator = {
'root':
{
'username':'root',
'passwd':'123456'
},
'teacher':
{
'username':'teacher',
'passwd':'123456'
}
}
user ={
'061501':
{
'username':'061501',
'passwd':'061501',
'studentId':'061501',
'name':'liya',
'gender':'1',
'student_class':'1602',
'birthday':'2000-01-15'
}
}
infor = """****學生管理系統****
1)管理者登入
2)學生登入
3)退出
"""
admin_menu = """ 管理者操作界面
1)密碼修改
2)添加學生
3)删除學生
4)修改學生資訊
5)查詢學生的資訊(根據學号)
6)檢視所有學生的資訊
7)傳回上一層
8)退出系統"""
change_student_infor_menu = """
1)修改姓名
2)修改性别
3)修改班級
4)修改出生日期
5)修改密碼
6)退出修改
"""
student_menu_str = """
1)查詢個人資訊;
2)修改密碼;
3)傳回上一層
4)退出系統
"""
user_login_str = {'administrator':None , 'user':None} #儲存目前登陸的使用者
def admin_change_passwd():
print('目前位置:管理者密碼修改,退出請按q')
old_passwd = input('輸入舊的密碼:')
if old_passwd == 'q':
return
new_passwd = input('輸入新的密碼:')
if new_passwd == 'q':
return
new_passwd_confirm = input('再次确認新密碼')
if new_passwd_confirm == 'q':
return
if old_passwd == administrator[user_login_str['administrator']]['passwd']:
if new_passwd == new_passwd_confirm:
administrator[user_login_str['administrator']]['passwd']= new_passwd
print('密碼修改成功:')
else:
print('兩次密碼不一緻')
else:
print('原始密碼不正确:')
def add_student():
print('目前位置:注冊使用者')
studentId = input('請輸入學号').strip()
if studentId and studentId not in user:
passwd = input("密碼")
name = input('姓名:')
gender = input("性别(男-1 , 女-2)")
if not gender:
gender = None
else:
gender = int(gender)
student_class = input("班級:")
birthday = input('出生年月(年-月-日):')
user[studentId] = {
'username': studentId,
'passwd': studentId,
'studentId': studentId,
'name': name,
'gender': gender,
'student_class': student_class,
'birthday': birthday
}
print("注冊成功")
else:
print("使用者已經被注冊")
def del_student():
print('目前位置:删除學生資訊')
del_id = input('請輸入要删除的學生的學号:')
if del_id in user:
del user[del_id]
else:
print('該學生不存在!')
#函數功能 :修改學生除賬号,學号以外的所有資訊
def change_student_infor():
studentId = input('請輸入學号').strip()
print(change_student_infor_menu)
if studentId in user:
change_Oper = input('輸入操作序号:')
while change_Oper != '6':
if change_Oper == '1':
newname = input('輸入姓名:')
user[studentId]['name'] = newname
print('姓名修改成功')
elif change_Oper == '2':
newgender = input('性别(男-1 , 女-2)')
user[studentId]['gender'] = newgender
print('性别修改成功')
elif change_Oper == '3':
newstudent_class = input('班級:')
user[studentId]['student_class'] = newstudent_class
print('班級修改成功')
elif change_Oper == '4':
newbirthday = input('出生日期:')
user[studentId]['birthday'] = newbirthday
print('出生日期修改成功')
elif change_Oper == '5':
newpasswd = input('輸入新的密碼:')
newpasswd_confirm = input('再次确認新密碼')
if newpasswd == newpasswd_confirm:
user[studentId]['passwd'] = newpasswd
print('密碼修改成功!')
else:
print('兩次密碼不一緻')
else :
print('%s錯誤的操作指令!!!' % (change_Oper))
change_Oper = input('輸入操作序号:')
print(change_student_infor_menu)
else:
print('該學生不存在!')
# 檢視學生的所有資訊
def view_student_infor_one():
studentId = input('請輸入學号').strip()
if studentId in user:
print(user[studentId])
else:
print('該學生不存在!')
# 檢視所有學生的所有資訊
def view_student_infor_all():
if user :
print(user)
else:
print('沒有錄入學生資訊!')
# 管理者登入驗證
def administrator_login():
count =0
while count < 3 :
admin_username = input('賬号:')
if admin_username in administrator:
admin_passwd = input('密碼:')
if admin_passwd == administrator[admin_username]['passwd']:
print('登陸成功')
user_login_str['administrator'] = admin_username #儲存目前登陸的使用者
return True
else:
print("密碼不正确!!!")
return False
else:
print('不存在的管理者!!!')
return False
else :
print("嘗試次數過多,退出!")
return False
def administrator_operation():
admin_Oper = input('輸入操作序号:')
if admin_Oper == '1':
admin_change_passwd()
return True
elif admin_Oper == '2':
add_student()
return True
elif admin_Oper == '3':
del_student()
return True
elif admin_Oper == '4':
change_student_infor()
return True
elif admin_Oper == '5':
view_student_infor_one()
return True
elif admin_Oper == '6':
view_student_infor_all()
return True
elif admin_Oper == '7':
user_login_str['administrator'] = None #退出時将目前登入使用者消除
return False
elif admin_Oper == '8':
exit(0)
else :
print('%s錯誤的操作指令!!!' % (admin_Oper))
return True
# 學生登入
def student_login():
count =0
while count < 3 :
student_username = input('賬号:')
if student_username in user:
student_passwd = input('密碼:')
if student_passwd == user[student_username]['passwd']:
print('登陸成功')
user_login_str['user'] = student_username #儲存目前登陸的使用者
return True
else:
print("密碼不正确!!!")
return False
else:
print('不存在的學生學号!!!')
return False
else :
print("嘗試次數過多,退出!")
return False
def student_operation():
student_Oper = input('輸入操作序号:')
if student_Oper == '1':
view_student_self()
return True
elif student_Oper == '2':
student_change_passwd()
return True
elif student_Oper == '3':
user_login_str['user'] = None #退出時将目前登入使用者消除
return False
elif student_Oper == '4':
exit(0)
else:
print('%s錯誤的操作指令!!!' % (student_Oper))
return True
# 學生檢視自己的資訊
def view_student_self():
print(user[user_login_str['user']])
# 學生修改自己密碼
def student_change_passwd():
print('目前位置:學生修改自己密碼,退出請按q')
old_passwd = input('輸入舊的密碼:')
if old_passwd == 'q':
return
new_passwd = input('輸入新的密碼:')
if new_passwd == 'q':
return
new_passwd_confirm = input('再次确認新密碼')
if new_passwd_confirm == 'q':
return
if old_passwd == user[user_login_str['user']]['passwd']:
if new_passwd == new_passwd_confirm:
administrator[user_login_str['user']]['passwd']= new_passwd
print('密碼修改成功:')
else:
print('兩次密碼不一緻')
else:
print('原始密碼不正确:')
def main():
while True:
print(infor)
Oper_str = input('輸入操作序号:')
if Oper_str == '1':
if administrator_login():
mark_login = True
while mark_login :
print(admin_menu)
mark_login=administrator_operation()
elif Oper_str == '2':
if student_login():
stu_mark_login = True
while stu_mark_login :
print(student_menu_str)
stu_mark_login=student_operation()
elif Oper_str == '3':
exit(0)
else:
print('%s錯誤的操作指令!!!'%(Oper_str))
main()