Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 缩短这个特定的代码_Python_Code Complexity - Fatal编程技术网

Python 缩短这个特定的代码

Python 缩短这个特定的代码,python,code-complexity,Python,Code Complexity,我已经学习Python两个星期了,复活节刚过,我将进行一次受控评估,该评估将计入我的GCSE成绩,我还将根据类似代码长度的标准进行评分 问题是:编写一个Python程序,要求用户输入一个单词,然后计算输入单词的元音值 我想知道的是: 有没有办法缩短这个代码 而且: 如何在不打印“word”变量的情况下执行程序 上面给出了我在代码中使用的规范(在控制流部分) 您可以使用sum和dict,将元音存储为键,将相关值存储为值: word = input("Input a word: ") values

我已经学习Python两个星期了,复活节刚过,我将进行一次受控评估,该评估将计入我的GCSE成绩,我还将根据类似代码长度的标准进行评分

问题是:编写一个Python程序,要求用户输入一个单词,然后计算输入单词的元音值

我想知道的是:

有没有办法缩短这个代码

而且:

如何在不打印“word”变量的情况下执行程序

上面给出了我在代码中使用的规范(在控制流部分)


您可以使用
sum
dict
,将元音存储为键,将相关值存储为值:

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
print(sum(values.get(ch,0) for ch in word))
values.get(ch,0)
将返回
0
作为默认值,如果单词中每个字符的
ch
不是元音,因此不在我们的dict中

sum(values.get(ch,0)for ch in word)
是为生成器对象调用next()方法时,对变量进行惰性计算的方法

关于您自己的代码,您应该使用if/elif。一个字符只能有一个值,如果总是求值,但只有当前面的语句求值为False时,才会求值elif:

score = 0
 # already a str in python3 use raw_input in python2
word = input("Input a word: ")

for letter in word:
        if letter == "a":
            score += 5 # augmented assignment same as score = score + 5
        elif letter == "e":
            score += 4
        elif letter == "i":
            score += 3
        elif letter == "o":
            score += 2
        elif letter == "u":
            score += 1

您可以使用
sum
dict
,将元音存储为键,将相关值存储为值:

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
print(sum(values.get(ch,0) for ch in word))
values.get(ch,0)
将返回
0
作为默认值,如果单词中每个字符的
ch
不是元音,因此不在我们的dict中

sum(values.get(ch,0)for ch in word)
是为生成器对象调用next()方法时,对变量进行惰性计算的方法

关于您自己的代码,您应该使用if/elif。一个字符只能有一个值,如果总是求值,但只有当前面的语句求值为False时,才会求值elif:

score = 0
 # already a str in python3 use raw_input in python2
word = input("Input a word: ")

for letter in word:
        if letter == "a":
            score += 5 # augmented assignment same as score = score + 5
        elif letter == "e":
            score += 4
        elif letter == "i":
            score += 3
        elif letter == "o":
            score += 2
        elif letter == "u":
            score += 1

以下是工作代码:

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
score = sum(values[let] for let in word if let in values)

print("\nThe score for your word is: " + score)

以下是工作代码:

word = input("Input a word: ")

values = {"a":5,"e":4,"i":3,"o":2,"u":1}
score = sum(values[let] for let in word if let in values)

print("\nThe score for your word is: " + score)

请注意,Python有一个
+=
操作符。您可以将
score=score+2
写成
score+=2
。请注意,Python有一个
+=
操作符。你可以把
score=score+2
写成
score+=2
。谢谢你,但是我想我必须使用第二个版本,因为我的老师不希望我知道字典(尽管我已经知道了,因为我做了一些早期的研究),如果我打算使用它,她可能会说我必须重做,因为它“太高级了”,我从互联网上“复制”了它,这“不利于我的受控评估”,因为我无法理解它。没问题,不管怎样,理解if和elif之间的区别是好的,有时你想检查下一个语句,反之亦然,所以理解两者之间的区别很重要。谢谢,伙计,但我想我必须使用第二个版本,因为我的老师不希望我知道字典(尽管我已经知道了,因为我做了一些早期的研究)如果我打算使用它,她可能会说我必须重做,因为它“太高级了”,我从互联网上“复制”了它,这“不利于我的受控评估”,因为我无法理解它。没问题,不管怎样,理解if和elif的区别是件好事,有时您希望检查下一个语句,反之亦然,因此了解两者之间的差异非常重要。