Tell us what’s happening:
I am stuck at task 8 and 13 in the Number Guessing Game project.
Your code so far
number_guess.sh:
#!/bin/bash
# init variables
PSQL="psql --username=freecodecamp --dbname=number_guess -t --no-align -c"
RANDOM_NUMBER=$((1 + RANDOM % 1000))
GUESS_COUNT=0
while true
do
# get username
echo "Enter your username:"
read USERNAME
if [[ -z $USERNAME ]]
then
echo -e "Username invalid, must be 1+ letters long.\n"
else
break
fi
done
# get user_id
USER_ID=$($PSQL "SELECT user_id FROM users WHERE username = '$USERNAME';")
# check if username have user_id
if [[ -z $USER_ID ]]
then
# have not user_id, so create user
$PSQL "INSERT INTO users(username) VALUES('$USERNAME');"
USER_ID=$($PSQL "SELECT user_id FROM users WHERE username = '$USERNAME';")
echo "Welcome, $USERNAME! It looks like this is your first time here."
else
# have user_id, so get asked for info
GAMES_PLAYED=$($PSQL "SELECT COUNT(*) FROM games WHERE user_id = $USER_ID;")
BEST_GAME=$($PSQL "SELECT MIN(guesses) FROM games WHERE user_id = $USER_ID;")
echo "Welcome back, $USERNAME! You have played $GAMES_PLAYED games, and your best game took $BEST_GAME guesses."
fi
# runs until break
while true
do
#get user number guessed
echo "Guess the secret number between 1 and 1000:"
read GUESS
if [[ ! $GUESS =~ ^[0-9]+$ ]]
then
# if not valid, continue with whle (meaning go to start, cause no extra code after the if)
echo "That is not an integer, guess again:"
continue
else
#if valid, inc guess count
GUESS_COUNT=$((GUESS_COUNT + 1))
# if guessed correctly, give nessesary values, insert into games table this game and exit while loop
if (( GUESS == RANDOM_NUMBER ))
then
echo "You guessed it in $GUESS_COUNT tries. The secret number was $RANDOM_NUMBER. Nice job!"
$PSQL "INSERT INTO games(guesses,user_id) VALUES($GUESS_COUNT,$USER_ID);"
break
# If incorrect guess, respond accordingly
elif (( GUESS > RANDOM_NUMBER ))
then
echo "It's lower than that, guess again:"
else
echo "It's higher than that, guess again:"
fi
fi
done
sql dump (single test run and 3 times i played):
--
-- PostgreSQL database dump
--
-- Dumped from database version 12.22 (Ubuntu 12.22-0ubuntu0.20.04.4)
-- Dumped by pg_dump version 12.22 (Ubuntu 12.22-0ubuntu0.20.04.4)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
DROP DATABASE number_guess;
--
-- Name: number_guess; Type: DATABASE; Schema: -; Owner: freecodecamp
--
CREATE DATABASE number_guess WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'C.UTF-8';
ALTER DATABASE number_guess OWNER TO freecodecamp;
\connect number_guess
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: games; Type: TABLE; Schema: public; Owner: freecodecamp
--
CREATE TABLE public.games (
game_id integer NOT NULL,
guesses integer NOT NULL,
user_id integer NOT NULL
);
ALTER TABLE public.games OWNER TO freecodecamp;
--
-- Name: games_game_id_seq; Type: SEQUENCE; Schema: public; Owner: freecodecamp
--
CREATE SEQUENCE public.games_game_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.games_game_id_seq OWNER TO freecodecamp;
--
-- Name: games_game_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: freecodecamp
--
ALTER SEQUENCE public.games_game_id_seq OWNED BY public.games.game_id;
--
-- Name: users; Type: TABLE; Schema: public; Owner: freecodecamp
--
CREATE TABLE public.users (
user_id integer NOT NULL,
username character varying(30) NOT NULL
);
ALTER TABLE public.users OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE; Schema: public; Owner: freecodecamp
--
CREATE SEQUENCE public.users_user_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.users_user_id_seq OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: freecodecamp
--
ALTER SEQUENCE public.users_user_id_seq OWNED BY public.users.user_id;
--
-- Name: games game_id; Type: DEFAULT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.games ALTER COLUMN game_id SET DEFAULT nextval('public.games_game_id_seq'::regclass);
--
-- Name: users user_id; Type: DEFAULT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users ALTER COLUMN user_id SET DEFAULT nextval('public.users_user_id_seq'::regclass);
--
-- Data for Name: games; Type: TABLE DATA; Schema: public; Owner: freecodecamp
--
INSERT INTO public.games VALUES (707, 641, 521);
INSERT INTO public.games VALUES (708, 143, 521);
INSERT INTO public.games VALUES (709, 609, 522);
INSERT INTO public.games VALUES (710, 796, 522);
INSERT INTO public.games VALUES (711, 129, 521);
INSERT INTO public.games VALUES (712, 639, 521);
INSERT INTO public.games VALUES (713, 136, 521);
INSERT INTO public.games VALUES (714, 10, 523);
INSERT INTO public.games VALUES (715, 8, 523);
INSERT INTO public.games VALUES (716, 8, 523);
--
-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: freecodecamp
--
INSERT INTO public.users VALUES (521, 'user_1758540748408');
INSERT INTO public.users VALUES (522, 'user_1758540748407');
INSERT INTO public.users VALUES (523, 'ewie');
--
-- Name: games_game_id_seq; Type: SEQUENCE SET; Schema: public; Owner: freecodecamp
--
SELECT pg_catalog.setval('public.games_game_id_seq', 716, true);
--
-- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: freecodecamp
--
SELECT pg_catalog.setval('public.users_user_id_seq', 523, true);
--
-- Name: games games_pkey; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.games
ADD CONSTRAINT games_pkey PRIMARY KEY (game_id);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (user_id);
--
-- Name: users users_username_key; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_username_key UNIQUE (username);
--
-- Name: games games_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.games
ADD CONSTRAINT games_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(user_id);
--
-- PostgreSQL database dump complete
--
when i played (please note, I removed the string between the @ and the : just for incase. ):
camper@:/workspace/project/number_guessing_game$ ./number_guess.sh
Enter your username:
Username invalid, must be 1+ letters long.
Enter your username:
ewie
INSERT 0 1
Welcome, ewie! It looks like this is your first time here.
Guess the secret number between 1 and 1000:
500
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
250
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
125
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
175
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
200
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
225
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
235
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
230
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
227
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
228
You guessed it in 10 tries. The secret number was 228. Nice job!
INSERT 0 1
camper@:/workspace/project/number_guessing_game$ ./number_guess.sh
Enter your username:
ewie
Welcome back, ewie! You have played 1 games, and your best game took 10 guesses.
Guess the secret number between 1 and 1000:
500
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
250
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
125
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
185
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
215
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
225
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
235
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
245
You guessed it in 8 tries. The secret number was 245. Nice job!
INSERT 0 1
camper@:/workspace/project/number_guessing_game$ ./number_guess.sh
Enter your username:
ewie
Welcome back, ewie! You have played 2 games, and your best game took 8 guesses.
Guess the secret number between 1 and 1000:
fe
That is not an integer, guess again:
Guess the secret number between 1 and 1000:
qe
That is not an integer, guess again:
Guess the secret number between 1 and 1000:
-100
That is not an integer, guess again:
Guess the secret number between 1 and 1000:
10000
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
500
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
800
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
900
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
950
It's higher than that, guess again:
Guess the secret number between 1 and 1000:
970
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
960
It's lower than that, guess again:
Guess the secret number between 1 and 1000:
955
You guessed it in 8 tries. The secret number was 955. Nice job!
INSERT 0 1
output log:
FAILED TEST LOG
✘ SUBTASKS 1.1 :8 Your script should print the correct welcome message for returning users
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert(re.test(scriptOutput))
at Context.<anonymous> (test/1.1.test.js:98:5)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
✘ SUBTASKS 1.1 :13 Your script should print the correct message when a game is finished
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert(re.test(scriptOutput))
at Context.<anonymous> (test/1.1.test.js:133:5)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
I already tried:
project/.freeCodeCamp/test/utils.js (& 1.1.test.js)

utils.js
but it didn’t work.
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Challenge Information:
Number Guessing Game - Build a Number Guessing Game

