只会输出的程序是「死」的。用
询问和询问数值,程序就能听你说话。
设 名字 = 询问("你叫什么名字?")
打印("你好," + 名字)
运行到 询问 时程序会停下来等你敲字,按回车继续。询问 拿回来的永远是文字——即使你输入 123,它也是文字 "123" 而不是数字 123。
不想要提示语就直接 询问()。
设 年龄 = 询问数值("你多大了?")
打印("明年你就 " + 文本(年龄 + 1) + " 岁")
询问数值 会把文字转成数字,而且输错会自动重问:
你多大了?abc
「abc」不是数字,请重新输入。
你多大了?18
输入 1.5 得到小数,输入 18 得到整数。
因为「文字」和「数字」是两类不同的东西(见第一章):
设 a = 询问() # 输入 5,a 是文字 "5"
设 b = 询问数值() # 输入 5,b 是数字 5
打印(a + a) # "55" ← 文字接起来
打印(b + b) # 10 ← 数字相加
想把 询问 拿到的文字变成数字,用 整数(...) 或 小数(...)。
拼文字老用 + 文本(x) + 很啰嗦。填 让这件事变轻松——{} 里直接写名字或算式:
设 名字 = "小明"
设 年龄 = 18
打印(填"你好,{名字},明年 {年龄 + 1} 岁")
# 你好,小明,明年 19 岁
{} 里能放任何表达式——变量、算术、函数调用都行。想显示字面的大括号,用 {{ 和 }}。
示例/07-猜数字.cnp 是真的能玩的猜数字游戏:
设 答案 = 随机数(1, 100)
循环 真
设 猜 = 询问数值("请输入你猜的数字:")
如果 猜 == 答案
打印("猜中了!")
跳出
否则 如果 猜 < 答案
打印("小了,再大一点")
否则
打印("大了,再小一点")
程序还想要输入、但输入已经没了(比如按了 Ctrl+D),询问数值 会报错停下:
错误[CN0310]: 还需要一个数字,但输入已经结束了
这是故意的:早期版本这里会陷入死循环,程序卡死。报错停下比卡住好。
写一个程序:问用户的名字和年龄,然后打印一句「某某明年就 X 岁了」。
设 名字 = 询问("你叫什么?")
设 年龄 = 询问数值("你多大了?")
打印(填"{名字} 明年就 {年龄 + 1} 岁了")
下一章:十、借用 Python 库