chatGPT火了这么久,终于自己试了试,真的有点被惊艳!!!!
我用它做了个实验
1、让他写一个代码
我的第一个要求是
当然,他给出了代码。
# 定义一个字典用于存储用户名和密码
users = {'user1': 'password1', 'user2': 'password2', 'user3': 'password3'}
# 定义一个函数用于验证用户输入的用户名和密码是否正确
def login():
username = input('请输入用户名:')
password = input('请输入密码:')
if username in users and password == users[username]:
print('登录成功!')
else:
print('用户名或密码错误,请重新输入。')
# 调用函数进行登录验证
login()
因为我是Java开发,python不太懂,所以让换成了Java,他给出了java 版本
import java.util.HashMap;
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
// 定义一个HashMap用于存储用户名和密码
HashMap<String, String> users = new HashMap<>();
users.put("user1", "password1");
users.put("user2", "password2");
users.put("user3", "password3");
// 调用login()方法进行登录验证
login(users);
}
// 定义一个方法用于验证用户输入的用户名和密码是否正确
public static void login(HashMap<String, String> users) {
Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = input.nextLine();
System.out.print("请输入密码:");
String password = input.nextLine();
if (users.containsKey(username) && users.get(username).equals(password)) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误,请重新输入。");
login(users); // 用户名或密码错误时重新调用login()方法进行登录验证
}
}
}
优化代码
这很简单,然后我让他优化
他能很好的识别我的意思,并且用了spring框架
UserController.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(@RequestBody User user) {
boolean isValidUser = userService.validateUser(user.getUsername(), user.getPassword());
if (isValidUser) {
return "登录成功!";
} else {
return "用户名或密码错误,请重新输入。";
}
}
}
UserService.java:
import org.springframework.stereotype.Service;
import java.util.HashMap;
@Service
public class UserService {
private static HashMap<String, String> users = new HashMap<>();
static {
users.put("user1", "password1");
users.put("user2", "password2");
users.put("user3", "password3");
}
public boolean validateUser(String username, String password) {
if (users.containsKey(username) && users.get(username).equals(password)) {
return true;
} else {
return false;
}
}
}
这一步已经很厉害了。我想我们平时不会这么写,肯定是要用参数去接的,所以给提了新的意见
他直接更新了代码,我觉得,这可以直接用了!!!!
UserController.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(@RequestParam("username") String username, @RequestParam("password") String password) {
boolean isValidUser = userService.validateUser(username, password);
if (isValidUser) {
return "登录成功!";
} else {
return "用户名或密码错误,请重新输入。";
}
}
}
UserService.java:
import org.springframework.stereotype.Service;
import java.util.HashMap;
@Service
public class UserService {
private static HashMap<String, String> users = new HashMap<>();
static {
users.put("user1", "password1");
users.put("user2", "password2");
users.put("user3", "password3");
}
public boolean validateUser(String username, String password) {
if (users.containsKey(username) && users.get(username).equals(password)) {
return true;
} else {
return false;
}
}
}
后续我还试了让记录日志、保存数据库等操作,一个sso直接被写出来了。