国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

Make a Website程序代做、代寫Python語言編程

時間:2024-02-22  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



Introduction to Software Development
Homework 4: Make a Website
(Deadline as per Canvas)
This homework deals with the following topics:
● Reading and writing files
● Scraping and parsing information from a text file
● Very basic HTML
● Unit testing
General Problem Specification
The basic skeleton of a website is an HTML page. This HTML page is a text file with a certain
format. Taking advantage of this fact, one can take an HTML template and create multiple
pages with different values stored. This is exactly what we are going to do in this homework.
Many websites use these kinds of scripts to mass generate HTML pages from databases. We
will use a sample text file as our ‘database’.
Our goal will be to take a resume in a simplistic text file and convert it into an HTML file that
can be displayed by a web browser.
What is HTML?
You do not need to know much HTML to do this assignment. You can do the assignment by
just understanding that HTML is the language that your browser interprets to display the page.
It is a tag-based language where each set of tags provides some basic information for how the
browser renders the text that the tags enclose.
For example, <h1>The Beatles</h1> will be rendered by your browser with “The Beatles”
as a heading with a large font. <h1> indicates the beginning of the heading and </h1>
indicates the ending of the heading. An HTML webpage is typically divided into a head section
and a body section. We have provided you with a basic website template. We want you to
retain the head section and write only the body section via your Python program.
For more details about HTML, your best resource will be to use the w3schools website which
can be found here: www.w3schools.com. This website has a ton of information and provides
all of the common HTML you’ll need to know for this assignment.
1
Introduction to Software Development
Input Test File
We will read a simple text file that is supposed to represent a student’s resume. The resume
has some key points but can be somewhat unstructured. In particular, the order of some of the
information will definitely be different for different people.
The following are the things that you definitely DO know about the resume:
● Every resume will have a name, which will be written at the top. The top line in the text
file will contain just the name.
● There will be a line in the file, which contains an email address. It will be a single line
with just the email address and nothing else.
● Every resume will have a list of projects. Projects are listed line-by-line below a heading
called “Projects”. An example of what you might see in a resume file is something like
this:
Projects
Worked on big data to turn it into bigger data
Applied deep learning to learn how to boil water
Styled web pages with blink tags.
Washed cars …
----------
● The list of projects ends with a single line that looks like ‘----------’. That is, it will have
at least 10 minus signs. While this is an odd formatting requirement, this will actually
make the assignment easier for you.
● Every resume will have a list of Courses. Courses are listed like:
Courses - CIT5**, AB120
OR
Courses :- Pottery, Making money by lying
● The formatting for Courses will be the word “Courses” followed by some amount of
punctuation, followed by the comma-separated list of courses.
● Your program should be able to look at the above example and then extract the
courses without including the ‘-’ sign or the ‘:-’. Note that any type of punctuation
could be between “Courses” and the list of courses.
2
Introduction to Software Development
Functions for Parsing the File
At the very least, you need to write one function for each piece of information that you want to
extract from the text file. Contrary to previous homework assignments, in this assignment we
will not provide you with a strict outline for the functions or what arguments to pass to them.
When we grade, we’ll look at how modular your code is and how you decided to break up the
functionality into separate functions. We’ll also look at how you named the functions, what
arguments they take, and how well you unit test the functions.
Here’s a basic breakdown of the functionality required to read the file into memory, parse each
section of the file to extract the relevant information, and write the final HTML-formatted
information to a new file. You should be writing to a file, not appending.
Reading the File
● Since the resume file is pretty small, write a function that reads the file and stores it in
memory as a list of lines.
● Then, you can use list and string manipulations to do all of the other necessary work.
● You should not prompt the user for a filename (or any other information). You can rely
on the provided code which includes hardcoded resume filenames to read.
Detecting the Name
● Detect and return the name by extracting the first line.
● The one extra thing we want you to do, just for practice, is if the first character in the
name string is not an uppercase letter (capital ’A’ through ’Z’), consider the name invalid
and ignore it. In this case, use ‘Invalid Name’ as the user’s name.
● For example:
Brandon Krakowsky is a valid name
brandon Krakowsky is not a valid name, so your output html file will display ‘Invalid
Name’ instead
● Another thing to note is that the name on the first line could have leading or trailing
whitespace, which you will need to remove.
● Note: Do not use the istitle() function in Python. This returns True if ALL words in a text
start with an upper case letter, AND the rest of the characters in each word are lower
case letters, otherwise False. This function will incorrectly identify a name like Edward
jones as being an invalid name, when it’s actually valid.
3
Introduction to Software Development
Detecting the Email
● Detect and return the email address by looking for a line that has the ‘@’
character.
● For an email to be valid:
○ The last four characters of the email need to be either ‘.com’ or ’.edu’.
○ The email contains a lowercase English character after the ‘@’.
○ There should be no digits or numbers in the email address.
● These rules will accommodate lbrandon@wharton.upenn.edu but will not
accommodate lbrandon@python.org or lbrandon2@wharton.upenn.edu
● For example:
lbrandon@wharton.upenn.edu is a valid email
lbrandon@wharton2.upenn.com is not a valid email
lbrandon2@wharton.upenn.com is also not a valid email
● The email string could have leading or trailing whitespace, which will need to be
stripped.
● We are fully aware that these rules are inadequate. However, we want you to
use these rules and only these rules.
● If an email string is invalid based on the given rules, consider the email address to be
missing. This means your function should return an empty string and your output
resume file will not display an email address.
● DO NOT GOOGLE FOR A FUNCTION FOR THIS. Googling for solutions to your
homework is an act of academic dishonesty and in this particular case, you will get
solutions involving crazy regular expressions, which is a topic we haven’t yet discussed
in class. (In general, your code should never involve a topic that we have not discussed
in class.). Plus, you can easily achieve the required functionality without the use of a
regular expression.
Detecting the Courses
● Detect and return the courses as a list by looking for the word “Courses” in the list
and then extract the line that contains that word.
● Then make sure you extract the correct courses. In particular, any random
punctuation after the word “Courses” and before the first actual course needs to be
ignored.
● You are allowed to assume that every course begins with a letter of the English
alphabet.
● Note that the word “Courses”, the random punctuation, or individual courses in the
list could have leading or trailing whitespace that needs removed.
4
Introduction to Software Development
Detecting the Projects
● Detect and return the projects as a list by looking for the word “Projects” in the list.
● Each subsequent line is a project, until you hit a line that contains ‘----------’. This is
NOT an underscore. It is (at least) ten minus signs put together. You have reached the
end of the projects section if and only if you see a line that has at least 10 minus
signs, one after the other.
● If you detect a blank line between project descriptions, ignore that line.
● Each project could have leading or trailing whitespace that needs removed.
Writing the HTML
Once you have gathered all the pieces of information from the text file, we want you to
programmatically write HTML. Here are the steps for that:
● Start by saving the file resume_template.html that is provided in the same directory as
your code.
● Preview the file in a text editor that does HTML syntax highlighting (e.g. Sublime
Text). Note that opening this page in your browser will give you a blank web page
since the file only contains a header and an empty body.
● You are going to programmatically copy the HTML in resume_template.html, fill in the
empty <body> with the resume content, then write the final HTML to a new file
resume.html. You should be writing to a file, not appending to a file. (Note: you should
not modify or overwrite the resume_template.html file. You should copy the
information from this file, modify it as needed, and then write the modified information
to a new file, resume.html. Think about how you can save the information from
resume_template.html in program memory to help you accomplish this.)
● More specifically, your Python code will do the following:
o Open and read resume_template.html
o Read every line of HTML into program memory
o Remove the last 2 lines of HTML (the </body> and </html> lines). (You can delete
these lines, and you will programmatically add them back later)
o Add all HTML-formatted resume content (as described below).
o Add the last 2 lines of HTML back in (the </body> and </html> lines).
o Write the final HTML to a new file resume.html
Why are we doing this? Because the HTML in resume_template.html looks something
like the below, and we need to start by removing the last two lines of HTML (closing
</body> and </html> tags) in order to insert the resume content in the correct
location.
random header stuff
<html>
<head> lots of style rules we won’t worry about
5
Introduction to Software Development
</head>
<body>
</body>
</html>
We want to put our resume content in between the body tags to make it look like this:
random header stuff
<html>
<head> lots of style rules we won’t worry about
</head> <body>
HTML-formatted resume content goes here
</body>
</html>
In order to write proper HTML you will need to write the following helper function:
def surround_block(tag, text):
● This function surrounds the given text with the given HTML tag and returns the
string
● For example, surround_block(‘h1’, ‘The Beatles’) would return
‘<h1>The Beatles</h1>’
You’re going to display the email address in your webpage as an active email link. The proper
way to create a link in HTML is to use the <a> and </a> tags. The <a> tells where the link
should start and the </a> indicates where the link should end. Everything between these two
tags will be displayed as a link and the target of the link is added to the <a> tag using the href
attribute.
For example, a link to google.com would look like this:
<a href = ”https://www.google.com/”>Click here to go to Google</a>
The <a> tag also provides the option to specify an email address as the target of the link. To
do this, you use the “mailto: email address” format for the href attribute.
For example, an email link to abc@example.com would look like this:
<a href = "mailto: abc@example.com">Send Email</a>
In order to write proper HTML for the email link, you will need to write the following helper
function:
6
Introduction to Software Development
def create_email_link(email_address):
● This function creates an email link with the given email_address
● To cut down on spammers harvesting the email address from your webpage, this
function should display the email address with an [aT] instead of an @
● For example, create_email_link(‘tom@seas.upenn.edu’) would return
<a href="mailto:tom@seas.upenn.edu">tom[aT]seas.upenn.edu</a>
● Note: If (for some reason) the given email address does not contain @, use the email
address as is and don't replace the @*
● For example, create_email_link(‘tom.at.seas.upenn.edu’) would return
‘<a href="mailto:tom.at.seas.upenn.edu">tom.at.seas.upenn.edu</a>’
*Note: the create_email_link function does not determine if the email address is valid as
described in the “Detecting the Email” section above. Detecting a valid email address should
be separate from creating the email link. Even though every resume should contain an email
address with an @ symbol, we are asking that you create the function this way to practice
what to do for unexpected inputs.
Now break the writing of the resume into the following steps:
1. In order to format the resume content, we have to make sure that all the text is
enclosed within the following tags:
<div id="page-wrap">
</div>
Since we typically write things line-by-line, this initial step will write the 1
st
line <div
id="page-wrap">. We’ll then fill in the actual resume content in multiple steps,
then step 5 below will close out the all open tags. So, this initial step just writes the
1
st
line above.
2. The basic information section contains the name and email address enclosed in the
proper tags. An example is below:
<div>
<h1>Brandon Krakowsky</h1>
<p>Email: <a
href=”mailto:lbrandon@wharton.upenn.edu”>
lbrandon[aT]wharton.upenn.edu</a></p>
</div>
7
Introduction to Software Development
Think about how you can do that. In particular, think about how the create_email_link
and surround_block functions can be used to achieve this. Write another function to
make this entire intro section of the resume and then write it out to a file. Note
that the email address should be preceded by “Email:” in your final output.
3. For the projects section. you will have to produce output like the following. Assume
that you have the data about the projects by reading through the original file and stored
that in some data structure (decide whether you want to use list, set, tuple or
dictionary)
<div>
<h2>Projects</h2>
<ul>
<li>built a robot</li>
<li>fixed an ios app</li>
</ul>
</div>
Note that you MUST have <li> tags surrounded by <ul> tags in your output. If you do
not exactly match this format, you will have issues with the project bullet points not
displaying correctly. <li> is short for list, and <ul> is short for unordered list.
4. For the courses section, we actually just want to list the courses. We do not want to
create bullet points. We also want the heading to be a bit smaller in size and enclosed
in <h3></h3> tags. So here is an example of generated HTML:
<div>
<h3>Courses</h3>
<span>Algorithms, Race car training</span>
</div>
Write a function that takes in courses (you can decide whether you want a list of
courses or a string of courses) and then write out the HTML, in the form above, to the
file.
5. After writing all of this content we just need to remember to close the HTML tags. To
do this, we need to write the following 3 lines to the file:
</div>
</body>
</html>
Note that you MUST add the </div> tag as well as the </body> and </html> tags
or your HTML will not display correctly.
6. And most importantly, you need to close the file -- otherwise it will NOT save!
8
Introduction to Software Development
Starter Code
We’re providing you with a starter file make_website.py, which contains some functions to get
you started:
def generate_html(txt_input_file, html_output_file):
● You need to implement this function in order to do the following:
○ Call other function(s) in your program (that you define) to load the given
txt_input_file
○ Call other function(s) in your program (that you define) to get the name, email
address, list of projects, and list of courses
○ Call other function(s) in your program (that you define) to write all of the info to
the given html_output_file
def main():
● This function is the starting point for your program. It is implemented for you and does
the following:
○ Calls the generate_html function to generate a resume.html file from the
provided sample resume.txt file. DO NOT REMOVE OR UPDATE THIS CODE!
○ Calls the generate_html function multiple times to generate additional
resume.html files for other test resume.txt files. AGAIN, DO NOT REMOVE OR
UPDATE THIS CODE.
You MUST uncomment each call to the generate_html function when you’re
ready to test how your program handles each additional test resume.txt file.
#generate_html('TestResumes/resume_bad_name_lowercas
e/ resume.txt',
'TestResumes/resume_bad_name_lowercase/resume.html')
#generate_html('TestResumes/resume_courses_w_whitespace/r
es ume.txt',
'TestResumes/resume_courses_w_whitespace/resume.html')
#generate_html('TestResumes/resume_courses_weird_punc/res
um e.txt',
'TestResumes/resume_courses_weird_punc/resume.html')
#generate_html('TestResumes/resume_projects_w_whitespace/
re sume.txt',
'TestResumes/resume_projects_w_whitespace/resume.html
')
#generate_html('TestResumes/resume_projects_with_blanks/r
es ume.txt',
9
Introduction to Software Development
'TestResumes/resume_projects_with_blanks/resume.html
')
#generate_html('TestResumes/resume_template_email_w_white
sp ace/resume.txt',
'TestResumes/resume_template_email_w_whitespace/resume.ht
ml ')
#generate_html('TestResumes/resume_wrong_email/resume.txt'
, 'TestResumes/resume_wrong_email/resume.html')
Unit Testing
We’re providing you with a starter unit testing file make_website_test.py. Currently, it contains
only two test functions, test_surround_block and test_create_email_link. Make sure you pass
all of the tests in the unit testing file, plus, be sure to write other test functions to test the
functions in your program. You do not need to have tests for functions that write to a file, but
you should otherwise have unit tests for every function that you create. You should be testing
both typical examples and edge cases.
Although we are providing example resumes, you may find it helpful to create your own
sample resumes to test on as well. If you do, include them in your final submission.
Resume Files
Using the sample resume.txt file that we provided, the generated resume.html file should
display like this:
We’re also providing 7 other different test resume.txt files that your program should be able to
handle. Each one is in its own subdirectory inside the “TestResumes” directory. Your program
will load the test resume.txt file in each subdirectory and generate a resume.html file. (Some
of the code for doing this is provided in the starter file make_website.py.) To help with your
10
Introduction to Software Development
testing, each subdirectory also contains an image (.PNG) of what the generated resume.html
file is supposed to look like.
What to Submit
You will submit the following files:
1. make_website.py: the program you wrote
2. make_website_test.py [and any other .txt files you created for testing]: the unit tests
you wrote for all your functions and if you created other .txt files (e.g. different versions
of your own resume) to be read by your main program or your unit tests, please include
those with your submission. Part of grading your assignment will be to run your unit
tests. We want to make sure they pass if they reference other .txt files.
3. resume.txt: the sample text resume file provided to be read by your program
4. resume.html: the html resume file that was generated when you ran your program
5. The entire “TestResumes” folder: with subdirectories containing additional text
resume.txt files and the generated resume.html file for each. You MUST generate the
resume.html in each subdirectory before you submit your entire program.
Evaluation
It is important that you understand that in this assignment there is more to it than just getting
your code to work. Please post on the class forums or come to office hours if you have
questions.
1. Functionality – 15 points
a. Does your program successfully convert a resume text file into a resume HTML
file?
b. Can that HTML file be rendered in a web browser? Test it out in at least 2
different browsers to confirm this.
11
Introduction to Software Development
c. Is your program able handle the additional test resume text files and
successfully convert them to resume HTML files? Do the resume HTML files
look like the images provided in each testing subdirectory?
2. Unit Testing – 10 points
a. Did you write a test for each function you wrote? An exception to this rule would
be a function that writes to a file aa this is difficult to test with unit testing.
b. Are you doing a good job of testing all the different cases for each function? You
should be testing both typical examples and edge cases.
3. Design and Style – 15 points
a. Since we do not give you specific functions, we will be evaluating your design.
b. Did you follow style conventions as defined in this course? Do all functions have
docstrings and do all non-trivial lines of code have comments?
c. Did you use the best data structures and variable types for each situation?
d. Did you simplify the logic of your functions? In other words, if it is possible to do
the same thing with fewer lines of code, did you do so?
請加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp 

掃一掃在手機打開當前頁
  • 上一篇:代做EEE3457編程、代寫Java/Python程序語言
  • 下一篇:代寫COMP3331 Computer Networks and Applications -
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 豆包網頁版入口 破天一劍 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    成人免费毛片播放| 久久男人av资源网站| 国产视频99| 精品国产拍在线观看| 午夜精品一区二区三区av | 国产免费毛卡片| 国产精品日韩在线播放| 青青青国产在线视频| 国产成人91久久精品| 日韩中文字幕一区| 久色视频在线播放| 欧美一区二区激情| 777午夜精品福利在线观看| 亚洲精品中文字幕无码蜜桃| 99久久国产综合精品五月天喷水| 精品福利影视| 国产美女主播一区| 一区二区三区四区国产| 成人h视频在线| 亚洲精品一区二区三区蜜桃久| av色综合网| 少妇一晚三次一区二区三区| 国产成人精彩在线视频九色| 日韩精品视频一区二区在线观看 | 久久影院理伦片| 亚洲国产欧洲综合997久久| 97国产suv精品一区二区62| 亚洲美女网站18| 久久久精品有限公司| 日本精品一区二区三区在线| 久久国产精品一区二区三区四区| 欧美在线播放cccc| 久久国产精品99国产精| 成人精品久久av网站| 欧美一区二区三区四区在线观看地址| 国产成人精品免高潮费视频| 欧美在线免费观看| 欧美精品一本久久男人的天堂| 国产综合在线视频| 亚洲欧洲精品一区| 国产v亚洲v天堂无码久久久| 欧美精品在欧美一区二区| 欧美成aaa人片在线观看蜜臀| 成人免费观看毛片| 日韩精品久久一区二区三区| 国产精品久久久久9999爆乳| 成人精品在线观看| 日本精品一区二区三区在线 | 99久久99| 青青草影院在线观看| 久久香蕉国产线看观看网| 97激碰免费视频| 欧美重口乱码一区二区| 国产精品加勒比| 91九色对白| 欧美精品一区二区三区四区五区 | 国产免费黄色av| 色乱码一区二区三在线看| 国产成人无码av在线播放dvd | 欧美日韩亚洲一区二区三区四区| 欧美激情xxxx| 久艹视频在线免费观看| 国产资源在线免费观看| 欧美一区二区三区四区在线观看地址| 久久精品这里热有精品| www日韩视频| 黄色一级片黄色| 午夜精品视频在线观看一区二区| 久久精品久久久久久| av天堂永久资源网| 欧美日韩精品久久久免费观看| 色综合导航网站| 国产成人精品免费久久久久| 国产免费观看高清视频| 久久久久久久久久久久久国产 | 色狠狠久久av五月综合|| 久久视频中文字幕| 草莓视频一区| 黄网站色视频免费观看| 亚洲欧美一区二区原创| 国产精品日日做人人爱| 68精品久久久久久欧美| 欧美连裤袜在线视频| 亚洲一卡二卡| 国产精品久久久久久久久借妻| 国产精品96久久久久久又黄又硬| 国产综合精品一区二区三区| 日本精品二区| 亚洲视频在线二区| 欧美久久精品一级黑人c片| 国产成人久久精品| 国产成人精品久久久| 97精品一区二区视频在线观看| 国产最新免费视频| 日韩精品视频久久| 午夜精品久久久内射近拍高清| 久久国产精品偷| 久久精品视频亚洲| 国产盗摄xxxx视频xxx69| 国产精品中文字幕久久久| 欧美日韩一区二区三区电影| 日本国产欧美一区二区三区| 亚洲精品日韩激情在线电影| 欧美激情乱人伦| 久久福利网址导航| 国产精品久久久久久久久久久久久久 | 亚洲成熟丰满熟妇高潮xxxxx| 欧美日韩成人网| 国产精品国产对白熟妇| 国产精品久久久久久久久电影网| 日韩视频在线免费观看| 久久99精品久久久久久青青日本 | 中文字幕中文字幕在线中一区高清 | 亚洲高清不卡一区| 亚洲最大成人在线| 亚洲中文字幕无码专区| 综合色婷婷一区二区亚洲欧美国产| 欧美乱大交xxxxx| 久久成人亚洲精品| 欧美成人一区在线| 欧美激情图片区| 宅男噜噜99国产精品观看免费| 精品福利影视| 一区二区三区四区视频在线| 欧美激情亚洲另类| 亚洲影院在线看| 午夜精品在线视频| 亚洲精品一区二区三区蜜桃久| 一区二区免费在线观看| 亚洲伊人久久大香线蕉av| 亚洲精品女av网站| 日本在线视频www色| 奇米一区二区三区四区久久| 欧美久久久久久久| 精品视频一区在线| 国产精选一区二区| 97久久精品视频| 国产盗摄视频在线观看| 久久久久久久久久婷婷| 久久韩国免费视频| 欧美成人免费va影院高清| 久久国产精品影片| 最新中文字幕久久| 亚洲二区自拍| 日韩免费视频播放| 国内成人精品视频| 国产噜噜噜噜久久久久久久久 | 国产精品国产福利国产秒拍| 欧美激情视频网址| 动漫一区二区在线| 欧美精品一区二区三区在线看午夜| 欧美a在线视频| 国产欧美日韩免费看aⅴ视频| 99久re热视频这里只有精品6| 久久天天狠狠| 国产精品久久久久av福利动漫| 宅男噜噜99国产精品观看免费| 无码少妇一区二区三区芒果| 欧美一区在线直播| 国产乱人伦精品一区二区| 久久影视中文粉嫩av| 久久久成人精品| 中文字幕一区二区三区四区五区人| 日本精品视频在线观看| 美国av一区二区三区| 91九色视频在线| 久久久久久亚洲| 米奇精品一区二区三区在线观看| 无码人妻丰满熟妇区96| 欧美成人一区二区在线观看| 成人伊人精品色xxxx视频| 国产黄色一级网站| 国产精品久久久久久久午夜| 午夜免费福利小电影| 美日韩免费视频| 久久精品综合一区| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久郑州公司 | 久久久水蜜桃| 精品久久久久久中文字幕动漫| 无码人妻精品一区二区蜜桃百度| 欧美精品自拍视频| 91精品国产乱码久久久久久久久| 国产精品视频免费观看www| 亚洲xxxx在线| 国产午夜大地久久| 久久久精品亚洲| 午夜欧美一区二区三区免费观看| 蜜桃传媒一区二区| 久久精品视频91| 欧美日韩国产第一页| 欧美重口乱码一区二区| 91精品国产成人| 欧美成人精品在线| 欧美激情国产精品日韩| 久久人人97超碰精品888| 最新欧美日韩亚洲| 国产一区视频免费观看| 色婷婷久久一区二区| 婷婷五月综合缴情在线视频| 国产欧美日本在线|