簡體   English   中英

循環的Python問題

[英]Python Issue with Loops

我設計了一個代碼,它將一個“數字”作為用戶的輸入。

該號碼將用於制作...

  1. numerator = (3*number) - 2
  2. 分母,這將是denominator = (4*n) + 1

該代碼還將允許用戶選擇他們希望該序列繼續執行多少次,之后將總計並顯示所有分數的總和。

這是我的代碼:

l=int(input("How many times do you repeat this sequence?: "))
n=int(input("Enter a base number: "))
n1=n
n2=n
total=0
s = ''
def calculate(l,n,n1,n2,total,s):
    for j in range(l):
        s += "{}/{} + ".format(3*n1-2, 4*n2+1)
        n1=n+n1
        n2=n+n2
        total=(((n*3)-2)/((4*n)+1))+total
    print(s)
    print(total)

calculate(l, n, n1, n2, total, s)

現在這是例如當我獲得此代碼的輸出時收到的兩個錯誤:

How many times do you repeat this sequence?: 2
Enter a base number: 1
1/5 + 4/9 + 
0.4

兩個問題:

  1. 由於4/9是最后一個分數,因此有一種方法可以消除最后的“ +”加號,因為它僅指向空格。
  2. 這兩個分數的總和顯示為0.4 ,這是不正確的,總和應為1/5 + 4/9 = 0.2 + 0.44 = 0.64 ,我不確定在上面輸入我的總和公式時會誤入歧途。

任何建議/意見將不勝感激!

刪除+一種便宜方法是簡單地切斷字符串中的最后一個字符: str[:-1]

到目前為止,問題2似乎要使用n1和n2而不是n。

截至目前,您獲得的是1/5(.2)+ 1/5(.2)= 0.4

  1. 與其連接這樣的字符串,不如收集一個列表中的所有部分,然后將加號上的各項連接起來:

     s = [] s.append('{}/{}'.format(1, 5)) s.append('{}/{}'.format(4, 9)) print(' + '.join(s)) # 1/5 + 4/9 
  2. 我不太確定自己在做什么,但是如果要獲取打印分數的總和,則應確保以相同的方式計算這些分數。 因此,與其在計算總和之前先遞增n1n2n2以與分數輸出相同的方式計算總和,然后再更改這些變量:

     s.append("{}/{}".format(3 * n1 - 2, 4 * n2 + 1)) total += (3 * n1 - 2) / (4 * n2 + 1) n1 += n n2 += n 

我不了解python,但是您可以執行以下操作來糾正邏輯錯誤。

  1. 要刪除最后的“ +”號,您可以執行以下操作,

如果j = l(表示最后一個分數),則不包含+,否則包含+

  1. 在計算總數時,您使用的是'n'值,該值始終保留為輸入值total =((((n * 3)-2)/((4 * n)+1))+ total在這里使用n1或n2 total =( ((N1 * 3)-2)/((4 * N 2)+1))+總

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM