第七,八次作业

1. 找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def find_numbers():
    result = []
    for i in range(1, 10000):
        if (i % 5 == 0 or i % 6 == 0) and not (i % 5 == 0 and i % 6 == 0):
            result.append(i)
    return result

numbers = find_numbers()
print(numbers)

2. 写一个方法,计算列表所有偶数下标元素的和(注意返回值)

def sum_even_index_elements(lst):
    total = 0
    for i in range(len(lst)):
        if i % 2 == 0: 
            total += lst[i]
    return total

3. 根据完整的路径从路径中分离文件路径、文件名及扩展名

import os

def split_path(full_path):
    path, filename = os.path.split(full_path)
    filename, extension = os.path.splitext(filename)
    return path, filename, extension


full_path = '/path/to/file/filename.txt'
path, filename, extension = split_path(full_path)
print('路径:', path)
print('文件名:', filename)
print('扩展名:', extension)

4. 根据标点符号对字符串进行分行

import re

def split_by_punctuation(text):
    split_text = re.split(r'(?<=[.,!?])\s+', text)
    for line in split_text:
        print(line)

text = "你好.  我是wjx, 你好吗?"
split_by_punctuation(text)

5. 去掉字符串数组中每个字符串的空格

def remove_spaces_in_strings(str_array):
    
    str_array_no_spaces = [s.strip() for s in str_array]
    return str_array_no_spaces

str_array = input("请输入字符串数组,以空格分隔:").split()


str_array_no_spaces = remove_spaces_in_strings(str_array)

for s in str_array_no_spaces:
    print(s)

6. 

  game_name_student1 = input("学员1,请输入你最喜欢的游戏名称:")  
game_name_student2 = input("学员2,请输入你最喜欢的游戏名称:")  
  
if game_name_student1 == game_name_student2:  
    print("你们俩喜欢相同的游戏")  
else:  
    print("你们俩喜欢不相同的游戏")

7

game_name_student1 = input("学员1,请输入你最喜欢的游戏名称:").strip().lower()  
game_name_student2 = input("学员2,请输入你最喜欢的游戏名称:").strip().lower()  
  
 if game_name_student1 == game_name_student2:  
    print("你们俩喜欢相同的游戏")  
else:  
    print("你们俩喜欢不相同的游戏")

8. 让用户输入一个日期格式如“2008/08/08”,将 输入的日 期格式转换为“2008年-8月-8日”。

from datetime import datetime  
   
input_date = input("请输入一个日期格式如'2008/08/08':")  
  
try:   
    date_obj = datetime.strptime(input_date, '%Y/%m/%d')
      
    formatted_date = date_obj.strftime('%Y年-%m月-%d日')  
  
    print(formatted_date)  
except ValueError:
    
    print("输入的日期格式不正确,请按照'年/月/日'的格式输入。")

9. 接收用户输入的字符串,将其中的字符进行排序(升序),并以逆序的顺序输出,“cabed”→"abcde"→“edcba

input_string = input("请输入一个字符串:")  

char_list = list(input_string)  

sorted_list = sorted(char_list)  

sorted_string = ''.join(sorted_list)  

reversed_string = sorted_string[::-1]  

print("排序后的字符串(升序):", sorted_string)  
print("逆序输出的字符串:", reversed_string)

10. 接收用户输入的一句英文,将其中的单词以反序输出,“hello c java python”→“python java c hello”。

  input_sentence = input("请输入一句英文:")  
  
  word_list = input_sentence.split()  
  
  word_list.reverse()  
    
reversed_sentence = ' '.join(word_list)  
  
print("反序输出的句子:", reversed_sentence)

11. 从请求地址中提取出用户名和域名 http://www.163.com?userName=admin&pwd=123456

from urllib.parse import urlparse, parse_qs  
  
url = 'http://www.163.com?userName=admin&pwd=123456'  
  
parsed_url = urlparse(url)  
  
domain = parsed_url.netloc  
print("域名:", domain)  
  
  
query_params = parse_qs(parsed_url.query)  
  
user_name = query_params.get('userName', [None])[0] 
if user_name is not None:  
    print("用户名:", user_name)  
else:  
    print("用户名未找到")
12. 有个字符串数组,存储了10个书名,书名有长有短,现在将他们统一处理,若书名长度大于10,则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字
book_names = ["Python Programming", "Data Structures and Algorithms", "Machine Learning", "Deep Learning", "Java Basics", "C++ Primer", "Web Development", "Database Management", "Operating Systems", "Computer Networks"]
author_name = "John Doe"

for book_name in book_names:
    if len(book_name) > 10:
         processed_name = book_name[:8] + "..."
         print(processed_name + " | " + author_name)
    else:
        print(book_name) 
13. 让用户输入一句话,找出所有"呵"的位置。
sentence = input("请输入一句话: ")
positions = [pos for pos, char in enumerate(sentence) if char == ""]
print("所有'呵'的位置: ", positions)
14. 让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;
def replace_evil(sentence):
    if "邪恶" in sentence:
        new_sentence = sentence.replace("邪恶", "**")
        return new_sentence
    else:
        return sentence

user_input = input("请输入一句话: ")
result = replace_evil(user_input)
print(result)
15. 判断一个字符是否是回文字符串"1234567654321" "上海自来水来自海上"
def is_palindrome(s):
    return s == s[::-1]

string1 = "1234567654321"
string2 = "上海自来水来自海上"

if is_palindrome(string1):
    print(f"{string1} 是回文字符串")
else:
    print(f"{string1} 不是回文字符串")

if is_palindrome(string2):
    print(f"{string2} 是回文字符串")
else:
    print(f"{string2} 不是回文字符串")

 加密

import hashlib

def register():
    username = input("请输入用户名:")
    password = input("请输入密码:")
    hashed_password = hashlib.sha256(password.encode()).hexdigest()
    with open("users.txt", "a") as f:
        f.write(f"{username} {hashed_password}\n")
    print("注册成功!")

def login():
    username = input("请输入用户名:")
    password = input("请输入密码:")
    hashed_password = hashlib.sha256(password.encode()).hexdigest()
    with open("users.txt", "r") as f:
        for line in f:
            stored_username, stored_password = line.strip().split()
            if stored_username == username and stored_password == hashed_password:
                print("登录成功!")
                return
        print("用户名或密码错误!")

while True:
    operation = input("请选择操作(1. 注册 2. 登录 3. 退出):")
    if operation == "1":
        register()
    elif operation == "2":
        login()
    elif operation == "3":
        break
    else:
        print("输入错误,请重新输入!")

  

 

posted @ 2024-04-08 12:00  青鸢..i  阅读(46)  评论(0)    收藏  举报