本文目录导读:

在编程中获取用户输入的方法取决于你使用的脚本语言,以下是几种常见语言的实现方式:
Python(最常用)
# 获取字符串输入
name = input("请输入你的名字:")
print(f"你好,{name}!")
# 获取整数输入
age = int(input("请输入你的年龄:"))
print(f"你今年{age}岁")
# 获取浮点数
score = float(input("请输入分数:"))
# 多行输入(直到输入结束标记)
lines = []
while True:
line = input()
if line == "结束":
break
lines.append(line)
Bash/Shell 脚本
#!/bin/bash # 基本输入 echo "请输入你的名字:" read name echo "你好,$name!" # 带提示信息 read -p "请输入年龄:" age echo "年龄:$age" # 隐藏输入(用于密码) read -s -p "请输入密码:" password echo "" # 带超时限制 read -t 5 -p "5秒内输入:" input echo "输入内容:$input" # 读取多个变量 read -p "输入多个值:" var1 var2 var3 echo "$var1 $var2 $var3"
Node.js (JavaScript)
使用 readline 模块:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 基本用法
rl.question('请输入你的名字:', (name) => {
console.log(`你好,${name}!`);
rl.close();
});
// 多问题方式
rl.question('请输入名字:', (name) => {
rl.question('请输入年龄:', (age) => {
console.log(`${name}今年${age}岁`);
rl.close();
});
});
使用 async/await:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const question = (query) => {
return new Promise((resolve) => {
rl.question(query, resolve);
});
};
async function main() {
const name = await question('请输入名字:');
const age = await question('请输入年龄:');
console.log(`${name}今年${age}岁`);
rl.close();
}
main();
Ruby
# 获取输入
puts "请输入你的名字:"
name = gets.chomp # chomp去掉末尾换行符
puts "你好,#{name}!"
# 转换为数字
print "请输入年龄:"
age = gets.to_i
puts "你今年#{age}岁"
# 一次获取多个值
puts "输入两个数字(空格分隔):"
a, b = gets.split.map(&:to_i)
puts "和为:#{a + b}"
Perl
#!/usr/bin/perl print "请输入你的名字:"; my $name = <STDIN>; chomp($name); print "你好,$name!\n"; # 读取数字 print "请输入年龄:"; my $age = <STDIN>; chomp($age); print "你今年$age岁\n";
PHP (命令行界面)
<?php
// 获取输入
echo "请输入你的名字:";
$name = trim(fgets(STDIN));
echo "你好,$name!\n";
// 使用新的PHP函数(PHP 7.2+)
$age = readline("请输入年龄:");
echo "你今年$age岁\n";
?>
Go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入你的名字:")
name, _ := reader.ReadString('\n')
name = strings.TrimSpace(name)
fmt.Printf("你好,%s!\n", name)
// 读取数字
fmt.Print("请输入年龄:")
var age int
fmt.Scanln(&age)
fmt.Printf("你今年%d岁\n", age)
}
Rust
use std::io;
fn main() {
println!("请输入你的名字:");
let mut name = String::new();
io::stdin().read_line(&mut name).expect("读取失败");
let name = name.trim();
println!("你好,{}!", name);
// 读取数字
println!("请输入年龄:");
let mut age = String::new();
io::stdin().read_line(&mut age).expect("读取失败");
let age: u32 = age.trim().parse().expect("请输入数字");
println!("你今年{}岁", age);
}
注意事项
- 输入验证:始终验证用户输入,防止程序崩溃
- 编码问题:某些环境直接处理输入可能有编码问题
- 清除缓冲区:在连续读取时注意清空输入缓冲区
选择哪种方法取决于你的脚本运行环境和需求,最常见的还是Python的input()、Shell的read和Node.js的readline。