编程基础:选择
编程的一个重要部分是使用选择,即在满足特定条件时执行某些操作的能力。这可能像在电脑游戏中,如果你吃了一根鸡腿,就增加你的血条,或者如果温度超过某个值,就把冷却棒插入核反应堆中。
最常见的选择语句是 **IF 语句**,其理念是将一个值与某些条件进行比较,**IF** 该值和条件匹配,则以某种方式继续,否则执行其他操作。例如
If It is the queen Then Salute her Else Treat them like a commoner End
VB.NET | Python |
---|---|
If name = "Queen" Then
console.writeline("Hello your Majesty")
Else
console.writeline("Get to the back of the queue!")
End If
|
if name == "Queen":
print ("Hello your Majesty")
else:
print ("Get to the back of the queue!")
|
Else 部分是可选的,您可以直接忽略该公共者!(并丢弃 Else)
VB.NET | Python |
---|---|
If name = "Queen" Then
console.writeline("Hello your Majesty")
End If
|
if name == "Queen":
print ("Hello your Majesty")
|
您可能还希望在 If 语句中测试多个内容。例如
VB.NET |
---|
If name = "Queen" And age >= 18 Then
console.writeline("Hello your Majesty, I can serve you beer")
Else
console.writeline("Get out of my bar!")
End If
|
Python |
if name == "Queen" and age >= 18:
print ("Hello your Majesty, I can serve you beer")
else:
print ("Get out of my bar!")
|
我们经常希望编写执行某种比较或测试的 IF 语句。我们在上面的示例中恰好完成了这一点,使用 age >= 18
测试 age 变量的值是否大于或等于 18。
您会从数学学习中识别出大多数这些运算符,但一些在计算中略有不同。以下运算符很简单
运算符 | 意义 |
---|---|
> |
大于 |
< |
小于 |
>= |
大于或等于 |
<= |
小于或等于 |
在计算中不同的最重要的运算符是您可能已经多次使用过,甚至没有注意到,那就是 =
运算符。在大多数编程语言中,=
运算符用于 **赋值**,例如,如果我们想将值 "bunny"
赋值给名为 animal
的变量,我们编写 animal = "bunny"
,这在 VB.NET 和 Python 中是一样的。这两种语言在 **等于** 方面有所不同,我们在上面的示例中看到了这一点,测试 name
变量的值是否等于 "Queen"
。在 VB.NET 中,等于运算符只是 =
,而 Python 则使用 ==
。这在编写 Python 时会导致一个非常常见的编程错误 - 如果我们尝试编写使用 =
的 IF 语句,就会出错
if name = "Queen" and age >= 18:
print("Hello your Majesty, I can serve you beer")
我们会收到类似于此的错误消息
Traceback (most recent call last)
File "python", line 4
if name = "Queen" and age >= 18 then
^
SyntaxError: invalid syntax
最后,我们需要一个用于 **不等于** 的运算符。在 VB.NET 中,我们使用 <>
,而在 Python 中,我们使用 !=
。下面是一个非常糟糕的游戏的例子
VB.NET | Python |
---|---|
Dim secret_word, your_guess As String
secret_word = "unlikely"
console.WriteLine("Try to guess the secret word:")
your_guess = console.ReadLine()
If your_guess <> secret_word Then
console.WriteLine("You lose")
End If
|
secret_word = "unlikely"
print("Try to guess the secret word:")
your_guess = input()
if your_guess != secret_word:
print("You lose")
|
练习:IF 语句 为以下内容编写一个 IF 语句 询问用户的眼睛颜色,如果他们说是绿色,就称他们为“地精”,否则他们一定是另一种类型的怪物 代码输出
你的眼睛是什么颜色? 或者 代码输出
你的眼睛是什么颜色? 答案 dim eyes as string
console.writeline("What eyes have thee?")
eyes = console.readline()
If eyes = "Green" Then
console.writeline("Thou art a Goblin?")
Else
console.writeline("Pray tell, be thou another form of beast?")
End If
通过输入“绿色”来尝试代码。它不起作用!我们需要调整 IF 语句:如果眼睛 = “绿色”或眼睛 = “绿色”,那么 'Or 部分确保它能够识别大小写字母 ' '或者我们可以使用 UCase(),我们将在后面了解更多关于此的信息 如果 UCase(眼睛) = "GREEN" 那么 'UCase 将整个输入转换为大写 </syntaxhighlight>
代码输出
你多大了
代码输出
你多大了
代码输出
你多大了
答案 dim age as single
console.writeline("How old are you:")
age = console.readline()
If age >= 11 And age < 17 Then
console.writeline("You're probably at secondary school")
Else
console.writeline("You're not at secondary school")
End If
现在来看一些非常简单的 AI 代码输出
你今天感觉怎么样:快乐还是悲伤? 在所有其他情况下,程序应该说:“对不起,我不知道该如何帮助”。使用一个 IF 语句编写代码来处理上述情况 答案 dim feel as string
dim exercise as string
console.writeline("How do you feel today: Happy or Sad?")
feel = console.readline()
console.writeline("Have you had some exercise: Yes or No?")
exercise = console.readline()
If feel = "Sad" AND exercise = "No" Then
console.writeline("Go for a walk, you might feel better")
Else
console.writeline("Sorry I don't know how to help")
End If
|
示例:多个 If 与嵌套 If 有时,当我们试图编写复杂的代码时,我们需要使用 If 的组合。在上面的示例中,我们可能仍然希望以尊重的方式对待未成年的女王,以轻蔑的态度对待未成年的平民,以尊重的方式对待 18 岁以上的女王,并以普通礼貌的方式对待 18 岁以上的平民。事实上,我们似乎需要 4 个不同的 IF 语句。我们可以这样解决 VB.NET
If name = "Queen" And age >= 18 Then
console.writeline("Hello your Majesty, may one serve you beer?")
End If
If name = "Queen" And age < 18 Then
console.writeline("I'm sorry your Majesty, you are too young to buy beer")
End If
If name <> "Queen" And age >= 18 Then '<> means not equal (so does !=)
console.writeline("Hello mate, can I serve you beer?")
End If
If name <> "Queen" And age < 18 Then
console.writeline("Get out of my pub, you are too young to buy beer")
End If
Python 3
if name == "Queen" and age >= 18:
print ("Hello your Majesty, may one serve you beer?")
elif name == "Queen" and age <18:
print ("I'm sorry your Majesty, you are too young to buy beer")
elif name != "Queen" and age >= 18:
print ("Hello mate, can I serve you beer?")
elif name != "Queen" and age <18:
print ("Get out of my pub, you are too young to buy beer")
这似乎很麻烦,我们现在将研究一种更优雅的解决方法,即使用嵌套 IF。首先,嵌套意味着将一个东西放在另一个东西里面,所以我们要将一个 IF 放在另一个 IF 里面。 VB.NET
If name = "Queen" Then
If age < 18 Then
console.writeline("I'm sorry your Majesty, you are too young to buy beer")
Else
console.writeline("Hello your Majesty, may one serve you beer?")
End If
Else
If age >= 18 Then
console.writeline("Hello mate, can I serve you beer?")
Else
console.writeline("Get out of my pub, you are too young to buy beer")
End If
End If
Python 3
if name == "Queen":
if age < 18:
print ("I'm sorry your Majesty, you are too young to buy beer")
else:
print ("Hello your Majesty, may one serve you beer?")
else:
if age >= 18:
print ("Hello mate, can I serve you beer?")
else:
print ("Get out of my pub, you are too young to buy beer")
使用以下数据尝试上面的示例,两种解决方案都应该提供相同的答案 1. The name is Queen and the age is 18 2. The name is Quentin and the age is 28 3. The name is Queen and the age is 17 4. The name is Aashia and the age is 15 |
练习:嵌套 IF 语句 为以下内容编写 IF 语句嵌套 当一个人超过 21 岁且没有醉酒时,就可以租车。 代码输出
你多大了? 它还应该处理 代码输出
console.writeline("你多大了?") 答案 dim age as integer
dim drinking as string
console.writeline("How old are you?")
age = console.readline()
if age >= 21 then
console.writeline("Good, that's old enough. Have you been drinking?")
drinking = console.readline()
if drinking = "Yes" then
console.writeline("Come back tomorrow")
else
console.writeline("Your carriage awaits")
end if
else
console.writeline("You're too young I'm afraid. Come back in a few years")
end if
创建一个登录屏幕来执行以下操作 代码输出
输入用户名 如果他们输入错误的用户名,它应该立即将他们踢出,并且不询问密码。如果他们输入错误的密码,它应该将他们踢出。 答案 dim name as string
dim password as string
console.writeline("Enter username:")
name = console.readline()
if name = "Jonny5" then
console.writeline("RECOGNISED! Enter password:")
password = console.readline()
if password = "Alive" then
console.writeline("Please enter " & name)
else
console.writeline("INCORRECT! Get out!")
end if
else
console.writeline("Username not recognised. Get out!")
end if
|
扩展:单行 IF 语句 正如您现在应该意识到的那样,许多编程都是尽可能快地完成事情。您可能已经厌倦了编写冗长的 if 语句,不得不一直按回车键来创建新行。有一种更快的编码方式:单行 IF 语句。
这是一种更短的编写方式
但要小心,这种代码通常更难阅读,因此更难调试。一旦它通过了解释器/编译器,它几乎肯定不会运行得更快,它只是为了让你节省一点空间。对于考试,请坚持使用较长的版本。 |
另一种类型是 **Case 语句**,它可以用多个 if 语句来概括,其中将值与多个条件进行比较,并执行第一个匹配的条件的操作,否则执行默认操作。
Case Enter Restaurant and pick up menu If Egg and Chips available Then Order Egg and Chips End If If Pie and Chips available Then Order Pie and Chips End If If Curry and Chips available Then Order Curry and Chips End If If Pizza and Chips available Then Order Pizza and Chips End If Default Leave hungry End
但是,大多数编程语言都会提供一种缩短的实现 case 语句的方法,而无需编写所有这些 if 语句。例如,在 VB.NET 中,我们使用 select case
Dim number As Integer = 5
Select Case number
Case 1, 2, 3
Console.WriteLine("Between 1, 2, 3 inclusive")
Case 4 to 8
Console.WriteLine("Between 4 and up to 8")
'This is the only case that is true
Case 9
Console.WriteLine("Equal to 9")
Case 10
Console.WriteLine("Equal to 10")
Case Else
Console.WriteLine("Not between 1 and up to 10")
End Select
介于 4 到 8 之间
练习:Case 语句 创建一个程序,让人们输入动物的名称,它会输出该动物发出的声音。它应该处理的动物有
尝试只使用 5 个 case 语句完成此任务。 答案 Dim animal As string
animal = console.readline()
Select Case animal
Case "Pig"
Console.WriteLine("Oink")
Case "Cow"
Console.WriteLine("Moo")
Case "Bear", "Tiger"
Console.WriteLine("Grr")
Case "Sheep"
Console.WriteLine("Baa")
Case Else
Console.WriteLine("Meow")
End Select
您现在将使用 case 语句创建一个电子钢琴。
在下面的代码中创建一个 case 语句,它将播放上面写的音符。while true 循环意味着代码将永远不会结束,并且将永远继续。为了获得额外的分数,请尝试让代码接受大小写输入 'instruction statement here
While True
'input and case statements here
While End
记住,要发出声音,请使用 console.beep(2000,500) 'beep at 2000Hz for 0.5 seconds
答案 dim note as char
console.writeline("please insert a musical note:")
While True
note = Console.ReadKey().KeyChar
'note = Console.Readline() 'also works, but it less fun
Select Case UCase(note)
Case "A"
Console.Beep(220,50)
Case "B"
Console.Beep(247,50)
Case "C"
Console.Beep(262,50)
Case "D"
Console.Beep(294,50)
Case "E"
Console.Beep(330,50)
Case "F"
Console.Beep(349,50)
Case "G"
Console.Beep(392,50)
End Select
End While
|