[英]What's wrong with my python code?
我是一名初学者程序员,已经完成了zedshaw的Learn Python The Hard Way
课程,但是在练习26中,我们得到了一个有缺陷的代码,因此我们可以对其进行调试。 尽管代码是使用Python 2.x编写的,但我一直在用Python 3重新编写它们,因此我可以学习它。
它引发以下错误:
Traceback (most recent call last):
File "/home/omar/PycharmProjects/Python_The_Hardway/ex26_Quiz.py", line 76, in <module>
print("We'd have {} beans, {} jars, and {} crates".format(secret_formula(start_point)))
IndexError: tuple index out of range
这是我的代码: 链接
原始代码: 链接 (这是练习文件)
所以我的问题是:
谢谢
secret_formula
方法返回一个元组,因此您实际上是在使用单个参数-元组调用.format()
。 尝试在secret_formula()
前面secret_formula()
*
:
print("We'd have {} beans, {} jars, and {} crates".format(*secret_formula(start_point)))
它将把元组作为单独的参数,并应该对其进行修复。
为什么以退出代码1结尾?
因为出现错误。
为什么它不继续执行代码?
因为出现错误。
如何使用Python 3重写它?
原始的Python 2代码如下所示:
print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_pont
的Python 3版本是:
print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_pont)
我在要打印的内容周围加上了括号,因为print
语句现在是print()
函数。
现在,此代码当然被破坏了,因为它缺少start_point
括号,并且start_point
的拼写错误。 因此,实际上应该是:
print("We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point))
如果您要移至新的.format()
格式而不是旧的%
格式,则它将如下所示:
print("We'd have {:d} beans, {:d} jars, and {:d} crabapples.".format(*secret_formula(start_point))
但这不是必需的。
正确答案如下
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sorts the words."""
return sorted(words)
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
print "Let's practice everything."
print 'You\'d need to know \'bout escapes with \\ that do \n newlines and \t tabs.'
poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explantion
\n\t\twhere there is none.
"""
print "--------------"
print poem
print "--------------"
five = 10 - 2 + 3 - 5
print "This should be five: %s" % five
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates = secret_formula(start_point)
print "With a starting point of: %d" % start_point
print "We'd have %d jeans, %d jars, and %d crates." % (beans, jars, crates)
start_point = start_point / 10
print "We can also do that this way:"
print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point)
sentence = "All god\tthings come to those who weight."
#python_exercise.break_words(sentence)
#words = python_exercise.break_words(sentence)
#python_exercise.sort_words(words)
#sorted_words = python_exercise.sort_words(words)
#print_first_word(words)
#print_last_word(words)
#print_first_word(sorted_words)
#print_last_word(sorted_words)
#sorted_words = python_exercise.sort_sentence(sentence)
#print sorted_words
#print_first_and_last(sentence)
#print_first_a_last_sorted(sentence)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.