中文的「如果……就……」本身不带任何时态标记:「如果明天下雨,我们就不去」「如果我有钱,我就买」「如果我当时知道,我就告诉你了」,三句话的结构几乎一模一样,时间全靠「明天」「当时」这些词来表达。英语却要用动词形式区分三种情况:可能发生的条件、与现在相反的假设、与过去相反的假设。所以中国学习者常写出 *If it will rain tomorrow(把「明天」的将来时搬进 if 从句)和 *If I would have known(把主句的 would 也放进 if 从句)。
速记规则:一般事实(零条件句)→ If + 一般现在时,主句一般现在时;可能发生的将来(第一条件句)→ If + 一般现在时,主句 will do(主将从现);与现在相反(第二条件句)→ If + 过去式,主句 would/could do;与过去相反(第三条件句)→ If + had done,主句 would/could have done。下面 30 题分三级:基础(零条件句、第一条件句、unless 与 in case)、进阶(第二、第三条件句)、挑战(混合条件句、省略 if 的倒装、as long as / provided),每级 10 题。wish、as if、would rather 等虚拟语气请看虚拟语气练习。
if 条件句测验 30 题
基础 · 真实条件句与主将从现
If it ___ tomorrow, we will stay at home and watch a film.
全部题目、答案与解析完成练习后展开核对。
1. If it ___ tomorrow, we will stay at home and watch a film.
- will rain
- rains
- rained
正确答案: rains · 可能发生的将来条件,if 从句用一般现在时,主句用 will:If it rains tomorrow, we will…,这就是「主将从现」。中文「如果明天下雨」里有「明天」,很多人就在 if 后面写 will rain,这是最典型的错误。
2. If you ___ hard this term, you will pass the final exam.
- study
- will study
- studied
正确答案: study · 主句是 will pass,说明这是第一条件句,if 从句用一般现在时 study。will study 违反主将从现;studied 是第二条件句的形式,要和 would 搭配。
3. If she misses the bus this morning, she ___ late for school.
- would be
- was
- will be
正确答案: will be · 从句 misses 是一般现在时,说的是今天早上真有可能发生的事,主句用 will be。would be 用于假设的情况,和 misses 不匹配;was 是过去时,时间对不上。
4. (General fact) If you heat water to 100°C at sea level, it ___.
- boils
- would boil
- boiled
正确答案: boils · 表示科学事实、普遍规律时用零条件句:if 从句和主句都用一般现在时,it boils。would boil 会把客观规律变成假设;boiled 是过去时。中文「水加热到 100 度就会沸腾」的「会」不代表要用 would。
5. (General fact) Most plants die if they ___ enough light.
- won't get
- don't get
- didn't get
正确答案: don't get · 普遍规律用零条件句,if 从句用一般现在时:if they don't get enough light。won't get 是把将来时放进了 if 从句;didn't get 是过去时,与 die 的一般现在时不匹配。
6. I'll send you a message as soon as I ___ home.
- will get
- got
- get
正确答案: get · 主将从现不只用于 if,也用于 as soon as、when、before、after、until 引导的时间状语从句:as soon as I get home。中文「我一到家就给你发消息」里没有时态,英语从句却必须用一般现在时。
7. Unless you hurry up, you ___ the last train.
- will miss
- would miss
- missed
正确答案: will miss · unless 基本等于 if … not,同样遵循主将从现:Unless you hurry(如果你不快点),you will miss the train。从句 hurry 是一般现在时,主句用 will。
8. You can't get into the concert ___ you have a ticket.
- in case
- unless
- if
正确答案: unless · unless = 除非、如果不:没有票就进不去。if 放在这里意思变成「有票就进不去」,逻辑不通;in case 表示「以防万一」,也不对。注意 unless 本身已带否定,后面不要再加 don't。
9. The forecast says it might rain later. Take an umbrella ___ it does.
- unless
- in case
- so that
正确答案: in case · in case 表示「以防万一」:现在就带伞,防止之后下雨。它和 if 不同——if 表示「下雨的话才带」。unless 意思正好相反;so that 表示目的,「为了让它下雨」显然不对。
10. If the shop ___ closed when we get there, we'll try the one next door.
- is
- will be
- would be
正确答案: is · 主句是 we'll try,if 从句用一般现在时 is。即使「到那儿的时候」是将来,从句里也不用 will be;would be 是假设语气,与 we'll 不搭配。
11. I don't have a million dollars, but if I ___ one, I would travel around the world.
- have
- had
- would have
正确答案: had · 与现在事实相反的假设(第二条件句):If + 过去式,主句 would do。had 这里不表示过去,而是表示「不真实」。would have 不能放进 if 从句;have 是真实条件的形式。
12. My best friend lives far away. If he lived closer, we ___ each other more often.
- will see
- saw
- would see
正确答案: would see · 从句 lived 是过去式,表示与现在相反(他其实住得远),主句用 would + 动词原形:would see。will see 是真实条件的主句;saw 缺少 would,变成了陈述过去的事。
13. My grandmother doesn't know how to use a smartphone. If she ___ how, she could video-call us every day.
- knew
- knows
- would know
正确答案: knew · 主句是 could video-call,前面说明她其实不会用,所以是第二条件句:if 从句用过去式 knew。knows 是真实条件;would know 把 would 放进了 if 从句。主句里 could 和 would 一样可以用,表示「就能」。
14. I ___ that coat if it weren't so expensive.
- would buy
- will buy
- bought
正确答案: would buy · if it weren't so expensive 是与现在事实相反(它实际上很贵),主句用 would buy。will buy 是真实条件;bought 缺少 would。
15. (You overslept and were late.) If you had set an alarm, you ___ late this morning.
- won't be
- wouldn't be
- wouldn't have been
正确答案: wouldn't have been · 与过去事实相反(第三条件句):If + had done,主句 would have done。迟到已经发生,所以是 wouldn't have been late。wouldn't be 用于与现在相反;won't be 是真实将来。
16. If we ___ the map more carefully, we wouldn't have taken the wrong road.
- would have read
- had read
- read
正确答案: had read · 主句 wouldn't have taken 说明是过去的假设,if 从句用过去完成时 had read。would have read 是中国学生最常见的错误——中文「如果当时看仔细点」没有形式提示,就把主句的 would have 也搬进了从句;标准英语里这个位置用 had done。
17. She ___ yesterday's final if she hadn't hurt her ankle in the first set.
- would win
- would have won
- will win
正确答案: would have won · hadn't hurt 是过去完成时,yesterday's final 说明比赛已经结束,主句用 would have won(本来会赢)。would win 是对现在或将来的假设;will win 是真实条件。
18. If it hadn't rained so heavily, the school picnic ___ cancelled last Saturday.
- wouldn't have been
- won't be
- wouldn't be
正确答案: wouldn't have been · last Saturday 和 hadn't rained 都指向过去,用第三条件句的被动形式:wouldn't have been cancelled。wouldn't be cancelled 说的是现在或将来,和 last Saturday 矛盾。
19. I don't have his number. If I ___ it, I would call him right now.
- had known
- know
- knew
正确答案: knew · right now 和 I don't have 都说明是与现在相反的假设,用过去式 knew + would call。had known 是与过去相反,要配 would have called;know 是真实条件,要配 will。
20. What would you do if you ___ a lost wallet with a lot of cash in it?
- will find
- found
- would find
正确答案: found · 主句 What would you do 是假设,if 从句用过去式 found。这种「如果你遇到……会怎么办」的问题通常用第二条件句,因为情况并不真实。will find 和 would find 都把情态动词放进了 if 从句。
21. (Mixed conditional) If I had accepted the job in Shanghai last year, I ___ there now.
- would have lived
- would be living
- will live
正确答案: would be living · 混合条件句:条件与过去相反(had accepted … last year),结果与现在相反(now),所以主句用 would do / would be doing。would have lived 是对过去结果的假设,和 now 冲突。
22. (Mixed conditional) If she weren't so shy, she ___ to the party last night.
- would go
- will go
- would have gone
正确答案: would have gone · 从句说的是她一贯的性格(现在仍然害羞),主句说的是昨晚的事,所以是「现在的条件 + 过去的结果」:would have gone。would go 只能表示现在或将来的结果,与 last night 不符。
23. ___ I known you were in town, I would have called you.
- Had
- If
- Have
正确答案: Had · 省略 if 的倒装:Had I known = If I had known。If I known 缺少 had;Have I known 不是条件句。这种倒装常见于正式写作,也是语法选择题的常见考点。
24. (Formal email) ___ you need any further information, please do not hesitate to contact us.
- Would
- Should
- Had
正确答案: Should · Should you need… = If you need…,是正式邮件里常见的倒装,表示「万一您需要」。Would 和 Had 都不能这样引导条件。
25. (Formal) Were I in your position, I ___ accept the offer without hesitation.
- will
- shall
- would
正确答案: would · Were I in your position = If I were in your position,与现在事实相反,主句用 would。will 和 shall 用于真实条件,与倒装的 Were I 不搭配。
26. You can borrow my laptop as long as you ___ it back by Friday.
- give
- will give
- gave
正确答案: give · as long as(只要)引导条件,同样遵循主将从现:as long as you give it back。will give 违反这条规则;gave 是过去时或第二条件句的形式,与 can borrow 不搭配。
27. Unless you ___ your seat by Friday, it will be given to someone on the waiting list.
- don't book
- will book
- book
正确答案: book · unless 已经包含「不」的意思,后面用肯定的一般现在时:Unless you book = If you don't book。don't book 造成双重否定,意思反了;will book 违反主将从现。
28. If he hadn't been so tired, he ___ such a silly mistake in yesterday's test.
- didn't make
- wouldn't have made
- won't make
正确答案: wouldn't have made · hadn't been 和 yesterday 都指向过去,用第三条件句:wouldn't have made。didn't make 是陈述事实,不是假设;won't make 是将来。
29. Provided that the weather ___ good, the race will start at nine.
- will be
- is
- would be
正确答案: is · provided (that) = 只要、前提是,和 if、as long as 一样遵循主将从现:provided that the weather is good。中文「只要天气好」里没有将来标记,不要因为比赛在将来就写 will be。
30. (Mixed conditional) If you had listened to me back then, you ___ in this mess now.
- wouldn't be
- wouldn't have been
- won't be
正确答案: wouldn't be · 过去的条件(had listened … back then)影响现在的结果(now),主句用 wouldn't be。wouldn't have been 是对过去结果的假设,和 now 矛盾。
将此测验布置给全班
免费使用,学生无需注册账号。
完整规则:四种条件句一张表
判断条件句只要问两个问题:这个条件是真的可能发生,还是假设的?说的是现在、将来还是过去?回答完这两个问题,形式就确定了。
- 零条件句(普遍事实):If + 一般现在时,主句一般现在时。If you mix red and blue, you get purple.
- 第一条件句(可能发生的将来,主将从现):If + 一般现在时,主句 will / can / may + 动词原形。If you leave now, you will catch the bus.
- 第二条件句(与现在事实相反,或不太可能的将来):If + 过去式(be 常用 were),主句 would / could / might + 动词原形。If I had a car, I would drive to work.
- 第三条件句(与过去事实相反):If + had done,主句 would / could / might have done。If we had left earlier, we would have caught the bus.
- 混合条件句:过去的条件 + 现在的结果(If I had studied medicine, I would be a doctor now),或现在的条件 + 过去的结果(If I weren't afraid of heights, I would have climbed the tower yesterday)。
- 主将从现同样适用于 when、as soon as、before、after、until、unless、as long as、provided that 引导的从句。
第二条件句里 be 动词用 were 是正式、标准的写法(If I were…);日常口语中 If I was… 也很常见。考试和正式写作建议用 were。
易错点:unless、in case 与 if 从句里的 will
unless 基本等于 if … not,但它本身已经带否定,后面不再加 not:Unless you book = If you don't book。in case 不是「如果」,而是「以防万一」:Take a coat in case it gets cold 是现在就带,防止之后变冷。
说「if 从句里不用 will」其实是简化说法。准确地说:表示将来的条件时,if 从句用一般现在时。但 will 表示意愿或客气的请求时可以出现在 if 从句里,例如 If you will wait here a moment, I'll get the manager(请您在这里稍等)。考试中的一般条件句仍按主将从现处理。
- If you don't hurry, you'll be late. = Unless you hurry, you'll be late.
- I'll take my phone in case you call.(以防你打电话来,先带上)
- I'll answer my phone if you call.(你打来我就接)
- Had I known… / Should you need… / Were I you…:省略 if 后把 had / should / were 提到主语前,多见于正式文体。
为什么中国学习者容易用错
中文的「如果……就……」不随时间变形。「如果明天下雨,我们就不去」「如果我是你,我就去」「如果我当时知道,我就告诉你了」,句型完全一样,时间和真假靠「明天」「当时」「是你」这些语境来体现。英语则把这些信息写进动词:真实还是假设、现在还是过去,都要通过 rains / rained / had rained、will / would / would have 体现出来。
因此中国学习者最常出现两类错误。第一,按中文的时间感把 will 放进 if 从句:「如果明天下雨」→ *If it will rain tomorrow。第二,把主句的 would 复制到从句:「如果我早知道」→ *If I would have known,标准英语应该是 If I had known。另外,「了」并不等于过去时——「如果你来了,我们就开始」说的是将来,英语是 If you come, we'll start。
写完条件句,先看 if 从句:里面有 will 或 would 吗?如果是普通条件句,基本可以确定要改。
常见错误对照
- ✗ If it will rain tomorrow, we will stay in. → ✓ If it rains tomorrow, we will stay in. — 将来的条件用一般现在时。
- ✗ If I would have known, I would have told you. → ✓ If I had known, I would have told you. — 第三条件句的 if 从句用 had done。
- ✗ If I have more money, I would buy a car.(指现在没钱)→ ✓ If I had more money, I would buy a car. — 与现在相反用过去式。
- ✗ If you had come, you would enjoy the party yesterday. → ✓ If you had come, you would have enjoyed the party yesterday. — 过去的结果用 would have done。
- ✗ Unless you don't hurry, you'll miss the bus. → ✓ Unless you hurry, you'll miss the bus. — unless 自带否定。
- ✗ I'll call you when I will arrive. → ✓ I'll call you when I arrive. — 时间状语从句同样主将从现。
两问判断法
- 问一:真的可能发生,还是假设?可能发生 → 零条件句或第一条件句;假设 → 第二、第三或混合条件句。
- 问二:时间是现在、将来还是过去?现在或将来的假设 → 过去式 + would do;过去的假设 → had done + would have done。
- 问三(混合条件句):条件和结果是不是分属两个时间?是的话,条件和结果各按自己的时间选形式。
wish、as if、would rather、It's time… 也用「时态后退」表示假设,但不属于 if 条件句,可以到虚拟语气练习中专门训练。
继续练习
常见问题
if 从句里真的永远不能用 will 吗?
不是永远不能。表示将来的条件时,if 从句用一般现在时,这是基本规则。但 will 表示意愿或礼貌请求时可以出现在 if 从句中,例如 If you will follow me, I'll show you to your room。考试中的普通条件句按主将从现做即可。
If I was you 和 If I were you 哪个对?
If I were you 是标准形式,考试和正式写作都应该用 were。If I was you 在英美日常口语里也很常见,不会影响理解,但属于非正式用法。为了稳妥,书面表达一律用 were。
混合条件句怎么判断?
看条件和结果是不是在两个不同的时间。过去的条件影响现在的结果,用 If + had done,主句 would do(If I had saved money, I would be rich now)。现在一直存在的情况影响过去的结果,用 If + 过去式,主句 would have done。题目里的 now、yesterday、last year 就是最重要的线索。