Faits: A. H.Y._ et F.Y._, qui sont copropriétaires d'une villa à Marly (FR), ont entrepris de rénover cette maison et ont confié les travaux de chapes et de carrelage à l'entreprise X._ SA (ci-après: l'entrepreneur), qui les a exécutés durant l'été 1999. Le revêtement du sol du salon, de la cuisine, du hall d'entrée et du hall de nuit a été réalisé au moyen de dalles de marbre de Carrare, avec un polissage exécuté sur place. En avril 2002, il a été constaté que le sol en marbre était fissuré de part et d'autre du salon. H.Y._ en a averti l'entrepreneur par lettre du 10 avril 2002, en lui demandant de remédier au défaut. Le lendemain, l'entrepreneur a répondu qu'il attendait le paiement du solde de sa facture et qu'il examinerait la question ensuite. Le 21 avril 2003, les maîtres de l'ouvrage ont requis et obtenu une expertise provisionnelle. L'expert hors procès, qui a déposé son rapport le 29 avril 2004, a estimé les frais de réparation à 36'000 fr., montant ne comprenant pas les frais « secondaires », tels que déménagement, perte de jouissance de la villa pendant les travaux, repas à l'extérieur, etc. A réception dudit rapport, les maîtres de l'ouvrage ont demandé à nouveau à l'entrepreneur, par courrier du 28 mai 2004, d'effectuer les travaux préconisés par cet expert. L'entrepreneur s'y est refusé par lettre du 9 juin 2004, rappelant que son solde de facture n'était pas payé et soutenant que plusieurs questions techniques devaient être tranchées par la justice. B. Le 18 juin 2004, H.Y._ et F.Y._ ont déposé une demande en paiement auprès du Tribunal civil de l'arrondissement de la Sarine, concluant à la condamnation de X._ SA à leur verser en capital la somme de 30'199 fr.40, soit 36'000 fr. de frais de réparation, plus 4'000 fr. pour les frais de relogement, de déménagement et d'entreposage des meubles pendant les travaux, moins 9'800 fr.60 correspondant au solde de la facture de l'entrepreneur. La défenderesse a conclu au rejet de la demande et a réclamé reconventionnellement le solde de sa facture, soit 9'800 fr.60, plus intérêts à 5% l'an dès le 22 novembre 1999. Durant la procédure, une expertise judiciaire a été ordonnée. Les deux experts (l'expert commis à titre provisionnel et l'expert judiciaire) attribuent les fissures du marbre au chauffage par le sol; ils estiment en substance que la préparation du sol n'avait pas été adéquate pour la pose d'un marbre de Carrare. Par jugement du 28 avril 2009, le Tribunal civil de l'arrondissement de la Sarine a admis l'action (en arrondissant le montant dû par la défenderesse à 30'199 fr. avec intérêts à 5% l'an dès le 18 juin 2004) et a rejeté la demande reconventionnelle. Statuant sur appel de l'entreprise défenderesse, la Ire Cour d'appel civil du Tribunal cantonal fribourgeois, par arrêt du 16 décembre 2009, a confirmé le jugement attaqué. En substance, la cour cantonale a considéré qu'était établie l'existence d'un chef de responsabilité imputable à la défenderesse. Elle a ensuite admis que les demandeurs avaient opté dans un premier temps pour le droit à la réfection de l'ouvrage. La défenderesse ayant montré qu'elle n'entendait pas s'exécuter, les demandeurs ont derechef été au bénéfice des droits formateurs alternatifs de l'art. 368 CO et ont pu réclamer des dommages-intérêts positifs. Les juges cantonaux ont ajouté que les demandeurs « auraient pu prendre les mêmes conclusions en optant pour la réduction du prix dès lors que celle-ci est présumée égale aux coûts de la réfection ». Comme les conditions de l'un et l'autre droit sont réalisées, ont-ils poursuivi, il convenait d'accueillir l'action, cela tant pour les frais de réparation que pour les frais accessoires (relogement, déménagement, entreposage des meubles). C. X._ SA exerce un recours en matière civile au Tribunal fédéral. Elle conclut principalement à l'annulation de l'arrêt attaqué, au rejet de la demande et à l'admission de sa demande reconventionnelle; subsidiairement, elle requiert le renvoi de la cause à la cour cantonale pour nouveau jugement dans le sens des considérants. Les intimés proposent le rejet du recours.