#2.寫函數,檢查獲取傳入列表或元組對象的所有奇數位索引對應的元素,
# 并將其作為新列表返回。
# def get_odd_list(info):
#     ul=info[1::2]
#     return ul
# print(get_odd_list([2,3,4,5,6]))

#3.寫函數,判斷用戶傳入的一個對象(字符串或列表或元組任意)
# 長度是否大于5,并返回真假。

# def get_len(obj):
#     if len(obj)>5:
#         return True
#     else:
#         return False
# print(get_len("sjsjsjsj"))

#4.寫函數,接收兩個數字參數,返回比較大的那個數字。
# def get_big(a1,a2):
#     val=a1 if a1>a2 else a2
#     return val
# print(get_big(22,11))


#5.寫函數,函數接收四個參數分別是:姓名,性別,年齡,學歷。
# 用戶通過輸入這四個內容,然后將這四個內容傳入到函數中,此函數接收到這四個內容,
# 將內容根據"*"拼接起來并追加到一個student_msg文件中。

def get_info(name,sex,age,degree):
    temp=[name,sex,age,degree]

    info="*".join(temp)
    with open("student_msg.txt",mode="a",encoding="utf-8") as stu_msg:
        stu_msg.write(info+"\n")

while True:
    name=input("請輸入名字:")
    if name.upper()=="N":
        break
    sex=input("請輸入性別:")
    age=input("請輸入年齡:")
    degree=input("請輸入學位:")
    get_info(name,sex,age,degree)



#6.寫函數,在函數內部生成如下規則的列表 [1,1,2,3,5,8,13,21,34,55…](斐波那契數列),
# 并返回。 注意:函數可接收一個參數用于指定列表中元素最大不可以超過的范圍。

# def get_list(max):
#     sum=[1,1]
#     for i in range(2,888):
#         temp=sum[i-2] + sum[i-1]
#         if temp>max:
#             break
#         sum.append(temp)
#     return sum
#
# print(get_list(99))
#[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]


#優化

def get_list(max):
    sum=[1,1]
    f1 = 1
    f2 = 1
    while True:
        f3=f1+f2#
        if f3>max:
            break
        f1=f2#替換暫存值   f2和f1一直往前移動變換值
        f2=f3#替換暫存值  計算的值永遠放在f3中
        sum.append(f3)
    return sum
print(get_list(99))
#[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

#再優化
def fun(max):
	info_list=[1,1]

	#計算列表中的第三個數,利用-index
	while True:
  	v3=info_list[-1]+info_list[-2]
    if v3>max:
      break
  	info_list.append(v3)
  return info_list
print(func(1000))
    




#7.寫函數,驗證用戶名在文件 data.txt 中是否存在,如果存在則返回True,否則返回False。
# (函數有一個參數,用于接收用戶輸入的用戶名)

# data.txt文件格式如下:
#
# 1|alex|123123
# 2|eric|rwerwe
# 3|wupeiqi|pppp

# def get_judge(val):
#     with open("data.txt",mode="r",encoding="utf-8") as f:
#         data=f.read().split("\n")
#         ul=[]
#         for ele in data:
#             ele=ele.split("|")
#             ul.append(ele[1])
#         if val in ul:
#             return True
#         else:
#             return False
#
#
#
# val = input("請輸入用戶名:")
# print(get_judge(val))



#方法二 flag
#flag=False
#def get_judge(val):
#     with open("data.txt",mode="r",encoding="utf-8") as f:
#         data=f.read().split("\n")
#         ul=[]
#         for ele in data:
#             ele=ele.split("|")      
#         		if ele[1]==val:
#									flag=True
#         return flag
#	
#
#
# val = input("請輸入用戶名:")
# print(get_judge(val))
#
#


#方法三:利用函數的默認返回值None
#flag=False
#def get_judge(val):
#     with open("data.txt",mode="r",encoding="utf-8") as f:
#         data=f.read().split("\n")
#         ul=[]
#         for ele in data:
#             ele=ele.split("|")      
#         		if ele[1]==val:
#								return True
#	
#val =get_judge(val)
#if val:
#  print("存在")
#else:
#  print("不存在")
#
# val = input("請輸入用戶名:")
# print(get_judge(val))
#
#