1

わかりましたので、スクリプトは現在機能しています。アドバイスをいただきありがとうございます。

こちらが最終的なスクリプトです

import smtplib 
import xbmc
import xbmcgui
import datetime

list = ("mary", "james", "tilly")

kb = xbmc.Keyboard('', 'Please type in your name to continue')
kb.doModal()
typedin = kb.getText()

if typedin.lower() in list:
    now = datetime.datetime.now()
    runtime = now.strftime("%Y-%m-%d %H:%M")

    content = xbmc.executebuiltin('kb.getText()')
    mailserver = smtplib.SMTP("smtp.mail.com",25)
    mailserver.ehlo()
    mailserver.starttls()
    mailserver.login('mail@somemail.com','somepwd')
    mailserver.sendmail('mail@somemail.com','mail@somemail.com',typedin + ' has run proggy ' + runtime)
    mailserver.close()
    xbmc.executebuiltin("Notification(An email has been sent, yada yada yada,()")
else:
    xbmc.executebuiltin("THE INPUTTED NAME, IS NOT VALID,()")
    xbmcgui.Dialog().ok(
    "Please try again - User name not correct",
    "The input yada yada",
    "yada yada",
    "yada yada")

ポート 25 で動作するライブ メールを使用していることをお知らせします。正常に動作しています。

4

3 に答える 3

2

おそらく、if ステートメントの行に沿った何かでしょうか? したがって、これらの単語の1つが与えられた場合にのみ、残りを実行し、そうでない場合は受け入れないでください.

list = ["simon", "tom", "sarah", "peter", "jane"]
word = input()
if word.lower() in list:
    print('Ok')
    #continue with rest of program
else:
     print('No, sorry')
于 2015-07-25T11:09:26.807 に答える
1

ユーザーからの入力を取得したい状況で行う最善の方法は、次のような raw_input ステートメントで while ループを実行することです。

word_list = ['simon', 'tom', 'sarah', 'peter', 'jane', 'sue']

def get_word():
    """returns the word that the user chooses"""
    print("Please choose a name from the following:")
    w_string = ""
    for w in word_list:
        w_string += w + ', '
    #print the word list without a comma at the end.
    print(w_string[:-1])

    while True:
        word = raw_input("\n> ") #use input("\n> ") for python3
        #If you wish to accept something like "SiMoN      " or "S Imon "
        #have the following line:
        word = word.lower().strip()
        if word in word_list:
            return word
        else:
            print("'%s' is not in the list of words. Please choose from the following:\n%s" % (word, w_string[:-1]))

word = get_word()
print(word)
于 2015-07-25T11:31:21.490 に答える
0

リストを文字列に変換せず、入力した名前がリストに含まれているかどうかを確認するのが最善の方法です..

import smtplib
import xbmc
import xbmcgui
import datetime

nameList = ["simon", "tom", "sarah", "peter", "jane"]
kb = raw_input('Please type in your name to continue:')

if kb in nameList:
    now = datetime.datetime.now()
    runtime = now.strftime("%Y-%m-%d %H:%M")

    content = xbmc.executebuiltin('kb.getText()')
    mailserver = smtplib.SMTP("smtp.mail.com",25)
    mailserver.ehlo()
    mailserver.starttls()
    mailserver.login('mail@somemail.com','somepwd')
    mailserver.sendmail('mail@somemail.com','mail@somemail.com',typedin + 'has run keymail ' + runtime)
    mailserver.close()
else:
    print ("The Name %s, was not in the list")%kb

list と str を変数名として使用しないでください。

于 2015-07-27T11:46:08.257 に答える