Domanda Programmino simpatico

Stato
Discussione chiusa ad ulteriori risposte.

Arcacos

Utente Electrum
17 Aprile 2014
194
22
35
109
Ultima modifica:
Salve inforge, edito un programma simpatico e facile da realizzare
Vi chiederà chiedimi qualcosa, in base alla risposta che darete risponderà.
Se invece non conosce la domanda vi chiederà una risposta e lo memorizzerà ( non nel programma).
In caso in cui si ripete la stessa domanda, il programma sarà in grado di rispondere.
Chiuso il programma,i valori memorizzati andranno persi, magari nella prossima guida inserisco come registrarli nel programma\file.
###################Edit By Arcacos #
##################
a={"Ciao":"Hola","quanti anni hai":"2anni","dove abiti":"a roma"}#ecc
b="inizio"
while b!="":
b=raw_input("chiedimi qualcosa ...")
if a.has_key(b):
print a
else:
c=raw_input("Non capisco.Cosa devo rispondere alla domanda..."+b)
a=c



Il programma è perfettamente funzionante ! e potete modificarlo con altre domande e risposte :)

Saluti
Arcacos

----------
Up
----------
ho notato che creando la discussione i caratteri sono identati all'inizio, consiglio di spostarli nella maniera giusta, in caso contrario darà sempre errore di sintassi !
 
  • Mi piace
Reazioni: Simur Birkoff
Akinator versione mini! A me personalmente la tua idea piace! Non ho testato il programma e non scrivo in python (scrivo in c++) ma posso comunque consigliarti di sincronizzare un sql per salvare i dati anche dopo il runtime! Figo! Ti direi "passami l'eseguibile" ma parlaimo di Pithon no? :)
Miglioralo! Non mollarlo!
 
Esatto :D era quella l'idea ! Personalmente non ho ''incorporato" volutamente le funzioni che permettono la memorizzazione delle risposte. Posso tranquillamente riportare un download che permette di avviare il programma in python anche se l'utente non ha python , il tutto è possibile tramite il cmd :D


-----
up
----
Grazie ad entrambi , lo migliorerò :D
 
Salve inforge, edito un programma simpatico e facile da realizzare
Vi chiederà chiedimi qualcosa, in base alla risposta che darete risponderà.
Se invece non conosce la domanda vi chiederà una risposta e lo memorizzerà ( non nel programma).
In caso in cui si ripete la stessa domanda, il programma sarà in grado di rispondere.
Chiuso il programma,i valori memorizzati andranno persi, magari nella prossima guida inserisco come registrarli nel programma\file.



Il programma è perfettamente funzionante ! e potete modificarlo con altre domande e risposte :)

Saluti
Arcacos

----------
Up
----------
ho notato che creando la discussione i caratteri sono identati all'inizio, consiglio di spostarli nella maniera giusta, in caso contrario darà sempre errore di sintassi !

L'ho provato ora!
Senza database è dura eh! :)
Quando lo connetti ad un sql spero che lo rilascerai! :p

Per chi volesse averlo indentato e funzionante

Codice:
a={"Ciao":"Hola","quanti anni hai":"2anni","dove abiti":"a roma"}#ecc
b="inizio"
while b!="":
  b=raw_input("chiedimi qualcosa ...")
  if a.has_key(b):
   print a[b]
  else:
   c=raw_input("Non capisco.Cosa devo rispondere alla domanda..."+b)
  a[b]=c
 
  • Mi piace
Reazioni: Arcacos
Bello! Come ti hanno gia detto, usa SQL,in alternativa potresti salvare il tutto in un file ma non so quanto possa funzionare.

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Bello! Come ti hanno gia detto, usa SQL,in alternativa potresti salvare il tutto in un file ma non so quanto possa funzionare.

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk

Ah ecco, anche questo si può fare... credo però che sia decisamente più scomodo riacchiappare delle stringhe su un file rispetto a delle stringhe su una bella tabella di Mysql o sqlite.
[MENTION=208820]Arcacos[/MENTION]
Lavori anche in c/c++?
 
Si [MENTION=206565]Simur Birkoff[/MENTION], usare Sqlite o Mysql sarebbe meglio...

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Akinator versione mini! A me personalmente la tua idea piace! Non ho testato il programma e non scrivo in python (scrivo in c++) ma posso comunque consigliarti di sincronizzare un sql per salvare i dati anche dopo il runtime! Figo! Ti direi "passami l'eseguibile" ma parlaimo di Pithon no? :)
Miglioralo! Non mollarlo!

Mi hai chiamato?
 
L'ho provato ora!
Senza database è dura eh! :)
Quando lo connetti ad un sql spero che lo rilascerai! :p

Per chi volesse averlo indentato e funzionante

Codice:
a={"Ciao":"Hola","quanti anni hai":"2anni","dove abiti":"a roma"}#ecc
b="inizio"
while b!="":
  b=raw_input("chiedimi qualcosa ...")
  if a.has_key(b):
   print a[b]
  else:
   c=raw_input("Non capisco.Cosa devo rispondere alla domanda..."+b)
  a[b]=c

Mi da errore di sintassi con il tuo codice Simur Birkoff
SyntaxError: multiple statements found while compiling a single statement

P.S: Uso python 3.3
 
Sto dal cellulare e i rientri non li vedo

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Dal cellulare non me lo da indentato non so da PC

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Ultima modifica:
TheSeeker si è identato, l'ha identato Simur Birkoff
 
comunque per il discorso dei file e del salvare le domande, ho fatto una stupidissima versione in C++.

L'ho chiamato Akos :\

Le risposte non presenti vengono salvate e quindi ripescabili all'avvio successivo! Dovete solo avere nella cartella da cui aprite il programma questi due file:

https://mega.co.nz/#!NF8Q0R4S!AB_KEPv6-nPmrq6HcrLbiCPSOk4vOfc86fZsy5FPItY

Ecco il sorgentino!
Fatto in fretta, di notte... perdonate le imprecisioni :asd:

Codice:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

#define MISS_MSG "database error: file not found"
#define QST_MSG "Ciao, sono akos!\nFammi pure una domanda\n>> "
#define GEN_ERR "database error: different file's size"
#define ADD_MSG "non ho la risposta, suggeriscimela\n>> "
#define EXT_MSG "continuare? (s, n): "

void _trim(std::string &str, bool trim_left, bool trim_right);
void rtrim(std::string &str);

int main()
{
    using std::ofstream; using std::ios; using std::ifstream; using std::fstream; using std::vector;
    
    vector<std::string> risp; 
    vector<std::string> quest;
    std::string tmp;
    fstream db1("quest.txt"), db2("risp.txt");
    
    if (!db1 || !db2) { std::cout << MISS_MSG << std::endl; return 0; }
   
    while (std::getline(db1, tmp)) {
      rtrim(tmp);
      quest.push_back(tmp);
    }
    
    while (std::getline(db2, tmp)) {
      rtrim(tmp);
      risp.push_back(tmp);
    }
    
    if (quest.size() != risp.size()) { std::cout << GEN_ERR << std::endl; return 0;}
    
    std::cout << QST_MSG; std::getline(std::cin, tmp);
    rtrim(tmp);
    
    for (int i = 0; i < quest.size(); i++)
    { 
      if (tmp == quest[i]) {
          std::cout << risp[i] << std::endl; 
          goto ext;
      }
    }
    
    quest.push_back(tmp);
    std::cout << ADD_MSG; std::getline(std::cin, tmp);
    risp.push_back(tmp);
    
    ext:
    
    ofstream d1("quest.txt"), d2("risp.txt");
    
    for (int  i = 0; i < quest.size(); i++)
        d1 << quest[i] << std::endl;
    for (int  i = 0; i < risp.size(); i++)
        d2 << risp[i] << std::endl;
    
    quest.resize(0);
    risp.resize(0);
    
   
    db1.close(); 
    db2.close();
    
    return 0;
  
}

void _trim(std::string &str, bool trim_left, bool trim_right) 
{
    std::string::size_type begin=0;
    std::string::size_type end=str.size()-1;
  
    while(trim_left && begin<=end && (str[begin]<=0x20 || str[begin]==0x7f))
        ++begin;
  
    while(trim_right && end>begin && (str[end]<=0x20 || str[end]==0x7f))
        --end;
    
    while(trim_right && end>begin && (str[end]<=0x0d || str[end]==0x7f))
        --end;
  
    str=str.substr(begin, end-begin+1);
}
void rtrim(std::string &str) 
{
    _trim(str, 1, 1);
}

Visto che nessuno uppa, l'ho fatto io! :\

- - - Updated - - -
[MENTION=208820]Arcacos[/MENTION]

- - - Updated - - -
[MENTION=211157]ItalianStark[/MENTION] devi interpretarlo con una versione precedente di python... non so perchè o per come! Dovresti chiedere a chi scrive in Py ma con la versione 2.7 funziona
 
  • Mi piace
Reazioni: Arcacos
Stato
Discussione chiusa ad ulteriori risposte.