Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 正在跳过打印,但正在继续程序_Python 2.7 - Fatal编程技术网

Python 2.7 正在跳过打印,但正在继续程序

Python 2.7 正在跳过打印,但正在继续程序,python-2.7,Python 2.7,所以我有一个任务: 你的朋友想做一个单词阶梯!这是一个单词列表,其中每个单词与前面的单词有一个字母的差异。下面是一个例子: 猫 婴儿床 齿轮 日志 写一个程序来帮助你的朋友 它应做到以下几点: 向你的朋友要首字母 反复向他们索要索引和一封信 你应该用他们输入的字母替换他们提供的索引中的字母,然后打印新单词 当用户为索引输入-1时,停止请求输入 以下是幕后应该发生的事情: 您应该有一个函数get_index,它会反复要求用户输入索引,直到用户输入的有效整数在初始字符串的可接受索引范围内。 (如果他

所以我有一个任务:

你的朋友想做一个单词阶梯!这是一个单词列表,其中每个单词与前面的单词有一个字母的差异。下面是一个例子:

猫 婴儿床 齿轮 日志 写一个程序来帮助你的朋友

它应做到以下几点:

向你的朋友要首字母

反复向他们索要索引和一封信

你应该用他们输入的字母替换他们提供的索引中的字母,然后打印新单词

当用户为索引输入-1时,停止请求输入

以下是幕后应该发生的事情:

您应该有一个函数get_index,它会反复要求用户输入索引,直到用户输入的有效整数在初始字符串的可接受索引范围内。 (如果他们输入的数字超出范围,您应回复无效索引。)

您应该有另一个函数get_letter,它会反复要求用户输入一个字母,直到用户只输入一个小写字母。(如果他们输入多个字符,则您的回复字符必须正好是一个字符!。如果他们输入大写字母,则您的回复字符必须是小写字母!)

您应该将当前单词的列表版本存储在变量中。这是您应该在每次用户交换新字母时更新的内容

每次必须打印当前单词时,打印变量中保留的列表的字符串版本

我尝试过重写、研究甚至调试模式

def get_index():
    while True:
        index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + ": "))
        if index_in > len(string) or index_in < -1:
            print "Invalid Index"
        elif index_in == -1:
            return False
        else:
            get_letter(index_in)

def get_letter(index):
    global string
    char_list = list(string)
    while True:
        letter = input("Enter a letter: ")
        if letter.isupper():
            print "Character must be lower case!"
        else:
            char_list[index] = letter
            string = ('').join(char_list)
            break
    print string


string = input("Enter a word: ")
get_index()
def get_index():
尽管如此:
索引_in=int(输入(“输入一个介于0和”+str(len(string)-1)+“:”)之间的数字)
如果index_in>len(字符串)或index_in<-1:
打印“无效索引”
elif索引_in==-1:
返回错误
其他:
获取字母(索引中)
def get_字母(索引):
全局字符串
字符列表=列表(字符串)
尽管如此:
字母=输入(“输入字母:”)
如果字母.isupper():
打印“字符必须小写!”
其他:
字符列表[索引]=字母
字符串=('').join(字符列表)
打破
打印字符串
字符串=输入(“输入一个单词:”)
获取索引()
该程序的示例如下所示:

输入一个单词:cat

输入索引(-1)退出:1

输入一个字母:o

婴儿床

输入索引(-1)退出:2

输入一个字母:g

齿轮

输入索引(-1)退出:5

无效索引

输入索引(-1以退出):-3

无效索引

输入索引(-1)以退出:0

输入一个字母:L

字符必须是小写字母

输入一个字母:l

日志

输入索引(-1退出):-1

您的代码看起来很完美! 只需要根据(python 3)进行一些更改

def get_index():
尽管如此:
index_in=int(输入(“输入一个介于0和“+str(len(string)-1)+”(-1以退出):”)之间的数字)
如果索引_in>len(字符串)-1或索引_in<-1:
打印(“无效索引”)
elif索引_in==-1:
返回错误
其他:
获取字母(索引中)
def get_字母(索引):
全局字符串
字符列表=列表(字符串)
尽管如此:
字母=输入(“输入字母:”)
如果字母.isupper():
打印(“字符必须小写!”)
其他:
字符列表[索引]=字母
字符串=('').join(字符列表)
打破
打印(字符串)
回来
字符串=输入(“输入一个单词:”)
获取索引()
在python 3中,应该使用print(msg)而不是print msg

<强>您错过了一个条件>,考虑这个场景,

运行程序

输入一个单词:c

输入一个介于0和0之间的数字(-1)退出:1

错误

第行的get_index()检查出错:

if index_in > len(string) or index_in < -1:
如果index_in>len(字符串)或index_in<-1:
应该是:

if index_in > len(string) -1 or index_in < -1:
如果index_in>len(字符串)-1或index_in<-1:
  • ======================================================================================================*
更新

根据评论中的讨论更新注释:

def get_index(string):
    try:
        while True:
            index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + " (-1 to quit): "))
            if index_in > len(string) -1 or index_in < -1:
                print("Invalid Index")
            elif index_in == -1:
                return False
            else:
                get_letter(index_in, string)
    except ValueError:
        print("Please Enter a number!")
        get_index(string)

def get_letter(index, string):
    char_list = list(string)
    while True:
        letter = input("Enter a letter: ")
        if letter.isupper():
            print("Character must be lower case!")
        else:
            char_list[index] = letter
            string = ('').join(char_list)
            break
    print(string)
    return


if __name__ == "__main__":
    string = input("Enter a word: ")
    get_index(string)
def get_索引(字符串):
尝试:
尽管如此:
index_in=int(输入(“输入一个介于0和“+str(len(string)-1)+”(-1以退出):”)之间的数字)
如果索引_in>len(字符串)-1或索引_in<-1:
打印(“无效索引”)
elif索引_in==-1:
返回错误
其他:
获取字母(索引,字符串)
除值错误外:
打印(“请输入一个数字!”)
获取索引(字符串)
def get_字母(索引,字符串):
字符列表=列表(字符串)
尽管如此:
字母=输入(“输入字母:”)
如果字母.isupper():
打印(“字符必须小写!”)
其他:
字符列表[索引]=字母
字符串=('').join(字符列表)
打破
打印(字符串)
回来
如果名称=“\uuuuu main\uuuuuuuu”:
字符串=输入(“输入一个单词:”)
获取索引(字符串)
更改为:

  • 必须避免使用全局变量

    相反,将特定变量作为参数传递给函数。 请注意,
    string
    如何在第一个答案中使用,以及如何在更新的答案中使用

  • 使用try-catch块捕获意外行为


  • 您面临的问题是什么?您好,欢迎来到SO。您可能需要阅读和编辑相应的问题。是的,同意。。这并不完美,但让我们感谢他的努力,并通过指导来激励他。“指导”意味着教授良好的实践(避免全局性,有正确的执行流程等)。是的,我同意你的建议——“应该避免全局性”。我会相应地更新答案。
    def get_index(string):
        try:
            while True:
                index_in = int(input("Enter a number between 0 and " + str(len(string) - 1) + " (-1 to quit): "))
                if index_in > len(string) -1 or index_in < -1:
                    print("Invalid Index")
                elif index_in == -1:
                    return False
                else:
                    get_letter(index_in, string)
        except ValueError:
            print("Please Enter a number!")
            get_index(string)
    
    def get_letter(index, string):
        char_list = list(string)
        while True:
            letter = input("Enter a letter: ")
            if letter.isupper():
                print("Character must be lower case!")
            else:
                char_list[index] = letter
                string = ('').join(char_list)
                break
        print(string)
        return
    
    
    if __name__ == "__main__":
        string = input("Enter a word: ")
        get_index(string)