为什么这个变量没有在Python中定义?
Why is this variable not defined in Python?
我一直在尝试制作一个 python 莫尔斯电码 t运行slator 并且过于复杂了,我想继续我正在为莫尔斯电码走的路t运行slator 但是我运行 出问题了。
Traceback (most recent call last):
File "python", line 114, in <module>
NameError: name 'firstletter' is not defined
我不明白为什么这个变量没有被定义。这是代码
wordinput = input("What do you want to convert")
word = str(wordinput.upper)
if word[0] == 'A':
firstletter = ".-"
elif word[0] == "B":
firstletter = "-..."
elif word[0] == 'C':
firstletter = '-.-.'
elif word[0] == 'D':
firstletter = '-..'
elif word[0] == 'E':
firstletter = '.'
elif word[0] == 'F':
firstletter = '..-.'
elif word[0] == 'G':
firstletter = '--.'
elif word[0] == "H":
firstletter = '....'
elif word[0] == "I":
firstletter = '..'
elif word[0] == 'J':
firstletter = ".."
elif word[0] == 'K':
firstletter = '-.-'
elif word[0] == 'L':
firstletter = '.-..'
elif word[0] == 'M':
firstletter = '--'
elif word[0] == 'N':
firstletter = '-.'
elif word[0] == 'O':
firstletter = '---'
elif word[0] == 'P':
firstletter = '.--.'
elif word[0] == 'Q':
firstletter = '--.-'
elif word[0] == 'R':
firstletter = '.-.'
elif word[0] == 'S':
firstletter = '...'
elif word[0] == 'T':
firstletter = '-'
elif word[0] == 'U':
firstletter = '..-'
elif word[0] == 'V':
firstletter = '...-'
elif word[0] == 'W':
firstletter = '.--'
elif word[0] == 'X':
firstletter = '-..-'
elif word[0] == 'Y':
firstletter = '-.--'
elif word[0] == 'Z':
firstletter = '--..'
if word[1] == 'A':
secondletter = ".-"
elif word[1] == "B":
secondletter = "-..."
elif word[1] == 'C':
secondletter = '-.-.'
elif word[1] == 'D':
secondletter = '-..'
elif word[1] == 'E':
secondletter = '.'
elif word[1] == 'F':
secondletter = '..-.'
elif word[1] == 'G':
secondletter = '--.'
elif word[1] == "H":
secondletter = '....'
elif word[1] == "I":
secondletter = '..'
elif word[1] == 'J':
secondletter = ".."
elif word[1] == 'K':
secondletter = '-.-'
elif word[1] == 'L':
secondletter = '.-..'
elif word[1] == 'M':
secondletter = '--'
elif word[1] == 'N':
secondletter = '-.'
elif word[1] == 'O':
secondletter = '---'
elif word[1] == 'P':
secondletter = '.--.'
elif word[1] == 'Q':
secondletter = '--.-'
elif word[1] == 'R':
secondletter = '.-.'
elif word[1] == 'S':
secondletter = '...'
elif word[1] == 'T':
secondletter = '-'
elif word[1] == 'U':
secondletter = '..-'
elif word[1] == 'V':
secondletter = '...-'
elif word[1] == 'W':
secondletter = '.--'
elif word[1] == 'X':
secondletter = '-..-'
elif word[1] == 'Y':
secondletter = '-.--'
elif word[1] == 'Z':
secondletter = '--..'
print(firstletter + secondletter)
import os
os.system("pause")
您的问题出在作业上:
word = str(wordinput.upper)
您未能调用函数upper;相反,您将函数描述符分配给 word。当您将该描述符转换为字符串时,word 的值为
"<built-in method upper of str object at 0x7f377ea143e8>"
因此,无论输入如何,您都在尝试转换 '<' 和 'b';第一个在你的列表中没有覆盖,所以你的程序崩溃了。
更改调用例程的行:
word = str(wordinput.upper() )
进一步工作
The problem will still occur if the user enters any input other than pure letters. Add a line before your long **if** to give a default value, whatever you'd like to see printed if the input isn't a letter. I use a space here:
firstletter = ' '
改进
使用参考词典:
code = { 'A': ".-", 'B': "-...", etc.
}
添加循环遍历字符串并转换单个字母:
for c in word:
if c in code:
morse_char = code[c]
else:
morse_char = ' '
print(morse_char)
这能拯救你的手指肌肉吗?
我同意,
我有两个建议给你
第一的:
在 if 语句上方定义第一个字母和第二个字母
要么
第二
使用for循环进行如下转换
wordinput = input("")
word = str(wordinput.upper)
for letter in range(0,len(word)+1):
if word[letter] == A:
convertedword.append(.-)
...
...
...
我一直在尝试制作一个 python 莫尔斯电码 t运行slator 并且过于复杂了,我想继续我正在为莫尔斯电码走的路t运行slator 但是我运行 出问题了。
Traceback (most recent call last):
File "python", line 114, in <module>
NameError: name 'firstletter' is not defined
我不明白为什么这个变量没有被定义。这是代码
wordinput = input("What do you want to convert")
word = str(wordinput.upper)
if word[0] == 'A':
firstletter = ".-"
elif word[0] == "B":
firstletter = "-..."
elif word[0] == 'C':
firstletter = '-.-.'
elif word[0] == 'D':
firstletter = '-..'
elif word[0] == 'E':
firstletter = '.'
elif word[0] == 'F':
firstletter = '..-.'
elif word[0] == 'G':
firstletter = '--.'
elif word[0] == "H":
firstletter = '....'
elif word[0] == "I":
firstletter = '..'
elif word[0] == 'J':
firstletter = ".."
elif word[0] == 'K':
firstletter = '-.-'
elif word[0] == 'L':
firstletter = '.-..'
elif word[0] == 'M':
firstletter = '--'
elif word[0] == 'N':
firstletter = '-.'
elif word[0] == 'O':
firstletter = '---'
elif word[0] == 'P':
firstletter = '.--.'
elif word[0] == 'Q':
firstletter = '--.-'
elif word[0] == 'R':
firstletter = '.-.'
elif word[0] == 'S':
firstletter = '...'
elif word[0] == 'T':
firstletter = '-'
elif word[0] == 'U':
firstletter = '..-'
elif word[0] == 'V':
firstletter = '...-'
elif word[0] == 'W':
firstletter = '.--'
elif word[0] == 'X':
firstletter = '-..-'
elif word[0] == 'Y':
firstletter = '-.--'
elif word[0] == 'Z':
firstletter = '--..'
if word[1] == 'A':
secondletter = ".-"
elif word[1] == "B":
secondletter = "-..."
elif word[1] == 'C':
secondletter = '-.-.'
elif word[1] == 'D':
secondletter = '-..'
elif word[1] == 'E':
secondletter = '.'
elif word[1] == 'F':
secondletter = '..-.'
elif word[1] == 'G':
secondletter = '--.'
elif word[1] == "H":
secondletter = '....'
elif word[1] == "I":
secondletter = '..'
elif word[1] == 'J':
secondletter = ".."
elif word[1] == 'K':
secondletter = '-.-'
elif word[1] == 'L':
secondletter = '.-..'
elif word[1] == 'M':
secondletter = '--'
elif word[1] == 'N':
secondletter = '-.'
elif word[1] == 'O':
secondletter = '---'
elif word[1] == 'P':
secondletter = '.--.'
elif word[1] == 'Q':
secondletter = '--.-'
elif word[1] == 'R':
secondletter = '.-.'
elif word[1] == 'S':
secondletter = '...'
elif word[1] == 'T':
secondletter = '-'
elif word[1] == 'U':
secondletter = '..-'
elif word[1] == 'V':
secondletter = '...-'
elif word[1] == 'W':
secondletter = '.--'
elif word[1] == 'X':
secondletter = '-..-'
elif word[1] == 'Y':
secondletter = '-.--'
elif word[1] == 'Z':
secondletter = '--..'
print(firstletter + secondletter)
import os
os.system("pause")
您的问题出在作业上:
word = str(wordinput.upper)
您未能调用函数upper;相反,您将函数描述符分配给 word。当您将该描述符转换为字符串时,word 的值为
"<built-in method upper of str object at 0x7f377ea143e8>"
因此,无论输入如何,您都在尝试转换 '<' 和 'b';第一个在你的列表中没有覆盖,所以你的程序崩溃了。
更改调用例程的行:
word = str(wordinput.upper() )
进一步工作
The problem will still occur if the user enters any input other than pure letters. Add a line before your long **if** to give a default value, whatever you'd like to see printed if the input isn't a letter. I use a space here:
firstletter = ' '
改进
使用参考词典:
code = { 'A': ".-", 'B': "-...", etc.
}
添加循环遍历字符串并转换单个字母:
for c in word:
if c in code:
morse_char = code[c]
else:
morse_char = ' '
print(morse_char)
这能拯救你的手指肌肉吗?
我同意, 我有两个建议给你 第一的: 在 if 语句上方定义第一个字母和第二个字母 要么 第二
使用for循环进行如下转换
wordinput = input("")
word = str(wordinput.upper)
for letter in range(0,len(word)+1):
if word[letter] == A:
convertedword.append(.-)
...
...
...