所以,这可能是一个简单的问题,但我在任何地方都找不到答案。
举个例子,我有一个简单的程序,我想将 a 除以 b,如下所示:
def main():
a = 12345678900000000
b = 1.25
answer = (a / b)
print(answer)
main()
Run Code Online (Sandbox Code Playgroud)
这个特定示例的结果是 9.87654312e+15。如何让Python忽略简化我的数字并只给我整个数字?
预先感谢,抱歉,如果它真的很基本,我不会问我是否可以通过谷歌找到它。
我一直在使用C#编写计算器,遇到了一个我无法解决的问题.
目前,当用户输入除以零的数字时,答案默认为0.00,而应该是无效的.
我不知道为什么,经过一段时间的修修,我无法弄明白.这是相关代码:
private void button1_Click(object sender, EventArgs e)
{
double number1, number2, ans; // Identify variables as double to account for decimals.
number1 = Convert.ToDouble(num1.Text); // Convert the contents of the textBox into a double.
number2 = Convert.ToDouble(num2.Text); //
ans = 0.0;
string symbol = modifier1.Text;
if (symbol == "/" && number2 == 0) // This part seems to be broken.
answer.Text = "Invalid input.";
else
if (symbol == "+")
ans = number1 + number2;
else if (symbol == …Run Code Online (Sandbox Code Playgroud) 我一直在尝试创建一个函数,使用正确的单词列出日期之间的时间,特别是我希望它能够解释复数。我知道我可以通过 if 语句运行所有数字来做到这一点,但我真的希望找到一种更有效的方法来实现我的目标。
IE:我希望221 days, 1:17:06.996068从datetime返回,因为221 days, 1 hour, 17 minutes, and 6.99 seconds.它很重要,它在适当的时候表示日/小时/分钟/秒或天/小时/分钟/秒。
我的代码示例片段:
from datetime import datetime as dt
now = dt.now(tz=None) # Current local computer time
test = dt(2018,3,25,23,0,0) # March 25th, 2018 23h 0m 0s
countdown = test - now
print(countdown) # 2 days, 1:45:00.685739
# Desired outcome: 2 days, 1 hour, 45 minutes, 0.68 seconds.
Run Code Online (Sandbox Code Playgroud)
有没有一种函数可以有效地在单数或复数时间之间进行标记?
我的程序中有一行代码可以检查一个数字是否可被几个数字整除.
然而,我目前的方式是非常低效和丑陋.
它目前看起来像:
if(x % 1 == 0 and x % 2 == 0 and x % 3 == 0)等等其他几个数字.我希望有人可以教我如何取出长and链并帮助我用更有意义的东西替换它,所以它看起来像:
if(x % a[1,2,3] == 0)
这有可能吗?如果可以,有人可以帮助我吗?
编辑:x%1 == 0,x%2 == 0等.不是完整的等式.我检查远远超过%1,2和3.我正在寻找一个可以说... 1到15的解决方案.这就是为什么我不使用x%6.
这可能是一个愚蠢的问题,我相信我很有可能采取完全错误的方法来解决我的问题,所以如果有人知道更好的方法,请随时纠正我/指出我正确的方向.
我正在尝试用Python制作一个基本的测验程序以获得乐趣,我似乎无法找到一个好方法来实际上用他们的答案调用问题并存储正确答案应该是什么.理想情况下,我也希望在问题中改变答案,例如#1的答案也不总是"A",但目前这个步骤太过分了.
无论如何,我认为字典可以工作.我会做这样的事情:
test = {
'1': "What is 1+1?\nA) 2\nB) 11\nC) 1\nD) None of the above.\n\n", #A
'2': "What is 2+2?\nA) 2\nB) 4\nC) 1\nD) None of the above.\n\n", #B
'3': "What is 3+3?\nA) 2\nB) 11\nC) 6\nD) None of the above.\n\n", #C
'4': "What is 4+4?\nA) 2\nB) 11\nC) 1\nD) None of the above.\n\n", #D
'5': "What is 5+5?\nA) 2\nB) 11\nC) 10\nD) None of the above.\n\n", #C
'6': "What is 6+6?\nA) 2\nB) 12\nC) 1\nD) None of the above.\n\n", #B
}
answer …Run Code Online (Sandbox Code Playgroud) 我一直试图编写约瑟夫斯问题,由于某种原因它只在某些情况下工作,我不确定为什么.TL; DR如何工作是这样的:
你有一群X人.每个第N个人都将被杀死,直到只剩下一个最后一个人.所以说例如你有10个[AKA:X]人,你决定杀死每个第3 [AKA:Nth]人,它看起来像这样:
第一轮:1,2,(3个模具),4,5,(6个模具),7,8,(9个模具),10
第二轮:1,(2因为是连续的圆而死),3,5,(7个死),8,10
第三轮:(1),4,5,(8),10
第四轮:4,(5),10
第五轮:4,(10)
而我们最终只剩下4号人作为唯一的幸存者.
我的程序完全没问题.但是,当我输入X as 55和N时,17我得到的人的错误答案27应该是人40.任何人都可以告诉我我的循环搞砸了吗?
源代码:
def solveJosephus(specifics):
people = [int(x) for x in range(1,int(specifics[0])+1)]
killPosition = int(specifics[1])
positionCounter = 0
sorted = False
while not sorted:
if len(people) == 1:
print(people[0]) # Pyschologically scarred Winner!
sorted = True
for person in people:
positionCounter += 1
if positionCounter == killPosition:
print(person)
people.remove(person)
positionCounter = 1
solveJosephus(raw_input().split())
Run Code Online (Sandbox Code Playgroud) 所以我最近一直在研究Euler项目的问题,而且一切都相当顺利.直到我击中#25:
"Fibonacci序列中包含1000个数字的第一项是什么?"
我制作的节目(以下):
def main():
x = 0
y = 1
z = 0
while len(str(z)) != 1000:
z = x + y
x = y
y = z
print z
main()
Run Code Online (Sandbox Code Playgroud)
应该给我正确答案,但我只能得到:"
1070066266382758936764980584457396885083683896632151665013235203375314520604694040621889147582489792657804694888177591957484336466672569959512996030461262748092482186144069433051234774442750273781753087579391666192149259186759553966422837148943113074699503439547001985432609723067290192870526447243726117715821825548491120525013201478612965931381792235559657452039506137551467837543229119602129934048260706175397706847068202895486902666185435124521900369480641357447470911707619766945691070098024393439617474103736912503231365532164773697023167755051595173518460579954919410967778373229665796581646513903488154256310184224190259846088000110186255550245493937113651657039447629584714548523425950428582425306083544435428212611008992863795048006894330309773217834864543113205765659868456288616808718693835297350643986297640660000723562917905207051164077614812491885830945940566688339109350944456576357666151619317753792891661581327159616877487983821820492520348473874384736771934512787029218636250627816
"
这是错误的答案.所以我正在使用斐波那契序列来生成错误的1000位数字,如何...任何人都可以帮我修复它吗?我几乎没有想法.
我正在研究一个练习题,用户将库存保存为字典,例如:
inventory = {
'rope': 1,
'gold coin': 42,
}
Run Code Online (Sandbox Code Playgroud)
然后,我需要通过稍后向库存添加"抢劫"来修改它.
例如:
loot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
Run Code Online (Sandbox Code Playgroud)
我结束了使用很容易做这个Counter范围内collections,像这样:
def add_to_inventory(original_inventory, added_items):
new_inventory = Counter(original_inventory) + Counter(added_items)
return(new_inventory)
inventory = add_to_inventory(inventory, loot)
Run Code Online (Sandbox Code Playgroud)
结果是:
45: gold coin
1: rope
1: ruby
1: dagger
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我想知道.. 有没有合理的方法来解决这个问题,而无需导入库?
今天我浏览了编程挑战网站,并看到了一个非常容易的挑战,声明用户应尽量使用尽可能少的字符来解决它.
挑战在于将两个阵列相互合并.例如:
['A','B','C']并且['D','E','F']会变成['A', 'B', 'C', 'D', 'E', 'F']
挑战表明用户需要使用此开头代码:
def mergeArrays(a, b):
Run Code Online (Sandbox Code Playgroud)
这是20个字符长.当然,我认为回答答案的最简单和最简单的方法是直接使用:return a+b
导致完整的代码:
def mergeArrays(a, b):
return a+b
Run Code Online (Sandbox Code Playgroud)
共29个字符.但是,我注意到很多人用较少的字符来解决它.有些甚至只有24个字符.比所需的起始代码长4个字符.如何以比返回更少的字符返回值?谁能解释一下有人缩短了这个答案?
python ×8
dictionary ×2
python-3.x ×2
c# ×1
date ×1
datetime ×1
fibonacci ×1
loops ×1
numbers ×1
python-2.7 ×1
python-3.4 ×1