跳过打印但继续执行程序

时间:2019-10-01 13:41:11

标签: python-2.7

所以我有一个作业:

您的朋友想尝试制作单词阶梯!这是单词列表,其中每个单词与之前的单词有一个字母的差异。这是一个示例:

猫 婴儿床 齿轮 日志 编写程序以帮助您的朋友。

它应该执行以下操作:

问你的朋友一个缩写词

反复要求他们提供索引和字母

您应该使用输入的字母替换其提供的索引处的字母,然后打印新单词

当用户输入-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()

该程序的示例应如下所示:

输入一个字:猫

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

输入字母:o

cot

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

输入字母:g

齿轮

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

无效的索引

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

无效的索引

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

输入字母:L

字符必须是小写字母!

输入字母:l

日志

输入索引(要退出则为-1):-1

1 个答案:

答案 0 :(得分:-1)

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

def get_index():
    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)

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)
    return



string = input("Enter a word: ")
get_index()

您应该使用 print(msg)代替python 3中的print msg

您错过了一个条件,请考虑这种情况,

运行程序

输入一个单词:c

输入0到0之间的数字(-1退出):1

错误

在以下行的get_index()检查中存在错误:

if index_in > len(string) or index_in < -1:

应该是:

if index_in > len(string) -1 or 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)

更改为:

  1. 您必须避免使用全局变量。

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

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