嗨,我正在学习python 我想知道这个脚本是更好还是更短
import sys
g = 1
def trying():
q = input('enter (y or yes) to retry')
if not q == 'y' or q == 'yes':
return 0
while g == True:
try:
t = int(input('please enter an integer:'))
r = t % 2
if r == 0:
print('your number is even')
if trying() == 0:
g = 0
else:
print('your number is odd')
if trying() == 0:
g = 0
except ValueError:
print('sorry you need to enter numbers only')
答案 0 :(得分:1)
如果你想要更短,这是我的版本..
while True:
try:
print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))
if input('Enter (y or yes) to retry: ') not in ['y', 'yes']: break
except ValueError:
print('Sorry you need to enter numbers only')
这里你想要的是一个do-while
循环。您可以通过向无限break
添加while-loop
语句来轻松实现它。有关此主题的更多信息,请访问here。
接下来,您必须添加try-except
语句,因为正在进行string
到integer
转换。
print('Your number is %s' % ('even' if int(input('Please enter an integer: ')) % 2 == 0 else 'odd'))
如果输入为偶数,则此语句将返回"Your number is even"
,否则它将返回"Your number is odd"
。此方法称为python ternary operator。
然后你可以用print-function
包装它来打印返回的字符串。看here。
input('Enter (y or yes) to retry: ') not in ['y', 'yes']
检查给定列表中的用户输入是否不存在。因此,如果用户输入不是"y"
或"yes"
,while-loop
将会中断。
答案 1 :(得分:0)
以下是如何使代码更简单的示例。请记住,代码应该很少重复。在大多数情况下,如果您有重复的代码行,可以简化它。
while True:
try:
t = int(input('please enter an integer:'))
if t % 2 == 0: print('your number is even')
else: print('your number is odd')
q = input('enter (y or yes) to retry')
if not (q == 'y' or q == 'yes'): break
except ValueError:
print('sorry you need to enter numbers only')
答案 2 :(得分:0)
def trying():
question = input('enter (y or yes) to retry')
if not (q == 'y' or q == 'yes'):
return 1
return 0
while True:
try:
num1 = int(input('please enter an integer:'))
num2 = t % 2
if not num2:
print('your number is even')
else:
print('your number is odd')
if trying():
break
except ValueError:
print('sorry you need to enter numbers only')
您没有在程序中导入sys ,因为您没有使用它而您不必这样做。您不必将任何内容存储在while循环的变量中。只需 分配True并突破 即可。如果您正在寻找任何True(包括一个空的列表,字符串和字典;以及不等于0的数字)。如果var: ,您应该 。如果变量的计算结果为True。将执行条件块。这是一个更清晰的语法,因此建议使用。使用单词命名变量,而不是用字母命名。这不会使您的代码更长,并且会使您的代码更好。
这就是我可以用你的代码做的全部。如果还有更多,请说出来。