Các bạn, tôi đang làm một vấn đề để nhập một ngày sinh theo định dạng dd/mm/yyyy
Các hướng dẫn để tuân theo là
Nhắc người dùng nhập ngày sinh dưới đây.
Trích xuất 3 trường bằng cách cắt chuỗi thành 3 lát. Để tách ngày khỏi tháng, trước tiên bạn sẽ cần sử dụng phương thức Find [] để tìm vị trí của chém đầu tiên. Để tách tháng trong năm, bạn sẽ cần sử dụng phương pháp
rfind[]
để tìm vị trí của chém cuối cùng.
Tôi đã cố gắng thực hiện các lát chuỗi và nối cùng với việc lập chỉ mục, nhưng tôi khá run rẩy về cách thực hiện, hoặc nếu tôi thậm chí còn làm điều đó. Cũng không được phép sử dụng các tuyên bố có điều kiện.
birthday = input["Enter your date of birth: ",]
day = birthday.find["/"]
month = birthday.find["/"]
year = birthday.rfind["/"]
print["Day: ",day]
print["Month: ", month]
print["Year: ", year]
Định dạng dự kiến là:
Nhập ngày sinh của bạn: 30/8/1985
Ngày: 30
Tháng: 8
Năm: 1985
slideshowp2
72.1K70 Huy hiệu vàng224 Huy hiệu bạc406 Huy hiệu đồng70 gold badges224 silver badges406 bronze badges
Hỏi ngày 27 tháng 4 năm 2019 lúc 10:13Apr 27, 2019 at 10:13
2
Sử dụng rfind[]
là một cách vòng tròn để làm điều đó. Nó sẽ hoạt động, nhưng bạn sẽ tốt hơn với
day, month, year = birthday.split["/"]
Nếu người hướng dẫn của bạn nhấn mạnh vào cách tiếp cận ________ 11/________ 12 thì bạn có thể làm theo cách này:
day = birthday[:birthday.find["/"]]
month = birthday[birthday.find["/"]+1:birthday.rfind["/"]]
year = birthday[birthday.rfind["/"]+1:]
Có thể là ý định của bài tập là dạy bạn về việc cắt dây thay vì làm thế nào để viết Python có thể đọc được.
Đã trả lời ngày 27 tháng 4 năm 2019 lúc 10:16Apr 27, 2019 at 10:16
Nếu bạn có thêm xử lý ngày, mô -đun
day, month, year = birthday.split["/"]
3 rất hữu ích:from datetime import datetime
birthday = input["Enter your date of birth: "]
bday = datetime.strptime[birthday, '%d/%m/%Y']
print[f'Day: {bday.day}']
print[f'Month: {bday.month}']
print[f'Year: {bday.year}']
Một lợi thế quan trọng là điều này giúp ngăn người dùng nhập sai ngày, ví dụ 32 là ngày hoặc 13 là giá trị tháng.advantage is that this helps prevent user from entering wrong date, for example 32 as day or 13 as month value.
Đã trả lời ngày 27 tháng 4 năm 2019 lúc 10:25Apr 27, 2019 at 10:25
AustinaustinAustin
25.4K4 Huy hiệu vàng22 Huy hiệu bạc47 Huy hiệu đồng4 gold badges22 silver badges47 bronze badges
Đọc từ các tài liệu về
day, month, year = birthday.split["/"]
1 và day, month, year = birthday.split["/"]
2. Họ trả lại các chỉ số thấp nhất và cao nhất của các lần xuất hiện được tìm thấy. Vì vậy, bạn nên làm thay thế:b = "30/8/1985"
first_sep, last_sep = b.find["/"], b.rfind["/"]
day = b[:first_sep]
month = b[first_sep+1:last_sep]
year = b[last_sep+1:]
print["Day: ", day]
print["Month: ", month]
print["Year: ", year]
Output:
Day: 30
Month: 8
Year: 1985
Đã trả lời ngày 27 tháng 4 năm 2019 lúc 10:26Apr 27, 2019 at 10:26
birthday = input["Enter your date of birth: ",]
birthday_list = birthday.split["/"]
print["Day: ",birthday_list[0]]
print["Month: ", birthday_list[1]]
print["Year: ", birthday_list[2]]
Đã trả lời ngày 27 tháng 4 năm 2019 lúc 10:18Apr 27, 2019 at 10:18
ChrischrisChris
3525 Huy hiệu bạc16 Huy hiệu Đồng5 silver badges16 bronze badges
0
Bạn có thể sử dụng Regex.
birthday = input["Enter your date of birth: ",]
match = re.search[r'\d{4}-\d{2}-\d{2}', birthday]
date = datetime.strptime[match.group[], '%Y-%m-%d'].date[]
Sau đó, bạn có thể nhận được ngày, tháng, năm từ đó. Vui lòng tham khảo //docs.python.org/3/l Library/datetime.html#date- objects
Đã trả lời ngày 27 tháng 4 năm 2019 lúc 10:22Apr 27, 2019 at 10:22
Điều này hoạt động một cách chi tiêu:
import datetime
birthday = input['Enter your birthday in dd/mm/yyyy format']
day, month, year = list[map[int, birthday.split["/"]]]
birthdate = datetime.date[year, month, day]
print[f"Birthday is on {birthdate.strftime['%d/%m/%Y']}"]
Đã trả lời ngày 17 tháng 5 năm 2019 lúc 7:18May 17, 2019 at 7:18
MalyajmalyajMalyaj
Phù hiệu 231 Huy hiệu Bạc61 silver badge6 bronze badges