我们越来越接近我们的目标。
程序可以获取用户输入; 可以给用户输出结果, 人际互动没有问题了。
中间可以做到各种计算, 比如简单的数学运算; 逻辑比较运算等等, 而且根据这些运算结果执行不同的代码。
但是好像缺少了一些东西, 所以我们继续完善。
打开vs2019开发人员命令提示符。
输入命令:
d:
cd guess
md v4
cd v4
notepad game.c
然后输入如下代码:
// game.c
// 游戏的第4个版本
#include
int main(void)
{
int user;
printf("请猜猜看, (1-100)\n");
scanf("%d", &user);
// 还是以前的if语句,
if (user >&#61; 1 && user <&#61; 100) // 重点
{
printf("合法数字\n");
}
else
{
printf("非法数字\n");
}
printf("游戏结束\n");
return 0;
}
切换到命令提示符&#xff0c; 编译运行&#xff1a;
cl game.c
game.exe
然后多运行几次&#xff0c; 我们发现程序现在可以圈定一个范围了。
同样的python程序&#xff1a;
notepad game.py
然后编辑器里输入代码&#xff1a;
# --*-- Encoding: UTF-8 --*--
#! fileName: game.py
# 游戏的第四个版本
user &#61; int(input("请猜猜看&#xff1a; (1-100)\n"))
if user >&#61; 1 and user <&#61; 100: # 重点
print("合法数字")
else:
print("非法数字")
#
print("游戏结束")
写完后切换到命令提示符&#xff0c; 运行python程序
python game.py
结果和C语言的一模一样。
解说和理论
首先我们发现C语言的代码比python长的多。
主要是花括号占据了好几行代码。
那么在C语言里我能不能不写花括号&#xff0c; 这个是可以的&#xff0c; 比如&#xff1a;
if 条件
一行代码
如果两行以上代码的话必须用花括号来包围&#xff0c; 否则编译器不知道你的意思。
所以我的建议是不要省略花括号&#xff0c; 万一以后改动代码呢&#xff1f;
还是为了可读性。
另外if的条件必须写在小括号里。
而python就有着很大不同&#xff0c;
if 条件:
空白符代码
C语言用花括号来限定代码块&#xff0c; 而python使用缩进来限定代码块。
缩进就是排版格式&#xff0c; 比如我们写文章&#xff0c; 给一个自然段开头必须留空几个空格。
在python里只要遇到冒号换行必须留几个空格。
而且同一个代码块每一行必须对其。
if 条件&#xff1a;
代码块1
else&#xff1a;
代码块2
那么这里的代码块1和代码块2也必须对其&#xff0c; 代码块1四个空格&#xff0c; 代码块2三个空格肯定是出错的。
眼睛看不到屏幕写python稍微麻烦一点&#xff0c; 不过我的经验可以借鉴。
而编写其他语言的代码没有这个问题&#xff0c; 代码块都是在花括号里的&#xff0c; 有的使用了关键字&#xff0c; 比如&#xff1a;
if条件 then
代码块
end
总之这些编程语言需要遵循某种格式&#xff0c; 不能乱写一通。
另外if语句的else从句可以省略&#xff0c; 比如&#xff1a;
if 关闭 &#61;&#61; 真:
退出程序
我们有这样一个使用场景&#xff0c; 键入/h打开帮助文档。
我们可以用python来模拟一下&#xff1a;
res &#61; input("键入/h查看帮助")
if res &#61;&#61; "/h":
print("帮助文档, 后面的省略")
对应的C语言代码是这样&#xff1a;
char res;
printf("键入/h查看帮助\n");
scanf("/%c", &res);
if (res &#61;&#61; &#39;h&#39;)
{
printf("帮助文档 后面的省略\n");
}
这里就问题来了&#xff0c; 如果人家输入/H怎么办&#xff1f;
你总不能要求人家必须输入小写的h吧。
怎么办&#xff1f;
&&; ||; !
首先我们已经看到过&&的使用&#xff0c; 在python里是and。
这个两边的条件必须是treu&#xff0c; 这样结果是treu的。
true && true
true
true && false
false
false && true
false
这样的状态下程序不会运算第二个条件&#xff0c; 第一个已经false了第二个影响不了结果&#xff0c; 结果肯定是false。
还有一个
false && false
false
这样我们就可以明白
user >&#61; 1 && user <&#61; 100
这个含义&#xff0c; user必须是大于或等于1&#xff0c; 并且user必须小于或者等于100&#xff0c; 这样条件成立&#xff0c; 结果是treu&#xff0c; 否则条件不成立。
那么||呢&#xff1f; 在python里是or
true || true
true
这样状态下也不会运算第二个条件。
false || false
false
true || false
true
不会运算第二个条件
false || true
true
所以我们可以看出解决大小写问题的答案。
res &#61;&#61; &#39;h&#39; || res &#61;&#61; &#39;H&#39;
完整的代码实例如下&#xff1a;
#include
int main(void)
{
char res;
printf("键入/h查看帮助\n");
scanf("/%c", &res);
if (res &#61;&#61; &#39;h&#39; || res &#61;&#61; &#39;H&#39;)
{
printf("帮助文档 后面的省略\n");
}
return 0;
}
最后说一下!, 在python里是not。
意思也很简单&#xff0c; 反着来&#xff0c; 如果结果是true经过 not后反转过来了&#xff0c; false, 反之亦然。
在python里这是单词所以必须需要空格来分开写&#xff0c; 否则连在一起出现错误。
好了&#xff0c; 这次就先到这。