如何只允许字母使用python语句

时间:2017-11-14 14:12:56

标签: python python-3.x python-2.7

我正在制作摩尔斯电码程序:

def main ():

    morse_code = {"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---","k":"-.-","l":".-..",
                  "m":"--","n":"-.","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"-","u":"..-","v":"...-","w":".--","x":"-..-","y":"-.--","z":"--.."}

    phrase = input("please enter your word or words: ")
    for key in phrase:
        print("your word or sentence translated to morse code is : ")
        print(morse_code[key], end = " ")
    if phrase == int or float:
        print("try the input")

    retry()
def retry ():
    main()
retry()
main()

如果有人输入号码,如何打印错误?

6 个答案:

答案 0 :(得分:1)

这就是你所需要的: -

morse_code = {"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---","k":"-.-","l":".-..",
              "m":"--","n":"-.","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"-","u":"..-","v":"...-","w":".--","x":"-..-","y":"-.--","z":"--.."}

phrase = input("please enter your word or words: ")

if any(char.isdigit() for char in phrase):
    print("try the input")
else:
    print("your word or sentence translated to morse code is : ")
    code = ' '.join(morse_code[key] for key in phrase)
    print(code)

答案 1 :(得分:0)

您可以使用str.isdigit

for key in phrase:
    if not key.isdigit():
        print("your word or sentence translated to morse code is : ")
        print(morse_code[key], end = " ")

答案 2 :(得分:0)

您可以执行以下操作检查输入是否在wc -la之间:

z

try: index = ord(key.lower()) if index >= 97 and index <= 122: # Do your thing except TypeError: # Wrong input 不应该发生,将错误处理的代码包装起来只是一种很好的做法。

或者,您可以这样做:

TypeError

答案 3 :(得分:0)

你遇到的第一个问题是if语句是A:打印出Morsecode版本的字母后,B:它完全在for循环之外。

你可以通过在打印之前将它放在for循环中来解决这个问题,如下所示:

phrase = input("please enter your word or words: ")
print("your word or sentence translated to morse code is : ")
for key in phrase:
if phrase == int or float:
    print("try the input")
else:

    print(morse_code[key], end = " ")

但是上面的代码仍然不起作用,因为您检查当前打印的字母是int还是float的方式不是你的方法。

最简单的方法是将if语句的编码更改为if key.isdigit():

这将为您留下最后一段代码:

phrase = input("please enter your word or words: ")
print("your word or sentence translated to morse code is : ")
for key in phrase:
    if key.isdigit:
        print("try the input")
    else:

        print(morse_code[key], end = " ")

现在可行,但我可以说我输入abc123。我得到的输出是.- -... -.-. try the input try the input

因为代码正在运行forloop,无论输入中是否有数字。为了防止这种情况,您应该在for循环打印出莫尔斯电码之前检查输入数字。

phrase = input("please enter your word or words: ")

while not phrase.isalpha():
    phrase = input("invalid input: ")
print("your word or sentence translated to morse code is : ")
for key in phrase:

    print(morse_code[key], end = " ")

如果您需要任何帮助,请与我们联系!

答案 4 :(得分:0)

  

使用isdigit()将解决您的问题也使用break来接收新输入

morse_code = {"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---","k":"-.-","l":".-..",
              "m":"--","n":"-.","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"-","u":"..-","v":"...-","w":".--","x":"-..-","y":"-.--","z":"--.."}
Morse_Parse=[]
phrase = input("please enter your word or words: ")
print("your word or sentence translated to morse code is : ")
for key in  range(0,len( phrase)):
    if phrase[key].isdigit():
        print("you inderted an digit , Try another input")

        break 
    else:
        Morse_Parse.append(morse_code[phrase[key]]+" ")


print("Morse for your input is "Morse_Parse) 
  

使用flag会改善打印任务

morse_code = {"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---","k":"-.-","l":".-..",
              "m":"--","n":"-.","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"-","u":"..-","v":"...-","w":".--","x":"-..-","y":"-.--","z":"--.."}
Morse_Parse=[]
phrase = input("please enter your word or words: ")
print("your word or sentence translated to morse code is : ")
flag=1
for key in  range(0,len( phrase)):
    if phrase[key].isdigit():
        print("you inderted an digit , Try another input")
        flag=0
        break 
    else:
        Morse_Parse.append(morse_code[phrase[key]]+" ")

if flag==1:

        print("Morse for your input is "Morse_Parse)  

答案 5 :(得分:0)

  

如何只允许字母

     

如果有人输入号码,如何打印错误?

通过检查每个角色的.isdigit可以轻松覆盖第二种情况。但我将介绍第一个案例。

首先定义一串有效字符。假设您的有效字符集是小写的a-z,这与string.ascii_lowercase

相同
import string
valid_characters = string.ascii_lowercase  # a-z

def char_valid(c):
    '''Check if a character is valid, returns True/False'''
    return c in valid_characters

def phrase_valid(phrase):
    '''Check if the phrase is valid, returns True/False'''
    return all(char_valid(char) for char in phrase)


while True:
    user_phrase = input('Enter some characters')
    if phrase_valid(user_phrase):
        # If the phrase is valid, end the loop
        break
    else:
        print('That was not a valid phrase')
        # the loop continues and will ask for input again

此模式适用于您想要继续请求输入的任何时间,直到它有效。