Guessing a number between $1$ and $100$ with 10 distinct questions and 9 honest answers I've been trying to solve this riddle:

Say I'm thinking of a number between 1 and 100. You can ask me 10 distinct yes/no questions to guess the number, but exactly one of my answers will be a lie and I won't tell you which one.

How can this be done? 

This variant variant has gained some attention in the comments and in other answers. I think it will shed some light on the original question, so I'll give an answer here.

Is it possible to get through if we have to ask all our questions simultaneously without seeing any answers (and the questions cannot explicitly refer to which answers are provided for other questions or where the lie is)?

The answer is that we can only do this if out of $80$ possible numbers, $100$ is too much. So any strategy to the original question must adapt the questions according to the answers we have got.

Essentially, all our questions are "Is the number in the set $S_i$?" for $i=1,2,\dots,10$, and we choose the sets $S_i$ before knowing the answers to these questions. For each number in $1,\dots,100$, we create a binary codeword where the $i$th symbol tells whether the number is in the set $S_i$. When we write down the answers, we get another binary word, and since there is exactly one lie, we know that the word differs from the codeword of the correct answer in exactly 1 position.
(In what remains, the distance between two codewords is the number of positions in which they differ.)
So, our task is to find a set $C$ of codewords so that no binary word is at distance $1$ from two different codewords. This is equivalent to the condition that no two codewords have distance exactly $2$.
We can split the set $C$ to two parts, $C_e$ containin all codewords with even number of $1$s, and $C_o$ containing all codewords with odd number of $1$s. No codeword in $C_e$ is at distance $2$ from a codeword in $C_o$, so what remains is to check the condition on $C_e$ and $C_o$ separately. In addition, the distance between two codewords in $C_e$ (and in $C_o$) is never odd. So the condition is that the minimum distance between two codewords in $C_e$ (and in $C_o$) is $4$.
The maximum size of a binary code of length $n$ and minimum distance $d$ is given by the coding-theoretic function $A(n,d)$. In particular, $A(10,4)=40$. So the maximum size for both $C_e$ and $C_o$ is $40$. Therefore, $|C|\leq 80$. The bound can be reached by taking a binary code of length $9$ and minimum distance $3$ with $40$ codewords, and creating two codewords from each codeword by adding both a $0$ and a $1$ at the end. Here is an example.
